From acc07780a7750904a6b00bb49ae26bc5cf252dfa Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 10 May 2024 09:19:29 -0700 Subject: [PATCH] Some fixes after upgrading react-query --- src-tauri/src/lib.rs | 3 +++ src-web/components/App.tsx | 1 - src-web/components/GrpcConnectionLayout.tsx | 2 +- src-web/components/GrpcProtoSelection.tsx | 3 +-- src-web/components/SettingsDialog.tsx | 3 ++- src-web/hooks/useAppInfo.ts | 21 ++++++++++++++------- src-web/hooks/useCreateFolder.ts | 4 +++- src-web/hooks/useDeleteFolder.tsx | 4 ++-- src-web/hooks/useDeleteWorkspace.tsx | 2 +- src-web/hooks/useGrpc.ts | 2 +- src-web/hooks/useWorkspaces.ts | 8 ++++++-- vite.config.ts | 2 +- 12 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 440f80b9..d6c4e5d4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -91,16 +91,19 @@ struct AppMetaData { version: String, name: String, app_data_dir: String, + app_log_dir: String, } #[tauri::command] async fn cmd_metadata(app_handle: AppHandle) -> Result { let app_data_dir = app_handle.path().app_data_dir().unwrap(); + let app_log_dir = app_handle.path().app_log_dir().unwrap(); return Ok(AppMetaData { is_dev: is_dev(), version: app_handle.package_info().version.to_string(), name: app_handle.package_info().name.to_string(), app_data_dir: app_data_dir.to_string_lossy().to_string(), + app_log_dir: app_log_dir.to_string_lossy().to_string(), }); } diff --git a/src-web/components/App.tsx b/src-web/components/App.tsx index 86678b48..5f1f0369 100644 --- a/src-web/components/App.tsx +++ b/src-web/components/App.tsx @@ -7,7 +7,6 @@ import { HelmetProvider } from 'react-helmet-async'; import { AppRouter } from './AppRouter'; const queryClient = new QueryClient({ - logger: undefined, defaultOptions: { queries: { retry: false, diff --git a/src-web/components/GrpcConnectionLayout.tsx b/src-web/components/GrpcConnectionLayout.tsx index 4ad494d8..a4b563ea 100644 --- a/src-web/components/GrpcConnectionLayout.tsx +++ b/src-web/components/GrpcConnectionLayout.tsx @@ -94,7 +94,7 @@ export function GrpcConnectionLayout({ style }: Props) { /> )} secondSlot={({ style }) => - !grpc.go.isLoading && ( + !grpc.go.isPending && (
0 && (

- Found services + Found services{' '} {services?.slice(0, 5).map((s, i) => { return ( @@ -124,7 +124,6 @@ export function GrpcProtoSelection({ requestId }: Props) { className="ml-auto opacity-30 transition-opacity group-hover:opacity-100" onClick={async () => { await protoFilesKv.set(protoFiles.filter((p) => p !== f)); - grpc.reflect.remove(); }} /> diff --git a/src-web/components/SettingsDialog.tsx b/src-web/components/SettingsDialog.tsx index 425d35ff..81c84c63 100644 --- a/src-web/components/SettingsDialog.tsx +++ b/src-web/components/SettingsDialog.tsx @@ -81,7 +81,7 @@ export const SettingsDialog = () => { size="sm" title="Check for updates" icon="refresh" - spin={checkForUpdates.isLoading} + spin={checkForUpdates.isPending} onClick={() => checkForUpdates.mutateAsync()} />

@@ -135,6 +135,7 @@ export const SettingsDialog = () => { + ); diff --git a/src-web/hooks/useAppInfo.ts b/src-web/hooks/useAppInfo.ts index 0b9db9f8..b22b7c1b 100644 --- a/src-web/hooks/useAppInfo.ts +++ b/src-web/hooks/useAppInfo.ts @@ -1,13 +1,20 @@ import { useQuery } from '@tanstack/react-query'; import { invoke } from '@tauri-apps/api/core'; +export interface AppInfo { + isDev: boolean; + version: string; + name: string; + appDataDir: string; + appLogDir: string; +} + export function useAppInfo() { - return useQuery(['appInfo'], async () => { - return (await invoke('cmd_metadata')) as { - isDev: boolean; - version: string; - name: string; - appDataDir: string; - }; + return useQuery({ + queryKey: ['appInfo'], + queryFn: async () => { + const metadata = await invoke('cmd_metadata'); + return metadata as AppInfo; + }, }); } diff --git a/src-web/hooks/useCreateFolder.ts b/src-web/hooks/useCreateFolder.ts index 64c00c37..9a6735d4 100644 --- a/src-web/hooks/useCreateFolder.ts +++ b/src-web/hooks/useCreateFolder.ts @@ -35,7 +35,9 @@ export function useCreateFolder() { }, onSettled: () => trackEvent('folder', 'create'), onSuccess: async (request) => { - await queryClient.invalidateQueries(foldersQueryKey({ workspaceId: request.workspaceId })); + await queryClient.invalidateQueries({ + queryKey: foldersQueryKey({ workspaceId: request.workspaceId }), + }); }, }); } diff --git a/src-web/hooks/useDeleteFolder.tsx b/src-web/hooks/useDeleteFolder.tsx index aa8409be..51333d6f 100644 --- a/src-web/hooks/useDeleteFolder.tsx +++ b/src-web/hooks/useDeleteFolder.tsx @@ -36,8 +36,8 @@ export function useDeleteFolder(id: string | null) { const { workspaceId } = folder; // Nesting makes it hard to clean things up, so just clear everything that could have been deleted - await queryClient.invalidateQueries(httpRequestsQueryKey({ workspaceId })); - await queryClient.invalidateQueries(foldersQueryKey({ workspaceId })); + await queryClient.invalidateQueries({ queryKey: httpRequestsQueryKey({ workspaceId }) }); + await queryClient.invalidateQueries({ queryKey: foldersQueryKey({ workspaceId }) }); }, }); } diff --git a/src-web/hooks/useDeleteWorkspace.tsx b/src-web/hooks/useDeleteWorkspace.tsx index 89c3d1b1..5ce8e039 100644 --- a/src-web/hooks/useDeleteWorkspace.tsx +++ b/src-web/hooks/useDeleteWorkspace.tsx @@ -44,7 +44,7 @@ export function useDeleteWorkspace(workspace: Workspace | null) { // Also clean up other things that may have been deleted queryClient.setQueryData(httpRequestsQueryKey({ workspaceId }), []); - await queryClient.invalidateQueries(httpRequestsQueryKey({ workspaceId })); + await queryClient.invalidateQueries({ queryKey: httpRequestsQueryKey({ workspaceId }) }); }, }); } diff --git a/src-web/hooks/useGrpc.ts b/src-web/hooks/useGrpc.ts index 925456a6..250d20dc 100644 --- a/src-web/hooks/useGrpc.ts +++ b/src-web/hooks/useGrpc.ts @@ -46,7 +46,7 @@ export function useGrpc( const debouncedUrl = useDebouncedValue(req?.url ?? 'n/a', 500); const reflect = useQuery({ enabled: req != null, - queryKey: ['grpc_reflect', req?.id ?? 'n/a', debouncedUrl], + queryKey: ['grpc_reflect', req?.id ?? 'n/a', debouncedUrl, protoFiles], refetchOnWindowFocus: false, queryFn: async () => { return (await minPromiseMillis( diff --git a/src-web/hooks/useWorkspaces.ts b/src-web/hooks/useWorkspaces.ts index 4f28bc55..13fddddf 100644 --- a/src-web/hooks/useWorkspaces.ts +++ b/src-web/hooks/useWorkspaces.ts @@ -9,8 +9,12 @@ export function workspacesQueryKey(_?: {}) { export function useWorkspaces() { return ( - useQuery(workspacesQueryKey(), async () => { - return (await invoke('cmd_list_workspaces')) as Workspace[]; + useQuery({ + queryKey: workspacesQueryKey(), + queryFn: async () => { + const workspaces = await invoke('cmd_list_workspaces'); + return workspaces as Workspace[]; + }, }).data ?? [] ); } diff --git a/vite.config.ts b/vite.config.ts index 77eb1a42..e0ce2411 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,7 +4,7 @@ import { internalIpV4 } from 'internal-ip'; import svgr from 'vite-plugin-svgr'; import topLevelAwait from 'vite-plugin-top-level-await'; -const mobile = !!/android|ios/.exec(process.env.TAURI_ENV_PLATFORM); +const mobile = !!/android|ios/.exec(process.env.TAURI_ENV_PLATFORM ?? ''); // https://vitejs.dev/config/ export default defineConfig(async () => ({