import { createFastMutation } from '../hooks/useFastMutation'; import { getRecentCookieJars } from '../hooks/useRecentCookieJars'; import { getRecentEnvironments } from '../hooks/useRecentEnvironments'; import { getRecentRequests } from '../hooks/useRecentRequests'; import { router } from '../lib/router'; import { invokeCmd } from '../lib/tauri'; export const switchWorkspace = createFastMutation< void, unknown, { workspaceId: string; inNewWindow: boolean; } >({ mutationKey: ['open_workspace'], mutationFn: async ({ workspaceId, inNewWindow }) => { const environmentId = (await getRecentEnvironments(workspaceId))[0] ?? undefined; const requestId = (await getRecentRequests(workspaceId))[0] ?? undefined; const cookieJarId = (await getRecentCookieJars(workspaceId))[0] ?? undefined; const search = { environment_id: environmentId, cookie_jar_id: cookieJarId, request_id: requestId, }; if (inNewWindow) { const location = router.buildLocation({ to: '/workspaces/$workspaceId', params: { workspaceId }, search, }); await invokeCmd('cmd_new_main_window', { url: location.href }); return; } await router.navigate({ to: '/workspaces/$workspaceId', params: { workspaceId }, search, }); }, });