diff --git a/frontend/composables/api/account/useCreateOrUpdateAddress.ts b/frontend/composables/api/account/useCreateOrUpdateAddress.ts index f5a069c..a2f978b 100644 --- a/frontend/composables/api/account/useCreateOrUpdateAddress.ts +++ b/frontend/composables/api/account/useCreateOrUpdateAddress.ts @@ -5,17 +5,17 @@ import { API_ENDPOINTS } from "~/constants"; // types -export type CreateOrUpdateAddressRequest = Omit; +export type CreateOrUpdateAddressResponse = Omit; const useCreateOrUpdateAddress = (update: ComputedRef) => { // state const { $axios: axios } = useNuxtApp(); - // method + // methods const handleCreateOrUpdateAddress = async ( - addressData: CreateOrUpdateAddressRequest + addressData: CreateOrUpdateAddressResponse ) => { const { data } = await axios[update.value ? "put" : "post"]( update.value @@ -30,7 +30,7 @@ const useCreateOrUpdateAddress = (update: ComputedRef) => { }; return useMutation({ - mutationFn: (addressData: CreateOrUpdateAddressRequest) => + mutationFn: (addressData: CreateOrUpdateAddressResponse) => handleCreateOrUpdateAddress(addressData), }); }; diff --git a/frontend/composables/api/account/useDeleteAddress.ts b/frontend/composables/api/account/useDeleteAddress.ts index f894016..ada4989 100644 --- a/frontend/composables/api/account/useDeleteAddress.ts +++ b/frontend/composables/api/account/useDeleteAddress.ts @@ -14,7 +14,7 @@ const useDeleteAddress = () => { const { $axios: axios } = useNuxtApp(); - // method + // methods const handleDeleteAddress = async (id: number) => { const { data } = await axios.delete( diff --git a/frontend/composables/api/account/useUpdateAccount.ts b/frontend/composables/api/account/useUpdateAccount.ts index 521d56a..8a4882e 100644 --- a/frontend/composables/api/account/useUpdateAccount.ts +++ b/frontend/composables/api/account/useUpdateAccount.ts @@ -20,7 +20,7 @@ const useUpdateAccount = () => { const { $axios: axios } = useNuxtApp(); - // method + // methods const handleUpdateAccount = async (params: UpdateAccountRequest) => { const { data } = await axios.patch( diff --git a/frontend/composables/api/auth/useAuth.ts b/frontend/composables/api/auth/useAuth.ts index e74d967..d65e25d 100644 --- a/frontend/composables/api/auth/useAuth.ts +++ b/frontend/composables/api/auth/useAuth.ts @@ -1,11 +1,10 @@ export const useAuth = () => { - // state const token = useCookie("token"); const refreshToken = useCookie("refresh-token"); - // method + // methods const updateToken = (newToken: string) => { token.value = newToken; @@ -15,7 +14,7 @@ export const useAuth = () => { refreshToken.value = newToken; }; - const logout = (reload ?: boolean) => { + const logout = (reload?: boolean) => { token.value = undefined; refreshToken.value = undefined; if (reload) window.location.reload(); @@ -25,6 +24,12 @@ export const useAuth = () => { const isLoggedIn = computed(() => !!token.value); - return { token, refreshToken, updateRefreshToken, updateToken, logout, isLoggedIn }; - -}; \ No newline at end of file + return { + token, + refreshToken, + updateRefreshToken, + updateToken, + logout, + isLoggedIn, + }; +}; diff --git a/frontend/composables/api/auth/useRefreshAuth.ts b/frontend/composables/api/auth/useRefreshAuth.ts index 6540427..520c175 100644 --- a/frontend/composables/api/auth/useRefreshAuth.ts +++ b/frontend/composables/api/auth/useRefreshAuth.ts @@ -6,17 +6,15 @@ import { API_ENDPOINTS } from "~/constants"; // types export type RefreshAuthRequest = { - refresh: string, + refresh: string; }; export type RefreshAuthResponse = { - access: string, - refresh: string, + access: string; + refresh: string; }; - const useRefreshAuth = () => { - // state const { $axios: axios } = useNuxtApp(); @@ -24,12 +22,16 @@ const useRefreshAuth = () => { // methods const handleRefreshAuth = async (variables: RefreshAuthRequest) => { - const { data } = await axios.post(`${API_ENDPOINTS.auth.refresh}/`, variables); + const { data } = await axios.post( + `${API_ENDPOINTS.auth.refresh}`, + variables + ); return data; }; return useMutation({ - mutationFn: (variables: RefreshAuthRequest) => handleRefreshAuth(variables) + mutationFn: (variables: RefreshAuthRequest) => + handleRefreshAuth(variables), }); }; diff --git a/frontend/composables/api/chat/useCreateChatMessage.ts b/frontend/composables/api/chat/useCreateChatMessage.ts index 87f5da6..700b8b4 100644 --- a/frontend/composables/api/chat/useCreateChatMessage.ts +++ b/frontend/composables/api/chat/useCreateChatMessage.ts @@ -11,64 +11,37 @@ export type CreateChatMessageRequest = { new_message: string; }; -export type CreateChatMessageResponse = Chat[] +export type CreateChatMessageResponse = Chat[]; const useCreateChatMessage = (queryClient: QueryClient) => { - // state const { $axios: axios } = useNuxtApp(); - // method + // methods - const handleCreateChatMessage = async (variables: CreateChatMessageRequest) => { - - const { data } = await axios.post(`${API_ENDPOINTS.chat.new_message}/${variables.productId}`, variables); + const handleCreateChatMessage = async ( + variables: CreateChatMessageRequest + ) => { + const { data } = await axios.post( + `${API_ENDPOINTS.chat.new_message}/${variables.productId}`, + variables + ); return data; }; return useMutation({ mutationKey: [MUTATION_KEYS.create_chat], - mutationFn: (variables: CreateChatMessageRequest) => handleCreateChatMessage(variables), + mutationFn: (variables: CreateChatMessageRequest) => + handleCreateChatMessage(variables), onMutate: (newMessage) => { - const prevData = queryClient.getQueriesData({ queryKey: [QUERY_KEYS.chat] }); - - queryClient.setQueryData>>([QUERY_KEYS.chat], (oldData) => { - const lastPage = oldData!.pages[oldData!.pages.length - 1]; - - return { - pages: [ - { - count: lastPage.count, - next: lastPage.next, - previous: lastPage.previous, - results: [ - { - id: Date.now(), - content: newMessage.new_message, - sender: "user" - } - ] - }, - ...oldData!.pages - ], - pageParams: [ - ...oldData!.pageParams, - { - limit: 10, - offset: 0 - } - ] - }; + const prevData = queryClient.getQueriesData({ + queryKey: [QUERY_KEYS.chat], }); - - return { prevData: prevData ? prevData[0][1] : undefined }; - }, - onSuccess: (response) => { - - queryClient.setQueryData>>([QUERY_KEYS.chat], (oldData) => { - if (oldData) { + queryClient.setQueryData>>( + [QUERY_KEYS.chat], + (oldData) => { const lastPage = oldData!.pages[oldData!.pages.length - 1]; return { @@ -77,38 +50,72 @@ const useCreateChatMessage = (queryClient: QueryClient) => { count: lastPage.count, next: lastPage.next, previous: lastPage.previous, - results: { - ...response[0], - id: Date.now() - } + results: [ + { + id: Date.now(), + content: newMessage.new_message, + sender: "user", + }, + ], }, - ...oldData!.pages + ...oldData!.pages, ], pageParams: [ ...oldData!.pageParams, { limit: 10, - offset: 0 - } - ] + offset: 0, + }, + ], }; } + ); - return oldData; - }); + return { prevData: prevData ? prevData[0][1] : undefined }; + }, + onSuccess: (response) => { + queryClient.setQueryData>>( + [QUERY_KEYS.chat], + (oldData) => { + if (oldData) { + const lastPage = + oldData!.pages[oldData!.pages.length - 1]; + return { + pages: [ + { + count: lastPage.count, + next: lastPage.next, + previous: lastPage.previous, + results: { + ...response[0], + id: Date.now(), + }, + }, + ...oldData!.pages, + ], + pageParams: [ + ...oldData!.pageParams, + { + limit: 10, + offset: 0, + }, + ], + }; + } + + return oldData; + } + ); }, onError: (err, newMessage, context) => { if (context) { - queryClient.setQueryData( - [QUERY_KEYS.chat], - context.prevData - ); + queryClient.setQueryData([QUERY_KEYS.chat], context.prevData); } }, onSettled: (newMessage) => { queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.chat] }); - } + }, }); }; diff --git a/frontend/composables/api/chat/useGetChat.ts b/frontend/composables/api/chat/useGetChat.ts index 8209937..927af3e 100644 --- a/frontend/composables/api/chat/useGetChat.ts +++ b/frontend/composables/api/chat/useGetChat.ts @@ -8,34 +8,36 @@ import { useAuth } from "~/composables/api/auth/useAuth"; export type GetBranchResponse = ApiPaginated; -const useGetBranch = ( - productId: string | number, - enabled: Ref -) => { - +const useGetBranch = (productId: string | number, enabled: Ref) => { // state const { $axios: axios } = useNuxtApp(); const { isLoggedIn } = useAuth(); - // method + // methods - const handleGetChat = async ({ productId, limit, offset }: { - productId: number | string, - limit: number, - offset: number + const handleGetChat = async ({ + productId, + limit, + offset, + }: { + productId: number | string; + limit: number; + offset: number; }) => { - - const { data } = await axios.get(`${API_ENDPOINTS.chat.messages}/${productId}`, { - params: { - offset, - limit - }, - headers: { - Authorization: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoyMTY3ODE2OTAwLCJpYXQiOjE3MzU4MTY5MDAsImp0aSI6ImQwN2E2Y2Y2NzgwZjRlNTE5NWIzOGQxMTAzYzU4NDQ3IiwidXNlcl9pZCI6NX0.slwd7ZSV7nUXEuDTYwwHUOo9ekCefwEEL4kVv2vSTFo` + const { data } = await axios.get( + `${API_ENDPOINTS.chat.messages}/${productId}`, + { + params: { + offset, + limit, + }, + headers: { + Authorization: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoyMTY3ODE2OTAwLCJpYXQiOjE3MzU4MTY5MDAsImp0aSI6ImQwN2E2Y2Y2NzgwZjRlNTE5NWIzOGQxMTAzYzU4NDQ3IiwidXNlcl9pZCI6NX0.slwd7ZSV7nUXEuDTYwwHUOo9ekCefwEEL4kVv2vSTFo`, + }, } - }); + ); return data; }; @@ -44,21 +46,22 @@ const useGetBranch = ( queryKey: [QUERY_KEYS.chat], initialPageParam: { limit: 10, - offset: 0 + offset: 0, }, - queryFn: ({ pageParam }) => handleGetChat({ - limit: pageParam.limit, - offset: pageParam.offset, - productId: productId - }), + queryFn: ({ pageParam }) => + handleGetChat({ + limit: pageParam.limit, + offset: pageParam.offset, + productId: productId, + }), getNextPageParam: (lastPage, pages) => { if (!lastPage.next) return undefined; return { limit: 10, - offset: pages.length * 10 + offset: pages.length * 10, }; - } + }, }); }; diff --git a/frontend/composables/api/product/useCreateComment.ts b/frontend/composables/api/product/useCreateComment.ts index 9443850..cd43eff 100644 --- a/frontend/composables/api/product/useCreateComment.ts +++ b/frontend/composables/api/product/useCreateComment.ts @@ -6,24 +6,27 @@ import { API_ENDPOINTS } from "~/constants"; // types export type CreateCommentRequest = { - content: string + content: string; }; const useCreateComment = (id: number | string | undefined) => { - // state const { $axios: axios } = useNuxtApp(); - // method + // methods const handleCreateComment = async (variables: CreateCommentRequest) => { - const { data } = await axios.post(`${API_ENDPOINTS.product.create_comment}/${id}`, variables); + const { data } = await axios.post( + `${API_ENDPOINTS.product.create_comment}/${id}`, + variables + ); return data; }; return useMutation({ - mutationFn: (variables: CreateCommentRequest) => handleCreateComment(variables) + mutationFn: (variables: CreateCommentRequest) => + handleCreateComment(variables), }); };