import type { SettingsTab } from '../components/Settings/Settings'; import { activeWorkspaceIdAtom } from '../hooks/useActiveWorkspace'; import { createFastMutation } from '../hooks/useFastMutation'; import { jotaiStore } from '../lib/jotai'; import { router } from '../lib/router'; import { invokeCmd } from '../lib/tauri'; // Allow tab with optional subtab (e.g., "plugins:installed") type SettingsTabWithSubtab = SettingsTab | `${SettingsTab}:${string}` | null; export const openSettings = createFastMutation({ mutationKey: ['open_settings'], mutationFn: async (tab) => { const workspaceId = jotaiStore.get(activeWorkspaceIdAtom); if (workspaceId == null) return; const location = router.buildLocation({ to: '/workspaces/$workspaceId/settings', params: { workspaceId }, search: { tab: (tab ?? undefined) as SettingsTab | undefined }, }); await invokeCmd('cmd_new_child_window', { url: location.href, label: 'settings', title: 'Yaak Settings', innerSize: [750, 600], }); }, });