import type { Folder, GrpcRequest, WebsocketRequest, Workspace } from '@yaakapp-internal/models'; import type { HttpRequest } from '@yaakapp-internal/sync'; import { router } from './router.js'; /** * Setting search params using "from" on the global router instance in tanstack router does not * currently behave very well, so this is a wrapper function that gives a typesafe interface * for the same thing. */ export function setWorkspaceSearchParams( search: Partial<{ cookie_jar_id: string | null; environment_id: string | null; request_id: string | null; folder_id: string | null; }>, ) { // biome-ignore lint/suspicious/noExplicitAny: none (router as any) .navigate({ // biome-ignore lint/suspicious/noExplicitAny: none search: (prev: any) => { // console.log('Navigating to', { prev, search }); const o = { ...prev, ...search }; for (const k of Object.keys(o)) { if (o[k] == null) { delete o[k]; } } return o; }, }) .catch(console.error); } export function navigateToRequestOrFolderOrWorkspace( id: string, model: (Workspace | Folder | HttpRequest | GrpcRequest | WebsocketRequest)['model'], ) { if (model === 'workspace') { setWorkspaceSearchParams({ request_id: null, folder_id: null }); } else if (model === 'folder') { setWorkspaceSearchParams({ request_id: null, folder_id: id }); } else { setWorkspaceSearchParams({ request_id: id, folder_id: null }); } }