mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-18 23:11:12 +02:00
- Introduced a comprehensive specification for renaming `searchSpace` to `workspace` in `surfsense_web` and `surfsense_desktop`, ensuring all TypeScript identifiers, React props, and local data structures are updated. - Implemented migration shims for persisted local state to prevent data loss during the transition. - Updated observability metrics and IPC channels to reflect the new naming convention. - Removed legacy `active-search-space` module and replaced it with `active-workspace` to maintain consistency. - Ensured no behavioral changes or data loss for users during the renaming process.
67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
import { atomWithMutation } from "jotai-tanstack-query";
|
|
import { toast } from "sonner";
|
|
import type {
|
|
DeleteMembershipRequest,
|
|
DeleteMembershipResponse,
|
|
LeaveWorkspaceRequest,
|
|
LeaveWorkspaceResponse,
|
|
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 {
|
|
meta: { suppressGlobalErrorToast: true },
|
|
mutationFn: async (request: UpdateMembershipRequest) => {
|
|
return membersApiService.updateMember(request);
|
|
},
|
|
onSuccess: (_: UpdateMembershipResponse, request: UpdateMembershipRequest) => {
|
|
toast.success("Member updated successfully");
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.members.all(request.workspace_id.toString()),
|
|
});
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to update member");
|
|
},
|
|
};
|
|
});
|
|
|
|
export const deleteMemberMutationAtom = atomWithMutation(() => {
|
|
return {
|
|
meta: { suppressGlobalErrorToast: true },
|
|
mutationFn: async (request: DeleteMembershipRequest) => {
|
|
return membersApiService.deleteMember(request);
|
|
},
|
|
onSuccess: (_: DeleteMembershipResponse, request: DeleteMembershipRequest) => {
|
|
toast.success("Member removed successfully");
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.members.all(request.workspace_id.toString()),
|
|
});
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to remove member");
|
|
},
|
|
};
|
|
});
|
|
|
|
export const leaveWorkspaceMutationAtom = atomWithMutation(() => {
|
|
return {
|
|
meta: { suppressGlobalErrorToast: true },
|
|
mutationFn: async (request: LeaveWorkspaceRequest) => {
|
|
return membersApiService.leaveWorkspace(request);
|
|
},
|
|
onSuccess: (_: LeaveWorkspaceResponse, request: LeaveWorkspaceRequest) => {
|
|
toast.success("Successfully left the workspace");
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.members.all(request.workspace_id.toString()),
|
|
});
|
|
},
|
|
onError: () => {
|
|
toast.error("Failed to leave workspace");
|
|
},
|
|
};
|
|
});
|