From 83a726737a253564277d4019ac05b55d6115f779 Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Tue, 16 Dec 2025 14:40:22 +0000 Subject: [PATCH] feat: add updateMemberMutationAtom --- .../atoms/members/members-mutation.atoms.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 surfsense_web/atoms/members/members-mutation.atoms.ts 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"); + }, + }; +});