import { patchModel, workspaceMetasAtom, workspacesAtom } from '@yaakapp-internal/models'; import { useAtomValue } from 'jotai'; import { useAuthTab } from '../hooks/useAuthTab'; import { useHeadersTab } from '../hooks/useHeadersTab'; import { useInheritedHeaders } from '../hooks/useInheritedHeaders'; import { deleteModelWithConfirm } from '../lib/deleteModelWithConfirm'; import { router } from '../lib/router'; import { CopyIconButton } from './CopyIconButton'; import { Banner } from './core/Banner'; import { Button } from './core/Button'; import { CountBadge } from './core/CountBadge'; import { InlineCode } from './core/InlineCode'; import { PlainInput } from './core/PlainInput'; import { HStack, VStack } from './core/Stacks'; import { TabContent, Tabs } from './core/Tabs/Tabs'; import { DnsOverridesEditor } from './DnsOverridesEditor'; import { HeadersEditor } from './HeadersEditor'; import { HttpAuthenticationEditor } from './HttpAuthenticationEditor'; import { MarkdownEditor } from './MarkdownEditor'; import { SyncToFilesystemSetting } from './SyncToFilesystemSetting'; import { WorkspaceEncryptionSetting } from './WorkspaceEncryptionSetting'; interface Props { workspaceId: string; hide: () => void; tab?: WorkspaceSettingsTab; } const TAB_AUTH = 'auth'; const TAB_DATA = 'data'; const TAB_DNS = 'dns'; const TAB_HEADERS = 'headers'; const TAB_GENERAL = 'general'; export type WorkspaceSettingsTab = | typeof TAB_AUTH | typeof TAB_DNS | typeof TAB_HEADERS | typeof TAB_GENERAL | typeof TAB_DATA; const DEFAULT_TAB: WorkspaceSettingsTab = TAB_GENERAL; export function WorkspaceSettingsDialog({ workspaceId, hide, tab }: Props) { const workspace = useAtomValue(workspacesAtom).find((w) => w.id === workspaceId); const workspaceMeta = useAtomValue(workspaceMetasAtom).find((m) => m.workspaceId === workspaceId); const authTab = useAuthTab(TAB_AUTH, workspace ?? null); const headersTab = useHeadersTab(TAB_HEADERS, workspace ?? null); const inheritedHeaders = useInheritedHeaders(workspace ?? null); if (workspace == null) { return ( Workspace not found ); } if (workspaceMeta == null) return ( WorkspaceMeta not found for workspace ); return ( 0 ? ( ) : null, }, ]} storageKey="workspace_settings_tabs" > patchModel(workspace, { headers })} stateKey={`headers.${workspace.id}`} />
patchModel(workspace, { name })} /> patchModel(workspace, { description })} heightMode="auto" /> {workspaceId}
patchModel(workspaceMeta, { settingSyncDir: filePath })} />
); }