diff --git a/src-web/components/AppRouter.tsx b/src-web/components/AppRouter.tsx index 2ee984e2..d65f75b9 100644 --- a/src-web/components/AppRouter.tsx +++ b/src-web/components/AppRouter.tsx @@ -1,10 +1,6 @@ import { lazy } from 'react'; import { createBrowserRouter, Navigate, RouterProvider, useParams } from 'react-router-dom'; import { routePaths, useAppRoutes } from '../hooks/useAppRoutes'; -import { useGenerateThemeCss } from '../hooks/useGenerateThemeCss'; -import { useSyncFontSizeSetting } from '../hooks/useSyncFontSizeSetting'; -import { useSyncModelStores } from '../hooks/useSyncModelStores'; -import { useSyncZoomSetting } from '../hooks/useSyncZoomSetting'; import { DefaultLayout } from './DefaultLayout'; import { RedirectToLatestWorkspace } from './RedirectToLatestWorkspace'; import RouteError from './RouteError'; @@ -54,12 +50,6 @@ const router = createBrowserRouter([ ]); export function AppRouter() { - // Add some global hooks that should remain persistent - useSyncModelStores(); - useSyncZoomSetting(); - useSyncFontSizeSetting(); - useGenerateThemeCss(); - return ; } diff --git a/src-web/components/GlobalHooks.tsx b/src-web/components/GlobalHooks.tsx index 94aec54d..73a535db 100644 --- a/src-web/components/GlobalHooks.tsx +++ b/src-web/components/GlobalHooks.tsx @@ -2,6 +2,7 @@ import { emit } from '@tauri-apps/api/event'; import type { PromptTextRequest, PromptTextResponse } from '@yaakapp-internal/plugin'; import { useEnsureActiveCookieJar } from '../hooks/useActiveCookieJar'; import { useActiveWorkspaceChangedToast } from '../hooks/useActiveWorkspaceChangedToast'; +import {useGenerateThemeCss} from "../hooks/useGenerateThemeCss"; import { useHotKey } from '../hooks/useHotKey'; import { useListenToTauriEvent } from '../hooks/useListenToTauriEvent'; import { useNotificationToast } from '../hooks/useNotificationToast'; @@ -10,10 +11,18 @@ import { useRecentCookieJars } from '../hooks/useRecentCookieJars'; import { useRecentEnvironments } from '../hooks/useRecentEnvironments'; import { useRecentRequests } from '../hooks/useRecentRequests'; import { useRecentWorkspaces } from '../hooks/useRecentWorkspaces'; +import {useSyncFontSizeSetting} from "../hooks/useSyncFontSizeSetting"; +import {useSyncModelStores} from "../hooks/useSyncModelStores"; import { useSyncWorkspaceChildModels } from '../hooks/useSyncWorkspaceChildModels'; +import {useSyncZoomSetting} from "../hooks/useSyncZoomSetting"; import { useToggleCommandPalette } from '../hooks/useToggleCommandPalette'; export function GlobalHooks() { + useSyncModelStores(); + useSyncZoomSetting(); + useSyncFontSizeSetting(); + useGenerateThemeCss(); + // Include here so they always update, even if no component references them useRecentWorkspaces(); useRecentEnvironments(); diff --git a/src-web/hooks/useSyncModelStores.ts b/src-web/hooks/useSyncModelStores.ts index 237ffb5d..5ff952a8 100644 --- a/src-web/hooks/useSyncModelStores.ts +++ b/src-web/hooks/useSyncModelStores.ts @@ -4,6 +4,7 @@ import type { AnyModel } from '@yaakapp-internal/models'; import { useSetAtom } from 'jotai/index'; import { extractKeyValue } from '../lib/keyValueStore'; import { modelsEq } from '../lib/model_util'; +import {useActiveWorkspace} from "./useActiveWorkspace"; import { cookieJarsAtom } from './useCookieJars'; import { environmentsAtom } from './useEnvironments'; import { foldersAtom } from './useFolders'; @@ -25,6 +26,7 @@ export interface ModelPayload { } export function useSyncModelStores() { + const activeWorkspace = useActiveWorkspace(); const queryClient = useQueryClient(); const { wasUpdatedExternally } = useRequestUpdateKey(null); @@ -48,10 +50,17 @@ export function useSyncModelStores() { ? keyValueQueryKey(model) : null; + // TODO: Move this logic to useRequestEditor() hook if (model.model === 'http_request' && windowLabel !== getCurrentWebviewWindow().label) { wasUpdatedExternally(model.id); } + // Only sync models that belong to this workspace, if a workspace ID is present + if ('workspaceId' in model && model.workspaceId !== activeWorkspace?.id) { + return; + } + + // Mark these models as DESC instead of ASC const pushToFront = (['http_response', 'grpc_connection'] as AnyModel['model'][]).includes( model.model, );