import { ApolloCache, DefaultContext, DocumentNode, FetchResult, InternalRefetchQueriesInclude, MaybeMasked, MutationFunctionOptions, OperationVariables, Unmasked, useMutation } from '@apollo/client'; import { toaster } from '../components/ui/toaster'; interface UseToastMutationProps { mutation: DocumentNode; refetchQueries?: | InternalRefetchQueriesInclude | ((result: FetchResult>>) => InternalRefetchQueriesInclude) | undefined; successMsg?: string; } interface UseToastMutationReturn { update: ( options?: | MutationFunctionOptions> | undefined ) => Promise>>; } export function useToastMutation(props: UseToastMutationProps): UseToastMutationReturn { const [update] = useMutation(props.mutation, { onCompleted: () => toaster.create({ description: props.successMsg, type: 'success' }), onError: error => { toaster.create({ description: `${error.message}`, type: 'error' }); console.error(error); }, refetchQueries: props.refetchQueries }); return { update }; }