mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 08:46:22 +02:00
64 lines
2 KiB
TypeScript
64 lines
2 KiB
TypeScript
import { atomWithMutation } from "jotai-tanstack-query";
|
|
import { toast } from "sonner";
|
|
import type {
|
|
DeleteMembershipRequest,
|
|
DeleteMembershipResponse,
|
|
LeaveSearchSpaceRequest,
|
|
LeaveSearchSpaceResponse,
|
|
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");
|
|
},
|
|
};
|
|
});
|
|
|
|
export const deleteMemberMutationAtom = atomWithMutation(() => {
|
|
return {
|
|
mutationFn: async (request: DeleteMembershipRequest) => {
|
|
return membersApiService.deleteMember(request);
|
|
},
|
|
onSuccess: (_: DeleteMembershipResponse, request: DeleteMembershipRequest) => {
|
|
toast.success("Member removed successfully");
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.members.all(request.search_space_id.toString()),
|
|
});
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to remove member");
|
|
},
|
|
};
|
|
});
|
|
|
|
export const leaveSearchSpaceMutationAtom = atomWithMutation(() => {
|
|
return {
|
|
mutationFn: async (request: LeaveSearchSpaceRequest) => {
|
|
return membersApiService.leaveSearchSpace(request);
|
|
},
|
|
onSuccess: (_: LeaveSearchSpaceResponse, request: LeaveSearchSpaceRequest) => {
|
|
toast.success("Successfully left the search space");
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.members.all(request.search_space_id.toString()),
|
|
});
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to leave search space");
|
|
},
|
|
};
|
|
});
|