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.
102 lines
3 KiB
TypeScript
102 lines
3 KiB
TypeScript
import { atomWithMutation } from "jotai-tanstack-query";
|
|
import type {
|
|
CreateConnectorRequest,
|
|
DeleteConnectorRequest,
|
|
GetConnectorsResponse,
|
|
IndexConnectorRequest,
|
|
IndexConnectorResponse,
|
|
UpdateConnectorRequest,
|
|
} from "@/contracts/types/connector.types";
|
|
import { connectorsApiService } from "@/lib/apis/connectors-api.service";
|
|
import { cacheKeys } from "@/lib/query-client/cache-keys";
|
|
import { queryClient } from "@/lib/query-client/client";
|
|
import { activeWorkspaceIdAtom } from "../workspaces/workspace-query.atoms";
|
|
|
|
export const createConnectorMutationAtom = atomWithMutation((get) => {
|
|
const workspaceId = get(activeWorkspaceIdAtom);
|
|
|
|
return {
|
|
mutationKey: cacheKeys.connectors.all(workspaceId ?? ""),
|
|
enabled: !!workspaceId,
|
|
mutationFn: async (request: CreateConnectorRequest) => {
|
|
return connectorsApiService.createConnector(request);
|
|
},
|
|
|
|
onSuccess: () => {
|
|
if (!workspaceId) return;
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.all(workspaceId),
|
|
});
|
|
},
|
|
};
|
|
});
|
|
|
|
export const updateConnectorMutationAtom = atomWithMutation((get) => {
|
|
const workspaceId = get(activeWorkspaceIdAtom);
|
|
|
|
return {
|
|
mutationKey: cacheKeys.connectors.all(workspaceId ?? ""),
|
|
enabled: !!workspaceId,
|
|
mutationFn: async (request: UpdateConnectorRequest) => {
|
|
return connectorsApiService.updateConnector(request);
|
|
},
|
|
|
|
onSuccess: (_, request: UpdateConnectorRequest) => {
|
|
if (!workspaceId) return;
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.all(workspaceId),
|
|
});
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.byId(String(request.id)),
|
|
});
|
|
},
|
|
};
|
|
});
|
|
|
|
export const deleteConnectorMutationAtom = atomWithMutation((get) => {
|
|
const workspaceId = get(activeWorkspaceIdAtom);
|
|
|
|
return {
|
|
mutationKey: cacheKeys.connectors.all(workspaceId ?? ""),
|
|
enabled: !!workspaceId,
|
|
mutationFn: async (request: DeleteConnectorRequest) => {
|
|
return connectorsApiService.deleteConnector(request);
|
|
},
|
|
|
|
onSuccess: (_, request: DeleteConnectorRequest) => {
|
|
if (!workspaceId) return;
|
|
queryClient.setQueryData(
|
|
cacheKeys.connectors.all(workspaceId),
|
|
(oldData: GetConnectorsResponse | undefined) => {
|
|
if (!oldData) return oldData;
|
|
return oldData.filter((connector) => connector.id !== request.id);
|
|
}
|
|
);
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.byId(String(request.id)),
|
|
});
|
|
},
|
|
};
|
|
});
|
|
|
|
export const indexConnectorMutationAtom = atomWithMutation((get) => {
|
|
const workspaceId = get(activeWorkspaceIdAtom);
|
|
|
|
return {
|
|
mutationKey: cacheKeys.connectors.index(),
|
|
enabled: !!workspaceId,
|
|
mutationFn: async (request: IndexConnectorRequest) => {
|
|
return connectorsApiService.indexConnector(request);
|
|
},
|
|
|
|
onSuccess: (response: IndexConnectorResponse) => {
|
|
if (!workspaceId) return;
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.all(workspaceId),
|
|
});
|
|
queryClient.invalidateQueries({
|
|
queryKey: cacheKeys.connectors.byId(String(response.connector_id)),
|
|
});
|
|
},
|
|
};
|
|
});
|