Add mutationKey everywhere

This commit is contained in:
Gregory Schier
2024-06-21 09:25:25 -07:00
parent 50e2ab3a03
commit cd9e720835
44 changed files with 67 additions and 26 deletions

46
package-lock.json generated
View File

@@ -55,7 +55,7 @@
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
"@tanstack/react-query-devtools": "^5.35.5", "@tanstack/react-query-devtools": "^5.45.1",
"@tauri-apps/cli": ">=2.0.0-beta.0", "@tauri-apps/cli": ">=2.0.0-beta.0",
"@types/node": "^18.7.10", "@types/node": "^18.7.10",
"@types/papaparse": "^5.3.7", "@types/papaparse": "^5.3.7",
@@ -2290,10 +2290,19 @@
"postcss": "^8.2.15" "postcss": "^8.2.15"
} }
}, },
"node_modules/@tanstack/query-core": {
"version": "5.45.0",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.45.0.tgz",
"integrity": "sha512-RVfIZQmFUTdjhSAAblvueimfngYyfN6HlwaJUPK71PKd7yi43Vs1S/rdimmZedPWX/WGppcq/U1HOj7O7FwYxw==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
}
},
"node_modules/@tanstack/query-devtools": { "node_modules/@tanstack/query-devtools": {
"version": "5.32.1", "version": "5.37.1",
"resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.32.1.tgz", "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz",
"integrity": "sha512-7Xq57Ctopiy/4atpb0uNY5VRuCqRS/1fi/WBCKKX6jHMa6cCgDuV/AQuiwRXcKARbq2OkVAOrW2v4xK9nTbcCA==", "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==",
"dev": true, "dev": true,
"funding": { "funding": {
"type": "github", "type": "github",
@@ -2301,11 +2310,11 @@
} }
}, },
"node_modules/@tanstack/react-query": { "node_modules/@tanstack/react-query": {
"version": "5.35.5", "version": "5.45.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.35.5.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.45.1.tgz",
"integrity": "sha512-sppX7L+PVn5GBV3In6zzj0zcKfnZRKhXbX1MfIfKo1OjIq2GMaopvAFOP0x1bRYTUk2ikrdYcQYOozX7PWkb8A==", "integrity": "sha512-mYYfJujKg2kxmkRRjA6nn4YKG3ITsKuH22f1kteJ5IuVQqgKUgbaSQfYwVP0gBS05mhwxO03HVpD0t7BMN7WOA==",
"dependencies": { "dependencies": {
"@tanstack/query-core": "5.35.5" "@tanstack/query-core": "5.45.0"
}, },
"funding": { "funding": {
"type": "github", "type": "github",
@@ -2316,29 +2325,20 @@
} }
}, },
"node_modules/@tanstack/react-query-devtools": { "node_modules/@tanstack/react-query-devtools": {
"version": "5.35.5", "version": "5.45.1",
"resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.35.5.tgz", "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.45.1.tgz",
"integrity": "sha512-4Xll14B9uhgEJ+uqZZ5tqZ7G1LDR7wGYgb+NOZHGn11TTABnlV8GWon7zDMqdaHeR5mjjuY1UFo9pbz39kuZKQ==", "integrity": "sha512-4mrbk1g5jqlqh0pifZNsKzy7FtgeqgwzMICL4d6IJGayrrcrKq9K4N/OzRNbgRWrTn6YTY63qcAcKo+NJU2QMw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@tanstack/query-devtools": "5.32.1" "@tanstack/query-devtools": "5.37.1"
}, },
"funding": { "funding": {
"type": "github", "type": "github",
"url": "https://github.com/sponsors/tannerlinsley" "url": "https://github.com/sponsors/tannerlinsley"
}, },
"peerDependencies": { "peerDependencies": {
"@tanstack/react-query": "^5.35.5", "@tanstack/react-query": "^5.45.1",
"react": "^18.0.0" "react": "^18 || ^19"
}
},
"node_modules/@tanstack/react-query/node_modules/@tanstack/query-core": {
"version": "5.35.5",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.35.5.tgz",
"integrity": "sha512-OMWvlEqG01RfGj+XZb/piDzPp0eZkkHWSDHt2LvE/fd1zWburP/xwm0ghk6Iv8cuPlP+ACFkZviKXK0OVt6lhg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
} }
}, },
"node_modules/@tauri-apps/api": { "node_modules/@tauri-apps/api": {

View File

@@ -76,7 +76,7 @@
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
"@tanstack/react-query-devtools": "^5.35.5", "@tanstack/react-query-devtools": "^5.45.1",
"@tauri-apps/cli": ">=2.0.0-beta.0", "@tauri-apps/cli": ">=2.0.0-beta.0",
"@types/node": "^18.7.10", "@types/node": "^18.7.10",
"@types/papaparse": "^5.3.7", "@types/papaparse": "^5.3.7",

View File

@@ -20,7 +20,7 @@ const queryClient = new QueryClient({
export function App() { export function App() {
return ( return (
<QueryClientProvider client={queryClient}> <QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={false} /> <ReactQueryDevtools buttonPosition="bottom-left" />
<MotionConfig transition={{ duration: 0.1 }}> <MotionConfig transition={{ duration: 0.1 }}>
<HelmetProvider> <HelmetProvider>
<DndProvider backend={HTML5Backend}> <DndProvider backend={HTML5Backend}>

View File

@@ -4,6 +4,7 @@ import { trackEvent } from '../lib/analytics';
export function useCancelHttpResponse(id: string | null) { export function useCancelHttpResponse(id: string | null) {
return useMutation<void>({ return useMutation<void>({
mutationKey: ['cancel_http_response', id],
mutationFn: () => event.emit(`cancel_http_response_${id}`), mutationFn: () => event.emit(`cancel_http_response_${id}`),
onSettled: () => trackEvent('http_response', 'cancel'), onSettled: () => trackEvent('http_response', 'cancel'),
}); });

View File

@@ -9,6 +9,7 @@ export function useCheckForUpdates() {
const alert = useAlert(); const alert = useAlert();
const appInfo = useAppInfo(); const appInfo = useAppInfo();
return useMutation({ return useMutation({
mutationKey: ['check_for_updates'],
mutationFn: async () => { mutationFn: async () => {
const hasUpdate: boolean = await minPromiseMillis(invokeCmd('cmd_check_for_updates'), 500); const hasUpdate: boolean = await minPromiseMillis(invokeCmd('cmd_check_for_updates'), 500);
if (!hasUpdate) { if (!hasUpdate) {

View File

@@ -12,6 +12,7 @@ export function useCreateCookieJar() {
const prompt = usePrompt(); const prompt = usePrompt();
return useMutation<CookieJar>({ return useMutation<CookieJar>({
mutationKey: ['create_cookie_jar'],
mutationFn: async () => { mutationFn: async () => {
if (workspaceId === null) { if (workspaceId === null) {
throw new Error("Cannot create cookie jar when there's no active workspace"); throw new Error("Cannot create cookie jar when there's no active workspace");

View File

@@ -14,6 +14,7 @@ export function useCreateEnvironment() {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<Environment, unknown, void>({ return useMutation<Environment, unknown, void>({
mutationKey: ['create_environment'],
mutationFn: async () => { mutationFn: async () => {
const name = await prompt({ const name = await prompt({
id: 'new-environment', id: 'new-environment',

View File

@@ -14,6 +14,7 @@ export function useCreateFolder() {
const prompt = usePrompt(); const prompt = usePrompt();
return useMutation<Folder, unknown, Partial<Pick<Folder, 'name' | 'sortPriority' | 'folderId'>>>({ return useMutation<Folder, unknown, Partial<Pick<Folder, 'name' | 'sortPriority' | 'folderId'>>>({
mutationKey: ['create_folder'],
mutationFn: async (patch) => { mutationFn: async (patch) => {
if (workspaceId === null) { if (workspaceId === null) {
throw new Error("Cannot create folder when there's no active workspace"); throw new Error("Cannot create folder when there's no active workspace");

View File

@@ -18,6 +18,7 @@ export function useCreateGrpcRequest() {
unknown, unknown,
Partial<Pick<GrpcRequest, 'name' | 'sortPriority' | 'folderId'>> Partial<Pick<GrpcRequest, 'name' | 'sortPriority' | 'folderId'>>
>({ >({
mutationKey: ['create_grpc_request'],
mutationFn: (patch) => { mutationFn: (patch) => {
if (workspaceId === null) { if (workspaceId === null) {
throw new Error("Cannot create grpc request when there's no active workspace"); throw new Error("Cannot create grpc request when there's no active workspace");

View File

@@ -14,6 +14,7 @@ export function useCreateHttpRequest() {
const routes = useAppRoutes(); const routes = useAppRoutes();
return useMutation<HttpRequest, unknown, Partial<HttpRequest>>({ return useMutation<HttpRequest, unknown, Partial<HttpRequest>>({
mutationKey: ['create_http_request'],
mutationFn: (patch = {}) => { mutationFn: (patch = {}) => {
if (workspaceId === null) { if (workspaceId === null) {
throw new Error("Cannot create request when there's no active workspace"); throw new Error("Cannot create request when there's no active workspace");

View File

@@ -8,6 +8,7 @@ export function useCreateWorkspace() {
const routes = useAppRoutes(); const routes = useAppRoutes();
const prompt = usePrompt(); const prompt = usePrompt();
return useMutation<Workspace, void, void>({ return useMutation<Workspace, void, void>({
mutationKey: ['create_workspace'],
mutationFn: async () => { mutationFn: async () => {
const name = await prompt({ const name = await prompt({
id: 'new-workspace', id: 'new-workspace',

View File

@@ -13,6 +13,7 @@ export function useDeleteAnyGrpcRequest() {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<GrpcRequest | null, string, string>({ return useMutation<GrpcRequest | null, string, string>({
mutationKey: ['delete_any_grpc_request'],
mutationFn: async (id) => { mutationFn: async (id) => {
const request = await getGrpcRequest(id); const request = await getGrpcRequest(id);
if (request == null) return null; if (request == null) return null;

View File

@@ -14,6 +14,7 @@ export function useDeleteAnyHttpRequest() {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<HttpRequest | null, string, string>({ return useMutation<HttpRequest | null, string, string>({
mutationKey: ['delete_any_http_request'],
mutationFn: async (id) => { mutationFn: async (id) => {
const request = await getHttpRequest(id); const request = await getHttpRequest(id);
if (request == null) return null; if (request == null) return null;

View File

@@ -11,6 +11,7 @@ export function useDeleteCookieJar(cookieJar: CookieJar | null) {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<CookieJar | null, string>({ return useMutation<CookieJar | null, string>({
mutationKey: ['delete_cookie_jar', cookieJar?.id],
mutationFn: async () => { mutationFn: async () => {
const confirmed = await confirm({ const confirmed = await confirm({
id: 'delete-cookie-jar', id: 'delete-cookie-jar',

View File

@@ -11,6 +11,7 @@ export function useDeleteEnvironment(environment: Environment | null) {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<Environment | null, string>({ return useMutation<Environment | null, string>({
mutationKey: ['delete_environment', environment?.id],
mutationFn: async () => { mutationFn: async () => {
const confirmed = await confirm({ const confirmed = await confirm({
id: 'delete-environment', id: 'delete-environment',

View File

@@ -13,6 +13,7 @@ export function useDeleteFolder(id: string | null) {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<Folder | null, string>({ return useMutation<Folder | null, string>({
mutationKey: ['delete_folder', id],
mutationFn: async () => { mutationFn: async () => {
const folder = await getFolder(id); const folder = await getFolder(id);
const confirmed = await confirm({ const confirmed = await confirm({

View File

@@ -7,6 +7,7 @@ import { grpcConnectionsQueryKey } from './useGrpcConnections';
export function useDeleteGrpcConnection(id: string | null) { export function useDeleteGrpcConnection(id: string | null) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<GrpcConnection>({ return useMutation<GrpcConnection>({
mutationKey: ['delete_grpc_connection', id],
mutationFn: async () => { mutationFn: async () => {
return await invokeCmd('cmd_delete_grpc_connection', { id: id }); return await invokeCmd('cmd_delete_grpc_connection', { id: id });
}, },

View File

@@ -6,6 +6,7 @@ import { grpcConnectionsQueryKey } from './useGrpcConnections';
export function useDeleteGrpcConnections(requestId?: string) { export function useDeleteGrpcConnections(requestId?: string) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation({ return useMutation({
mutationKey: ['delete_grpc_connections', requestId],
mutationFn: async () => { mutationFn: async () => {
if (requestId === undefined) return; if (requestId === undefined) return;
await invokeCmd('cmd_delete_all_grpc_connections', { requestId }); await invokeCmd('cmd_delete_all_grpc_connections', { requestId });

View File

@@ -7,6 +7,7 @@ import { httpResponsesQueryKey } from './useHttpResponses';
export function useDeleteHttpResponse(id: string | null) { export function useDeleteHttpResponse(id: string | null) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<HttpResponse>({ return useMutation<HttpResponse>({
mutationKey: ['delete_http_response', id],
mutationFn: async () => { mutationFn: async () => {
return await invokeCmd('cmd_delete_http_response', { id: id }); return await invokeCmd('cmd_delete_http_response', { id: id });
}, },

View File

@@ -6,6 +6,7 @@ import { httpResponsesQueryKey } from './useHttpResponses';
export function useDeleteHttpResponses(requestId?: string) { export function useDeleteHttpResponses(requestId?: string) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation({ return useMutation({
mutationKey: ['delete_http_responses', requestId],
mutationFn: async () => { mutationFn: async () => {
if (requestId === undefined) return; if (requestId === undefined) return;
await invokeCmd('cmd_delete_all_http_responses', { requestId }); await invokeCmd('cmd_delete_all_http_responses', { requestId });

View File

@@ -7,6 +7,7 @@ export function useDeleteRequest(id: string | null) {
const deleteAnyGrpcRequest = useDeleteAnyGrpcRequest(); const deleteAnyGrpcRequest = useDeleteAnyGrpcRequest();
return useMutation<void, string>({ return useMutation<void, string>({
mutationKey: ['delete_request', id],
mutationFn: async () => { mutationFn: async () => {
if (id == null) return; if (id == null) return;
// We don't know what type it is based on the ID, so just try deleting both // We don't know what type it is based on the ID, so just try deleting both

View File

@@ -16,6 +16,7 @@ export function useDeleteWorkspace(workspace: Workspace | null) {
const confirm = useConfirm(); const confirm = useConfirm();
return useMutation<Workspace | null, string>({ return useMutation<Workspace | null, string>({
mutationKey: ['delete_workspace', workspace?.id],
mutationFn: async () => { mutationFn: async () => {
const confirmed = await confirm({ const confirmed = await confirm({
id: 'delete-workspace', id: 'delete-workspace',

View File

@@ -20,6 +20,7 @@ export function useDuplicateGrpcRequest({
const routes = useAppRoutes(); const routes = useAppRoutes();
const protoFiles = useGrpcProtoFiles(id); const protoFiles = useGrpcProtoFiles(id);
return useMutation<GrpcRequest, string>({ return useMutation<GrpcRequest, string>({
mutationKey: ['duplicate_grpc_request', id],
mutationFn: async () => { mutationFn: async () => {
if (id === null) throw new Error("Can't duplicate a null grpc request"); if (id === null) throw new Error("Can't duplicate a null grpc request");
return invokeCmd('cmd_duplicate_grpc_request', { id }); return invokeCmd('cmd_duplicate_grpc_request', { id });

View File

@@ -17,6 +17,7 @@ export function useDuplicateHttpRequest({
const activeEnvironmentId = useActiveEnvironmentId(); const activeEnvironmentId = useActiveEnvironmentId();
const routes = useAppRoutes(); const routes = useAppRoutes();
return useMutation<HttpRequest, string>({ return useMutation<HttpRequest, string>({
mutationKey: ['duplicate_http_request', id],
mutationFn: async () => { mutationFn: async () => {
if (id === null) throw new Error("Can't duplicate a null request"); if (id === null) throw new Error("Can't duplicate a null request");
return invokeCmd('cmd_duplicate_http_request', { id }); return invokeCmd('cmd_duplicate_http_request', { id });

View File

@@ -14,6 +14,7 @@ export function useExportData() {
const toast = useToast(); const toast = useToast();
return useMutation({ return useMutation({
mutationKey: ['export_data'],
onError: (err: string) => { onError: (err: string) => {
alert({ id: 'export-failed', title: 'Export Failed', body: err }); alert({ id: 'export-failed', title: 'Export Failed', body: err });
}, },

View File

@@ -21,12 +21,14 @@ export function useGrpc(
const environmentId = useActiveEnvironmentId(); const environmentId = useActiveEnvironmentId();
const go = useMutation<void, string>({ const go = useMutation<void, string>({
mutationKey: ['grpc_go', conn?.id],
mutationFn: async () => mutationFn: async () =>
await invokeCmd('cmd_grpc_go', { requestId, environmentId, protoFiles }), await invokeCmd('cmd_grpc_go', { requestId, environmentId, protoFiles }),
onSettled: () => trackEvent('grpc_request', 'send'), onSettled: () => trackEvent('grpc_request', 'send'),
}); });
const send = useMutation({ const send = useMutation({
mutationKey: ['grpc_send', conn?.id],
mutationFn: async ({ message }: { message: string }) => mutationFn: async ({ message }: { message: string }) =>
await emit(`grpc_client_msg_${conn?.id ?? 'none'}`, { Message: message }), await emit(`grpc_client_msg_${conn?.id ?? 'none'}`, { Message: message }),
onSettled: () => trackEvent('grpc_connection', 'send'), onSettled: () => trackEvent('grpc_connection', 'send'),

View File

@@ -16,6 +16,7 @@ export function useImportCurl({ clearClipboard }: { clearClipboard?: boolean } =
const [, setClipboardText] = useClipboardText(); const [, setClipboardText] = useClipboardText();
return useMutation({ return useMutation({
mutationKey: ['import_curl'],
mutationFn: async ({ requestId, command }: { requestId: string | null; command: string }) => { mutationFn: async ({ requestId, command }: { requestId: string | null; command: string }) => {
const request: Record<string, unknown> = await invokeCmd('cmd_curl_to_request', { const request: Record<string, unknown> = await invokeCmd('cmd_curl_to_request', {
command, command,

View File

@@ -77,6 +77,7 @@ export function useImportData() {
}; };
return useMutation({ return useMutation({
mutationKey: ['import_data'],
onError: (err: string) => { onError: (err: string) => {
alert({ alert({
id: 'import-failed', id: 'import-failed',

View File

@@ -32,6 +32,7 @@ export function useKeyValue<T extends Object | null>({
}); });
const mutate = useMutation<void, unknown, T>({ const mutate = useMutation<void, unknown, T>({
mutationKey: ['set_key_value', namespace, key],
mutationFn: (value) => setKeyValue<T>({ namespace, key, value }), mutationFn: (value) => setKeyValue<T>({ namespace, key, value }),
// k/v should be as fast as possible, so optimistically update the cache // k/v should be as fast as possible, so optimistically update the cache
onMutate: (value) => queryClient.setQueryData<T>(keyValueQueryKey({ namespace, key }), value), onMutate: (value) => queryClient.setQueryData<T>(keyValueQueryKey({ namespace, key }), value),

View File

@@ -12,7 +12,7 @@ export function useMoveToWorkspace(id: string) {
const activeWorkspaceId = useActiveWorkspaceId(); const activeWorkspaceId = useActiveWorkspaceId();
return useMutation<void, unknown>({ return useMutation<void, unknown>({
mutationKey: ['moveWorkspace'], mutationKey: ['move_workspace', id],
mutationFn: async () => { mutationFn: async () => {
if (request == null || activeWorkspaceId == null) return; if (request == null || activeWorkspaceId == null) return;

View File

@@ -8,6 +8,7 @@ export function useOpenWorkspace() {
const routes = useAppRoutes(); const routes = useAppRoutes();
return useMutation({ return useMutation({
mutationKey: ['open_workspace'],
mutationFn: async ({ mutationFn: async ({
workspaceId, workspaceId,
inNewWindow, inNewWindow,

View File

@@ -13,6 +13,7 @@ export function useSaveResponse(response: HttpResponse) {
const toast = useToast(); const toast = useToast();
return useMutation({ return useMutation({
mutationKey: ['save_response', response.id],
mutationFn: async () => { mutationFn: async () => {
const request = await getHttpRequest(response.requestId); const request = await getHttpRequest(response.requestId);
if (request == null) return null; if (request == null) return null;

View File

@@ -14,6 +14,7 @@ export function useSendAnyRequest(options: { download?: boolean } = {}) {
const alert = useAlert(); const alert = useAlert();
const { activeCookieJar } = useActiveCookieJar(); const { activeCookieJar } = useActiveCookieJar();
return useMutation<HttpResponse | null, string, string | null>({ return useMutation<HttpResponse | null, string, string | null>({
mutationKey: ['send_any_request'],
mutationFn: async (id) => { mutationFn: async (id) => {
const request = await getHttpRequest(id); const request = await getHttpRequest(id);
if (request == null) { if (request == null) {

View File

@@ -4,6 +4,7 @@ import { useSendAnyRequest } from './useSendAnyRequest';
export function useSendManyRequests() { export function useSendManyRequests() {
const sendAnyRequest = useSendAnyRequest(); const sendAnyRequest = useSendAnyRequest();
return useMutation<void, string, string[]>({ return useMutation<void, string, string[]>({
mutationKey: ['send_many_requests'],
mutationFn: async (requestIds: string[]) => { mutationFn: async (requestIds: string[]) => {
for (const id of requestIds) { for (const id of requestIds) {
sendAnyRequest.mutate(id); sendAnyRequest.mutate(id);

View File

@@ -5,6 +5,7 @@ import { useSendAnyRequest } from './useSendAnyRequest';
export function useSendRequest(id: string | null, options: { download?: boolean } = {}) { export function useSendRequest(id: string | null, options: { download?: boolean } = {}) {
const sendAnyRequest = useSendAnyRequest(options); const sendAnyRequest = useSendAnyRequest(options);
return useMutation<HttpResponse | null, string>({ return useMutation<HttpResponse | null, string>({
mutationKey: ['send_http_request', id],
mutationFn: () => sendAnyRequest.mutateAsync(id), mutationFn: () => sendAnyRequest.mutateAsync(id),
}); });
} }

View File

@@ -8,6 +8,7 @@ export function useUpdateAnyFolder() {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<void, unknown, { id: string; update: (r: Folder) => Folder }>({ return useMutation<void, unknown, { id: string; update: (r: Folder) => Folder }>({
mutationKey: ['update_any_folder'],
mutationFn: async ({ id, update }) => { mutationFn: async ({ id, update }) => {
const folder = await getFolder(id); const folder = await getFolder(id);
if (folder === null) { if (folder === null) {

View File

@@ -12,6 +12,7 @@ export function useUpdateAnyGrpcRequest() {
unknown, unknown,
{ id: string; update: Partial<GrpcRequest> | ((r: GrpcRequest) => GrpcRequest) } { id: string; update: Partial<GrpcRequest> | ((r: GrpcRequest) => GrpcRequest) }
>({ >({
mutationKey: ['update_any_grpc_request'],
mutationFn: async ({ id, update }) => { mutationFn: async ({ id, update }) => {
const request = await getGrpcRequest(id); const request = await getGrpcRequest(id);
if (request === null) { if (request === null) {

View File

@@ -12,6 +12,7 @@ export function useUpdateAnyHttpRequest() {
unknown, unknown,
{ id: string; update: Partial<HttpRequest> | ((r: HttpRequest) => HttpRequest) } { id: string; update: Partial<HttpRequest> | ((r: HttpRequest) => HttpRequest) }
>({ >({
mutationKey: ['update_any_http_request'],
mutationFn: async ({ id, update }) => { mutationFn: async ({ id, update }) => {
const request = await getHttpRequest(id); const request = await getHttpRequest(id);
if (request === null) { if (request === null) {

View File

@@ -7,6 +7,7 @@ import { cookieJarsQueryKey } from './useCookieJars';
export function useUpdateCookieJar(id: string | null) { export function useUpdateCookieJar(id: string | null) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<void, unknown, Partial<CookieJar> | ((j: CookieJar) => CookieJar)>({ return useMutation<void, unknown, Partial<CookieJar> | ((j: CookieJar) => CookieJar)>({
mutationKey: ['update_cookie_jar', id],
mutationFn: async (v) => { mutationFn: async (v) => {
const cookieJar = await getCookieJar(id); const cookieJar = await getCookieJar(id);
if (cookieJar == null) { if (cookieJar == null) {

View File

@@ -7,6 +7,7 @@ import { environmentsQueryKey } from './useEnvironments';
export function useUpdateEnvironment(id: string | null) { export function useUpdateEnvironment(id: string | null) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<void, unknown, Partial<Environment> | ((r: Environment) => Environment)>({ return useMutation<void, unknown, Partial<Environment> | ((r: Environment) => Environment)>({
mutationKey: ['update_environment', id],
mutationFn: async (v) => { mutationFn: async (v) => {
const environment = await getEnvironment(id); const environment = await getEnvironment(id);
if (environment == null) { if (environment == null) {

View File

@@ -5,6 +5,7 @@ import { useUpdateAnyGrpcRequest } from './useUpdateAnyGrpcRequest';
export function useUpdateGrpcRequest(id: string | null) { export function useUpdateGrpcRequest(id: string | null) {
const updateAnyGrpcRequest = useUpdateAnyGrpcRequest(); const updateAnyGrpcRequest = useUpdateAnyGrpcRequest();
return useMutation<void, unknown, Partial<GrpcRequest> | ((r: GrpcRequest) => GrpcRequest)>({ return useMutation<void, unknown, Partial<GrpcRequest> | ((r: GrpcRequest) => GrpcRequest)>({
mutationKey: ['update_grpc_request', id],
mutationFn: async (update) => { mutationFn: async (update) => {
return updateAnyGrpcRequest.mutateAsync({ id: id ?? 'n/a', update }); return updateAnyGrpcRequest.mutateAsync({ id: id ?? 'n/a', update });
}, },

View File

@@ -5,6 +5,7 @@ import { useUpdateAnyHttpRequest } from './useUpdateAnyHttpRequest';
export function useUpdateHttpRequest(id: string | null) { export function useUpdateHttpRequest(id: string | null) {
const updateAnyRequest = useUpdateAnyHttpRequest(); const updateAnyRequest = useUpdateAnyHttpRequest();
return useMutation<void, unknown, Partial<HttpRequest> | ((r: HttpRequest) => HttpRequest)>({ return useMutation<void, unknown, Partial<HttpRequest> | ((r: HttpRequest) => HttpRequest)>({
mutationKey: ['update_http_request', id],
mutationFn: async (update) => updateAnyRequest.mutateAsync({ id: id ?? 'n/a', update }), mutationFn: async (update) => updateAnyRequest.mutateAsync({ id: id ?? 'n/a', update }),
}); });
} }

View File

@@ -7,6 +7,7 @@ export function useUpdateSettings() {
const settings = useSettings(); const settings = useSettings();
return useMutation<void, unknown, Partial<Settings>>({ return useMutation<void, unknown, Partial<Settings>>({
mutationKey: ['update_settings'],
mutationFn: async (patch) => { mutationFn: async (patch) => {
if (settings == null) return; if (settings == null) return;
const newSettings: Settings = { ...settings, ...patch }; const newSettings: Settings = { ...settings, ...patch };

View File

@@ -7,6 +7,7 @@ import { workspacesQueryKey } from './useWorkspaces';
export function useUpdateWorkspace(id: string | null) { export function useUpdateWorkspace(id: string | null) {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
return useMutation<void, unknown, Partial<Workspace> | ((w: Workspace) => Workspace)>({ return useMutation<void, unknown, Partial<Workspace> | ((w: Workspace) => Workspace)>({
mutationKey: ['update_workspace', id],
mutationFn: async (v) => { mutationFn: async (v) => {
const workspace = await getWorkspace(id); const workspace = await getWorkspace(id);
if (workspace == null) { if (workspace == null) {