import { Text, View } from "react-native"; import { FileText } from "lucide-react-native"; import invariant from "tiny-invariant"; import { FilePane } from "@/components/file-pane"; import { usePaneContext } from "@/panels/pane-context"; import type { PanelRegistration } from "@/panels/panel-registry"; import { useWorkspaceExecutionAuthority } from "@/stores/session-store-hooks"; function useFilePanelDescriptor(target: { kind: "file"; path: string }) { const fileName = target.path.split("/").filter(Boolean).pop() ?? target.path; return { label: fileName, subtitle: target.path, titleState: "ready" as const, icon: FileText, statusBucket: null, }; } function FilePanel() { const { serverId, workspaceId, target } = usePaneContext(); const workspaceAuthority = useWorkspaceExecutionAuthority(serverId, workspaceId); const workspaceDirectory = workspaceAuthority?.ok ? workspaceAuthority.authority.workspaceDirectory : null; invariant(target.kind === "file", "FilePanel requires file target"); if (!workspaceDirectory) { return ( Workspace execution directory not found. ); } return ; } export const filePanelRegistration: PanelRegistration<"file"> = { kind: "file", component: FilePanel, useDescriptor: useFilePanelDescriptor, };