diff --git a/surfsense_web/atoms/members/members-mutation.atoms.ts b/surfsense_web/atoms/members/members-mutation.atoms.ts new file mode 100644 index 000000000..3bd7a0392 --- /dev/null +++ b/surfsense_web/atoms/members/members-mutation.atoms.ts @@ -0,0 +1,26 @@ +import { atomWithMutation } from "jotai-tanstack-query"; +import { toast } from "sonner"; +import type { + UpdateMembershipRequest, + UpdateMembershipResponse, +} from "@/contracts/types/members.types"; +import { membersApiService } from "@/lib/apis/members-api.service"; +import { cacheKeys } from "@/lib/query-client/cache-keys"; +import { queryClient } from "@/lib/query-client/client"; + +export const updateMemberMutationAtom = atomWithMutation(() => { + return { + mutationFn: async (request: UpdateMembershipRequest) => { + return membersApiService.updateMember(request); + }, + onSuccess: (_: UpdateMembershipResponse, request: UpdateMembershipRequest) => { + toast.success("Member updated successfully"); + queryClient.invalidateQueries({ + queryKey: cacheKeys.members.all(request.search_space_id.toString()), + }); + }, + onError: () => { + toast.error("Failed to update member"); + }, + }; +});