import { useQueryClient, useMutation, MutationOptions, DefaultError, } from "@tanstack/react-query" import { useAuthApiClient } from "./useAuthApiClient" import { QUERY_KEYS } from "./constants" import type { AcceptDocumentsResponse, AcceptDocumentsRequest, DocumentType, } from "../api" export function useAcceptDocuments( mutationOptions: Omit< MutationOptions< AcceptDocumentsResponse, DefaultError, Record >, "mutationFn" | "mutationKey" > = {}, ) { const queryClient = useQueryClient() const authApiClient = useAuthApiClient() const { onSuccess: customOnSuccess, ...restMutationOptions } = mutationOptions const { mutate, mutateAsync, ...rest } = useMutation({ mutationFn: async (documentVersions) => { const payload: AcceptDocumentsRequest = { termsOfUse: { acceptedVersion: documentVersions.termsOfUse.version, }, privacyPolicy: { acceptedVersion: documentVersions.privacyPolicy.version, }, } const response = await authApiClient.acceptDocuments(payload) if ( !response.documents?.privacyPolicy.isCurrentVersionAccepted || !response.documents?.termsOfUse.isCurrentVersionAccepted ) { throw new Error("Failed to accept all documents") } return response }, onSuccess: (data, variables, context) => { queryClient.resetQueries({ queryKey: [QUERY_KEYS.ACCOUNT] }) if (customOnSuccess) customOnSuccess(data, variables, context) }, ...restMutationOptions, }) return { acceptDocuments: mutate, acceptDocumentsAsync: mutateAsync, ...rest } }