diff --git a/src-web/components/FolderSettingsDialog.tsx b/src-web/components/FolderSettingsDialog.tsx index e9f13e51..583e57f7 100644 --- a/src-web/components/FolderSettingsDialog.tsx +++ b/src-web/components/FolderSettingsDialog.tsx @@ -1,6 +1,5 @@ import { useFolders } from '../hooks/useFolders'; import { useUpdateAnyFolder } from '../hooks/useUpdateAnyFolder'; -import { Banner } from './core/Banner'; import { PlainInput } from './core/PlainInput'; import { VStack } from './core/Stacks'; import { MarkdownEditor } from './MarkdownEditor'; @@ -10,7 +9,7 @@ interface Props { } export function FolderSettingsDialog({ folderId }: Props) { - const updateFolder = useUpdateAnyFolder(); + const { mutate: updateFolder } = useUpdateAnyFolder(); const folders = useFolders(); const folder = folders.find((f) => f.id === folderId); @@ -18,13 +17,12 @@ export function FolderSettingsDialog({ folderId }: Props) { return ( - {updateFolder.error != null && {String(updateFolder.error)}} { if (folderId == null) return; - updateFolder.mutate({ id: folderId, update: (folder) => ({ ...folder, name }) }); + updateFolder({ id: folderId, update: (folder) => ({ ...folder, name }) }); }} /> @@ -35,7 +33,7 @@ export function FolderSettingsDialog({ folderId }: Props) { defaultValue={folder.description} onChange={(description) => { if (folderId == null) return; - updateFolder.mutate({ + updateFolder({ id: folderId, update: (folder) => ({ ...folder, description }), }); diff --git a/src-web/components/WorkpaceSettingsDialog.tsx b/src-web/components/WorkpaceSettingsDialog.tsx index dfabaebb..2ad5dc55 100644 --- a/src-web/components/WorkpaceSettingsDialog.tsx +++ b/src-web/components/WorkpaceSettingsDialog.tsx @@ -1,6 +1,5 @@ import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace'; import { useWorkspaces } from '../hooks/useWorkspaces'; -import { Banner } from './core/Banner'; import { PlainInput } from './core/PlainInput'; import { VStack } from './core/Stacks'; import { MarkdownEditor } from './MarkdownEditor'; @@ -18,9 +17,6 @@ export function WorkspaceSettingsDialog({ workspaceId }: Props) { return ( - {updateWorkspace.error != null && ( - {String(updateWorkspace.error)} - )} ({ + return useFastMutation({ mutationKey: ['cancel_http_response', id], mutationFn: () => event.emit(`cancel_http_response_${id}`), onSettled: () => trackEvent('http_response', 'cancel'), diff --git a/src-web/hooks/useCheckForUpdates.tsx b/src-web/hooks/useCheckForUpdates.tsx index 176cbd2f..09640849 100644 --- a/src-web/hooks/useCheckForUpdates.tsx +++ b/src-web/hooks/useCheckForUpdates.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useMutation } from '@tanstack/react-query'; import { InlineCode } from '../components/core/InlineCode'; import { minPromiseMillis } from '../lib/minPromiseMillis'; import { invokeCmd } from '../lib/tauri'; diff --git a/src-web/hooks/useCopyHttpResponse.ts b/src-web/hooks/useCopyHttpResponse.ts index 9df6e4b5..2313d5fa 100644 --- a/src-web/hooks/useCopyHttpResponse.ts +++ b/src-web/hooks/useCopyHttpResponse.ts @@ -1,11 +1,11 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpResponse } from '@yaakapp-internal/models'; import { useCopy } from './useCopy'; import { getResponseBodyText } from '../lib/responseBody'; export function useCopyHttpResponse(response: HttpResponse) { const copy = useCopy(); - return useMutation({ + return useFastMutation({ mutationKey: ['copy_http_response'], async mutationFn() { const body = await getResponseBodyText(response); diff --git a/src-web/hooks/useCreateCookieJar.ts b/src-web/hooks/useCreateCookieJar.ts index 2d5a0830..4630cb3b 100644 --- a/src-web/hooks/useCreateCookieJar.ts +++ b/src-web/hooks/useCreateCookieJar.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { CookieJar } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { trackEvent } from '../lib/analytics'; @@ -13,7 +13,7 @@ export function useCreateCookieJar() { const prompt = usePrompt(); const setCookieJars = useSetAtom(cookieJarsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['create_cookie_jar'], mutationFn: async () => { if (workspace === null) { diff --git a/src-web/hooks/useCreateEnvironment.ts b/src-web/hooks/useCreateEnvironment.ts index 52e6f6a9..3b7e56f0 100644 --- a/src-web/hooks/useCreateEnvironment.ts +++ b/src-web/hooks/useCreateEnvironment.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Environment } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { trackEvent } from '../lib/analytics'; @@ -15,7 +15,7 @@ export function useCreateEnvironment() { const workspace = useActiveWorkspace(); const setEnvironments = useSetAtom(environmentsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['create_environment'], mutationFn: async () => { const name = await prompt({ @@ -42,7 +42,7 @@ export function useCreateEnvironment() { // Optimistic update setEnvironments(updateModelList(environment)); - setActiveEnvironmentId(environment.id); + await setActiveEnvironmentId(environment.id); }, }); } diff --git a/src-web/hooks/useCreateFolder.ts b/src-web/hooks/useCreateFolder.ts index f662d329..89014513 100644 --- a/src-web/hooks/useCreateFolder.ts +++ b/src-web/hooks/useCreateFolder.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Folder } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { trackEvent } from '../lib/analytics'; @@ -13,7 +13,7 @@ export function useCreateFolder() { const prompt = usePrompt(); const setFolders = useSetAtom(foldersAtom); - return useMutation< + return useFastMutation< Folder | null, unknown, Partial> diff --git a/src-web/hooks/useCreateGrpcRequest.ts b/src-web/hooks/useCreateGrpcRequest.ts index 07a8cfd3..d33da8e1 100644 --- a/src-web/hooks/useCreateGrpcRequest.ts +++ b/src-web/hooks/useCreateGrpcRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcRequest } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { trackEvent } from '../lib/analytics'; @@ -14,7 +14,7 @@ export function useCreateGrpcRequest() { const workspace = useActiveWorkspace(); const setGrpcRequests = useSetAtom(grpcRequestsAtom); - return useMutation< + return useFastMutation< GrpcRequest, unknown, Partial> diff --git a/src-web/hooks/useCreateHttpRequest.ts b/src-web/hooks/useCreateHttpRequest.ts index 95206a6b..bbca5fb0 100644 --- a/src-web/hooks/useCreateHttpRequest.ts +++ b/src-web/hooks/useCreateHttpRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpRequest } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { trackEvent } from '../lib/analytics'; @@ -14,7 +14,7 @@ export function useCreateHttpRequest() { const activeWorkspace = useActiveWorkspace(); const setHttpRequests = useSetAtom(httpRequestsAtom); - return useMutation>({ + return useFastMutation>({ mutationKey: ['create_http_request'], mutationFn: async (patch = {}) => { const activeRequest = getActiveRequest(); diff --git a/src-web/hooks/useCreateWorkspace.ts b/src-web/hooks/useCreateWorkspace.ts index e3dd3e49..e5449e07 100644 --- a/src-web/hooks/useCreateWorkspace.ts +++ b/src-web/hooks/useCreateWorkspace.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Workspace } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { invokeCmd } from '../lib/tauri'; @@ -12,7 +12,7 @@ export function useCreateWorkspace() { const prompt = usePrompt(); const setWorkspaces = useSetAtom(workspacesAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['create_workspace'], mutationFn: async () => { const name = await prompt({ diff --git a/src-web/hooks/useDeleteAnyGrpcRequest.tsx b/src-web/hooks/useDeleteAnyGrpcRequest.tsx index 3752f0f8..c239e26f 100644 --- a/src-web/hooks/useDeleteAnyGrpcRequest.tsx +++ b/src-web/hooks/useDeleteAnyGrpcRequest.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcRequest } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { InlineCode } from '../components/core/InlineCode'; @@ -14,7 +14,7 @@ export function useDeleteAnyGrpcRequest() { const confirm = useConfirm(); const setGrpcRequests = useSetAtom(grpcRequestsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_any_grpc_request'], mutationFn: async (id) => { const request = await getGrpcRequest(id); diff --git a/src-web/hooks/useDeleteAnyHttpRequest.tsx b/src-web/hooks/useDeleteAnyHttpRequest.tsx index 671a55af..7ec1a7b5 100644 --- a/src-web/hooks/useDeleteAnyHttpRequest.tsx +++ b/src-web/hooks/useDeleteAnyHttpRequest.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpRequest } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { InlineCode } from '../components/core/InlineCode'; @@ -14,7 +14,7 @@ export function useDeleteAnyHttpRequest() { const confirm = useConfirm(); const setHttpRequests = useSetAtom(httpRequestsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_any_http_request'], mutationFn: async (id) => { const request = await getHttpRequest(id); diff --git a/src-web/hooks/useDeleteCookieJar.tsx b/src-web/hooks/useDeleteCookieJar.tsx index 3ea374ea..b4212e2d 100644 --- a/src-web/hooks/useDeleteCookieJar.tsx +++ b/src-web/hooks/useDeleteCookieJar.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { CookieJar } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { InlineCode } from '../components/core/InlineCode'; @@ -12,7 +12,7 @@ export function useDeleteCookieJar(cookieJar: CookieJar | null) { const confirm = useConfirm(); const setCookieJars = useSetAtom(cookieJarsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_cookie_jar', cookieJar?.id], mutationFn: async () => { const confirmed = await confirm({ diff --git a/src-web/hooks/useDeleteEnvironment.tsx b/src-web/hooks/useDeleteEnvironment.tsx index f11b7df3..40da61d0 100644 --- a/src-web/hooks/useDeleteEnvironment.tsx +++ b/src-web/hooks/useDeleteEnvironment.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Environment } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { InlineCode } from '../components/core/InlineCode'; @@ -12,7 +12,7 @@ export function useDeleteEnvironment(environment: Environment | null) { const confirm = useConfirm(); const setEnvironments = useSetAtom(environmentsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_environment', environment?.id], mutationFn: async () => { const confirmed = await confirm({ diff --git a/src-web/hooks/useDeleteFolder.tsx b/src-web/hooks/useDeleteFolder.tsx index 058a1a4b..8e5ba04f 100644 --- a/src-web/hooks/useDeleteFolder.tsx +++ b/src-web/hooks/useDeleteFolder.tsx @@ -7,13 +7,13 @@ import { invokeCmd } from '../lib/tauri'; import { useConfirm } from './useConfirm'; import { foldersAtom } from './useFolders'; import { removeModelById } from './useSyncModelStores'; -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; export function useDeleteFolder(id: string | null) { const confirm = useConfirm(); const setFolders = useSetAtom(foldersAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_folder', id], mutationFn: async () => { const folder = await getFolder(id); diff --git a/src-web/hooks/useDeleteGrpcConnection.ts b/src-web/hooks/useDeleteGrpcConnection.ts index be54ec1a..bde3efe5 100644 --- a/src-web/hooks/useDeleteGrpcConnection.ts +++ b/src-web/hooks/useDeleteGrpcConnection.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcConnection } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { trackEvent } from '../lib/analytics'; @@ -8,7 +8,7 @@ import {removeModelById} from "./useSyncModelStores"; export function useDeleteGrpcConnection(id: string | null) { const setGrpcConnections = useSetAtom(grpcConnectionsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_grpc_connection', id], mutationFn: async () => { return await invokeCmd('cmd_delete_grpc_connection', { id: id }); diff --git a/src-web/hooks/useDeleteGrpcConnections.ts b/src-web/hooks/useDeleteGrpcConnections.ts index d95de704..f014dd93 100644 --- a/src-web/hooks/useDeleteGrpcConnections.ts +++ b/src-web/hooks/useDeleteGrpcConnections.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { useSetAtom } from 'jotai'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; @@ -6,7 +6,7 @@ import { grpcConnectionsAtom } from './useGrpcConnections'; export function useDeleteGrpcConnections(requestId?: string) { const setGrpcConnections = useSetAtom(grpcConnectionsAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_grpc_connections', requestId], mutationFn: async () => { if (requestId === undefined) return; diff --git a/src-web/hooks/useDeleteHttpResponse.ts b/src-web/hooks/useDeleteHttpResponse.ts index a25933ca..ed6744da 100644 --- a/src-web/hooks/useDeleteHttpResponse.ts +++ b/src-web/hooks/useDeleteHttpResponse.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpResponse } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai"; import { trackEvent } from '../lib/analytics'; @@ -8,7 +8,7 @@ import {removeModelById} from "./useSyncModelStores"; export function useDeleteHttpResponse(id: string | null) { const setHttpResponses = useSetAtom(httpResponsesAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_http_response', id], mutationFn: async () => { return await invokeCmd('cmd_delete_http_response', { id: id }); diff --git a/src-web/hooks/useDeleteHttpResponses.ts b/src-web/hooks/useDeleteHttpResponses.ts index 98dbd85f..5ccc67ac 100644 --- a/src-web/hooks/useDeleteHttpResponses.ts +++ b/src-web/hooks/useDeleteHttpResponses.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { useSetAtom } from 'jotai'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; @@ -6,7 +6,7 @@ import { httpResponsesAtom } from './useHttpResponses'; export function useDeleteHttpResponses(requestId?: string) { const setHttpResponses = useSetAtom(httpResponsesAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_http_responses', requestId], mutationFn: async () => { if (requestId === undefined) return; diff --git a/src-web/hooks/useDeleteRequest.tsx b/src-web/hooks/useDeleteRequest.tsx index ad60af28..503868bc 100644 --- a/src-web/hooks/useDeleteRequest.tsx +++ b/src-web/hooks/useDeleteRequest.tsx @@ -1,12 +1,12 @@ import { useDeleteAnyGrpcRequest } from './useDeleteAnyGrpcRequest'; import { useDeleteAnyHttpRequest } from './useDeleteAnyHttpRequest'; -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; export function useDeleteRequest(id: string | null) { const deleteAnyHttpRequest = useDeleteAnyHttpRequest(); const deleteAnyGrpcRequest = useDeleteAnyGrpcRequest(); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_request', id], mutationFn: async () => { if (id == null) return; diff --git a/src-web/hooks/useDeleteSendHistory.tsx b/src-web/hooks/useDeleteSendHistory.tsx index 1d104c10..3774871c 100644 --- a/src-web/hooks/useDeleteSendHistory.tsx +++ b/src-web/hooks/useDeleteSendHistory.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { useSetAtom } from 'jotai/index'; import { count } from '../lib/pluralize'; import { invokeCmd } from '../lib/tauri'; @@ -20,7 +20,7 @@ export function useDeleteSendHistory() { grpcConnections.length > 0 ? count('Grpc Connection', grpcConnections.length) : null, ].filter((l) => l != null); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_send_history'], mutationFn: async () => { if (labels.length === 0) { diff --git a/src-web/hooks/useDeleteWorkspace.tsx b/src-web/hooks/useDeleteWorkspace.tsx index 8243e086..92d118d0 100644 --- a/src-web/hooks/useDeleteWorkspace.tsx +++ b/src-web/hooks/useDeleteWorkspace.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Workspace } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { InlineCode } from '../components/core/InlineCode'; @@ -16,7 +16,7 @@ export function useDeleteWorkspace(workspace: Workspace | null) { const confirm = useConfirm(); const setWorkspaces = useSetAtom(workspacesAtom); - return useMutation({ + return useFastMutation({ mutationKey: ['delete_workspace', workspace?.id], mutationFn: async () => { const confirmed = await confirm({ diff --git a/src-web/hooks/useDuplicateFolder.ts b/src-web/hooks/useDuplicateFolder.ts index 5df8399c..f1f6cef2 100644 --- a/src-web/hooks/useDuplicateFolder.ts +++ b/src-web/hooks/useDuplicateFolder.ts @@ -1,9 +1,9 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; export function useDuplicateFolder(id: string) { - return useMutation({ + return useFastMutation({ mutationKey: ['duplicate_folder', id], mutationFn: () => invokeCmd('cmd_duplicate_folder', { id }), onSettled: () => trackEvent('folder', 'duplicate'), diff --git a/src-web/hooks/useDuplicateGrpcRequest.ts b/src-web/hooks/useDuplicateGrpcRequest.ts index 26b974bb..8155987c 100644 --- a/src-web/hooks/useDuplicateGrpcRequest.ts +++ b/src-web/hooks/useDuplicateGrpcRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcRequest } from '@yaakapp-internal/models'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; @@ -13,7 +13,7 @@ export function useDuplicateGrpcRequest({ id: string | null; navigateAfter: boolean; }) { - return useMutation({ + return useFastMutation({ mutationKey: ['duplicate_grpc_request', id], mutationFn: async () => { if (id === null) throw new Error("Can't duplicate a null grpc request"); diff --git a/src-web/hooks/useDuplicateHttpRequest.ts b/src-web/hooks/useDuplicateHttpRequest.ts index c3aa9923..b22e9634 100644 --- a/src-web/hooks/useDuplicateHttpRequest.ts +++ b/src-web/hooks/useDuplicateHttpRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpRequest } from '@yaakapp-internal/models'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; @@ -12,7 +12,7 @@ export function useDuplicateHttpRequest({ id: string | null; navigateAfter: boolean; }) { - return useMutation({ + return useFastMutation({ mutationKey: ['duplicate_http_request', id], mutationFn: async () => { if (id === null) throw new Error("Can't duplicate a null request"); diff --git a/src-web/hooks/useExportData.tsx b/src-web/hooks/useExportData.tsx index 3e3e230d..af743177 100644 --- a/src-web/hooks/useExportData.tsx +++ b/src-web/hooks/useExportData.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { useDialog } from '../components/DialogContext'; import { ExportDataDialog } from '../components/ExportDataDialog'; import { useActiveWorkspace } from './useActiveWorkspace'; @@ -13,7 +13,7 @@ export function useExportData() { const dialog = useDialog(); const toast = useToast(); - return useMutation({ + return useFastMutation({ mutationKey: ['export_data'], onError: (err: string) => { alert({ id: 'export-failed', title: 'Export Failed', body: err }); diff --git a/src-web/hooks/useMutation.ts b/src-web/hooks/useFastMutation.ts similarity index 83% rename from src-web/hooks/useMutation.ts rename to src-web/hooks/useFastMutation.ts index fde67993..ab32cf6a 100644 --- a/src-web/hooks/useMutation.ts +++ b/src-web/hooks/useFastMutation.ts @@ -1,15 +1,17 @@ import type { MutationKey } from '@tanstack/react-query'; import { useCallback } from 'react'; -export function useMutation({ +export function useFastMutation({ mutationKey, mutationFn, onSuccess, + onError, onSettled, }: { mutationKey: MutationKey; mutationFn: (vars: TVariables) => Promise; onSettled?: () => void; + onError?: (err: TError) => void; onSuccess?: (data: TData) => void; }) { const mutateAsync = useCallback( @@ -17,9 +19,11 @@ export function useMutation { alert({ diff --git a/src-web/hooks/useImportQuerystring.ts b/src-web/hooks/useImportQuerystring.ts index ef4afd39..8da24db2 100644 --- a/src-web/hooks/useImportQuerystring.ts +++ b/src-web/hooks/useImportQuerystring.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpUrlParameter } from '@yaakapp-internal/models'; import { useToast } from '../components/ToastContext'; import { pluralize } from '../lib/pluralize'; @@ -11,7 +11,7 @@ export function useImportQuerystring(requestId: string) { const toast = useToast(); const [, { focusParamsTab, forceParamsRefresh, forceUrlRefresh }] = useRequestEditor(); - return useMutation({ + return useFastMutation({ mutationKey: ['import_querystring'], mutationFn: async (url: string) => { const split = url.split(/\?(.*)/s); diff --git a/src-web/hooks/useInstallPlugin.ts b/src-web/hooks/useInstallPlugin.ts index 6bbb170d..ce14036e 100644 --- a/src-web/hooks/useInstallPlugin.ts +++ b/src-web/hooks/useInstallPlugin.ts @@ -1,9 +1,9 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; export function useInstallPlugin() { - return useMutation({ + return useFastMutation({ mutationKey: ['install_plugin'], mutationFn: async (directory: string) => { await invokeCmd('cmd_install_plugin', { directory }); diff --git a/src-web/hooks/useMoveToWorkspace.tsx b/src-web/hooks/useMoveToWorkspace.tsx index 16e090e0..e88fec22 100644 --- a/src-web/hooks/useMoveToWorkspace.tsx +++ b/src-web/hooks/useMoveToWorkspace.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import React from 'react'; import { useDialog } from '../components/DialogContext'; import { MoveToWorkspaceDialog } from '../components/MoveToWorkspaceDialog'; @@ -11,7 +11,7 @@ export function useMoveToWorkspace(id: string) { const request = requests.find((r) => r.id === id); const activeWorkspace = useActiveWorkspace(); - return useMutation({ + return useFastMutation({ mutationKey: ['move_workspace', id], mutationFn: async () => { if (request == null || activeWorkspace == null) return; diff --git a/src-web/hooks/useOpenSettings.tsx b/src-web/hooks/useOpenSettings.tsx index e367683f..299012a6 100644 --- a/src-web/hooks/useOpenSettings.tsx +++ b/src-web/hooks/useOpenSettings.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { SettingsTab } from '../components/Settings/Settings'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; @@ -9,7 +9,7 @@ import { useActiveWorkspace } from './useActiveWorkspace'; export function useOpenSettings(tab = SettingsTab.General) { const workspace = useActiveWorkspace(); - return useMutation({ + return useFastMutation({ mutationKey: ['open_settings'], mutationFn: async () => { if (workspace == null) return; diff --git a/src-web/hooks/useOpenWorkspace.ts b/src-web/hooks/useOpenWorkspace.ts index 5772a225..67aa3c1e 100644 --- a/src-web/hooks/useOpenWorkspace.ts +++ b/src-web/hooks/useOpenWorkspace.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { invokeCmd } from '../lib/tauri'; import { router } from '../main'; import { Route as WorkspaceRoute } from '../routes/workspaces/$workspaceId'; @@ -8,7 +8,7 @@ import { getRecentEnvironments } from './useRecentEnvironments'; import { getRecentRequests } from './useRecentRequests'; export function useOpenWorkspace() { - return useMutation({ + return useFastMutation({ mutationKey: ['open_workspace'], mutationFn: async ({ workspaceId, diff --git a/src-web/hooks/usePlugins.ts b/src-web/hooks/usePlugins.ts index c519149a..79d56116 100644 --- a/src-web/hooks/usePlugins.ts +++ b/src-web/hooks/usePlugins.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import {useMutation} from "@tanstack/react-query"; import type { Plugin } from '@yaakapp-internal/models'; import { atom, useAtomValue, useSetAtom } from 'jotai'; import { minPromiseMillis } from '../lib/minPromiseMillis'; diff --git a/src-web/hooks/useRenameRequest.tsx b/src-web/hooks/useRenameRequest.tsx index e57804d9..3e61c7a2 100644 --- a/src-web/hooks/useRenameRequest.tsx +++ b/src-web/hooks/useRenameRequest.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcRequest, HttpRequest } from '@yaakapp-internal/models'; import { InlineCode } from '../components/core/InlineCode'; import { usePrompt } from './usePrompt'; @@ -12,7 +12,8 @@ export function useRenameRequest(requestId: string | null) { const updateGrpcRequest = useUpdateAnyGrpcRequest(); const requests = useRequests(); - return useMutation({ + return useFastMutation({ + mutationKey: ['rename_request'], mutationFn: async () => { const request = requests.find((r) => r.id === requestId); if (request == null) return; diff --git a/src-web/hooks/useSaveResponse.tsx b/src-web/hooks/useSaveResponse.tsx index de794b16..00d6bd4a 100644 --- a/src-web/hooks/useSaveResponse.tsx +++ b/src-web/hooks/useSaveResponse.tsx @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { save } from '@tauri-apps/plugin-dialog'; import mime from 'mime'; import slugify from 'slugify'; @@ -12,7 +12,7 @@ import { invokeCmd } from '../lib/tauri'; export function useSaveResponse(response: HttpResponse) { const toast = useToast(); - return useMutation({ + return useFastMutation({ mutationKey: ['save_response', response.id], mutationFn: async () => { const request = await getHttpRequest(response.requestId); diff --git a/src-web/hooks/useSendAnyHttpRequest.ts b/src-web/hooks/useSendAnyHttpRequest.ts index 8d79cb5b..d61fd490 100644 --- a/src-web/hooks/useSendAnyHttpRequest.ts +++ b/src-web/hooks/useSendAnyHttpRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpResponse } from '@yaakapp-internal/models'; import { trackEvent } from '../lib/analytics'; import { getHttpRequest } from '../lib/store'; @@ -11,7 +11,7 @@ export function useSendAnyHttpRequest() { const alert = useAlert(); const [environment] = useActiveEnvironment(); const [activeCookieJar] = useActiveCookieJar(); - return useMutation({ + return useFastMutation({ mutationKey: ['send_any_request'], mutationFn: async (id) => { const request = await getHttpRequest(id); diff --git a/src-web/hooks/useSendManyRequests.ts b/src-web/hooks/useSendManyRequests.ts index d451ccb8..88ab150d 100644 --- a/src-web/hooks/useSendManyRequests.ts +++ b/src-web/hooks/useSendManyRequests.ts @@ -1,9 +1,9 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import { useSendAnyHttpRequest } from './useSendAnyHttpRequest'; export function useSendManyRequests() { const sendAnyRequest = useSendAnyHttpRequest(); - return useMutation({ + return useFastMutation({ mutationKey: ['send_many_requests'], mutationFn: async (requestIds: string[]) => { for (const id of requestIds) { diff --git a/src-web/hooks/useUninstallPlugin.ts b/src-web/hooks/useUninstallPlugin.ts index 65689bd3..c26371a8 100644 --- a/src-web/hooks/useUninstallPlugin.ts +++ b/src-web/hooks/useUninstallPlugin.ts @@ -1,10 +1,10 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Plugin } from '@yaakapp-internal/models'; import { trackEvent } from '../lib/analytics'; import { invokeCmd } from '../lib/tauri'; export function useUninstallPlugin(pluginId: string) { - return useMutation({ + return useFastMutation({ mutationKey: ['uninstall_plugin'], mutationFn: async () => { return invokeCmd('cmd_uninstall_plugin', { pluginId }); diff --git a/src-web/hooks/useUpdateAnyFolder.ts b/src-web/hooks/useUpdateAnyFolder.ts index 8b186e36..66c0b9c3 100644 --- a/src-web/hooks/useUpdateAnyFolder.ts +++ b/src-web/hooks/useUpdateAnyFolder.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Folder } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai/index"; import { getFolder } from '../lib/store'; @@ -8,7 +8,7 @@ import {updateModelList} from "./useSyncModelStores"; export function useUpdateAnyFolder() { const setFolders = useSetAtom(foldersAtom); - return useMutation Folder }>({ + return useFastMutation Folder }>({ mutationKey: ['update_any_folder'], mutationFn: async ({ id, update }) => { const folder = await getFolder(id); diff --git a/src-web/hooks/useUpdateAnyGrpcRequest.ts b/src-web/hooks/useUpdateAnyGrpcRequest.ts index 216383e0..39253e8a 100644 --- a/src-web/hooks/useUpdateAnyGrpcRequest.ts +++ b/src-web/hooks/useUpdateAnyGrpcRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { GrpcRequest } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { getGrpcRequest } from '../lib/store'; @@ -8,7 +8,7 @@ import { updateModelList } from './useSyncModelStores'; export function useUpdateAnyGrpcRequest() { const setGrpcRequests = useSetAtom(grpcRequestsAtom); - return useMutation< + return useFastMutation< GrpcRequest, unknown, { id: string; update: Partial | ((r: GrpcRequest) => GrpcRequest) } diff --git a/src-web/hooks/useUpdateAnyHttpRequest.ts b/src-web/hooks/useUpdateAnyHttpRequest.ts index 2775ec18..31c6c0ef 100644 --- a/src-web/hooks/useUpdateAnyHttpRequest.ts +++ b/src-web/hooks/useUpdateAnyHttpRequest.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { HttpRequest } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai/index"; import { getHttpRequest } from '../lib/store'; @@ -8,7 +8,7 @@ import {updateModelList} from "./useSyncModelStores"; export function useUpdateAnyHttpRequest() { const setHttpRequests = useSetAtom(httpRequestsAtom); - return useMutation< + return useFastMutation< HttpRequest, unknown, { id: string; update: Partial | ((r: HttpRequest) => HttpRequest) } diff --git a/src-web/hooks/useUpdateCookieJar.ts b/src-web/hooks/useUpdateCookieJar.ts index d5baded5..d15b99b6 100644 --- a/src-web/hooks/useUpdateCookieJar.ts +++ b/src-web/hooks/useUpdateCookieJar.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { CookieJar } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { getCookieJar } from '../lib/store'; @@ -8,7 +8,7 @@ import { updateModelList } from './useSyncModelStores'; export function useUpdateCookieJar(id: string | null) { const setCookieJars = useSetAtom(cookieJarsAtom); - return useMutation | ((j: CookieJar) => CookieJar)>({ + return useFastMutation | ((j: CookieJar) => CookieJar)>({ mutationKey: ['update_cookie_jar', id], mutationFn: async (v) => { const cookieJar = await getCookieJar(id); diff --git a/src-web/hooks/useUpdateEnvironment.ts b/src-web/hooks/useUpdateEnvironment.ts index f953e15d..a1e38cb1 100644 --- a/src-web/hooks/useUpdateEnvironment.ts +++ b/src-web/hooks/useUpdateEnvironment.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Environment } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { getEnvironment } from '../lib/store'; @@ -8,7 +8,7 @@ import {updateModelList} from "./useSyncModelStores"; export function useUpdateEnvironment(id: string | null) { const setEnvironments = useSetAtom(environmentsAtom); - return useMutation< + return useFastMutation< Environment, unknown, Partial | ((r: Environment) => Environment) diff --git a/src-web/hooks/useUpdateSettings.ts b/src-web/hooks/useUpdateSettings.ts index bb9fe6dd..b8d888ec 100644 --- a/src-web/hooks/useUpdateSettings.ts +++ b/src-web/hooks/useUpdateSettings.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Settings } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai'; import { getSettings } from '../lib/store'; @@ -7,7 +7,7 @@ import { settingsAtom } from './useSettings'; export function useUpdateSettings() { const setSettings = useSetAtom(settingsAtom); - return useMutation>({ + return useFastMutation>({ mutationKey: ['update_settings'], mutationFn: async (patch) => { const settings = await getSettings(); diff --git a/src-web/hooks/useUpdateWorkspace.ts b/src-web/hooks/useUpdateWorkspace.ts index eae1cc5e..aed13cc2 100644 --- a/src-web/hooks/useUpdateWorkspace.ts +++ b/src-web/hooks/useUpdateWorkspace.ts @@ -1,4 +1,4 @@ -import { useMutation } from './useMutation'; +import { useFastMutation } from './useFastMutation'; import type { Workspace } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai/index"; import { getWorkspace } from '../lib/store'; @@ -8,7 +8,7 @@ import {workspacesAtom} from "./useWorkspaces"; export function useUpdateWorkspace(id: string | null) { const setWorkspaces = useSetAtom(workspacesAtom); - return useMutation | ((w: Workspace) => Workspace)>({ + return useFastMutation | ((w: Workspace) => Workspace)>({ mutationKey: ['update_workspace', id], mutationFn: async (v) => { const workspace = await getWorkspace(id);