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 })} />
); }