import type { FileItem, SSHHost } from "./host-types"; import { TOTPDialog, SSHAuthDialog, BrowserSignInDialog, } from "@termix/plugin-sdk/ui"; import { PermissionsDialog } from "./components/PermissionsDialog.tsx"; import { CompressDialog } from "./components/CompressDialog.tsx"; import { SudoPasswordDialog } from "./SudoPasswordDialog.tsx"; import type { PendingSudoOperation } from "./file-manager-types.ts"; type FileManagerDialogsProps = { compressDialogFiles: FileItem[]; setCompressDialogFiles: (files: FileItem[]) => void; handleCompress: (archiveName: string, format: string) => void | Promise; totpRequired: boolean; totpPrompt: string; handleTotpSubmit: (code: string) => void | Promise; handleTotpCancel: () => void; browserSignInRequired: boolean; browserSignInUrl: string; browserSignInCode: string; browserSignInLabel: string; handleBrowserSignInContinue: () => void | Promise; handleBrowserSignInCancel: () => void; handleBrowserSignInOpenUrl: () => void; currentHost: SSHHost | null; showAuthDialog: boolean; authDialogReason: "no_keyboard" | "auth_failed" | "timeout"; handleAuthDialogSubmit: (credentials: { password?: string; sshKey?: string; keyPassword?: string; }) => void | Promise; handleAuthDialogCancel: () => void; permissionsDialogFile: FileItem | null; setPermissionsDialogFile: (file: FileItem | null) => void; handleSavePermissions: (file: FileItem, permissions: string) => Promise; sudoDialogOpen: boolean; setSudoDialogOpen: (open: boolean) => void; setPendingSudoOperation: (operation: PendingSudoOperation | null) => void; handleSudoPasswordSubmit: (password: string) => void | Promise; }; export function FileManagerDialogs({ compressDialogFiles, setCompressDialogFiles, handleCompress, totpRequired, totpPrompt, handleTotpSubmit, handleTotpCancel, browserSignInRequired, browserSignInUrl, browserSignInCode, browserSignInLabel, handleBrowserSignInContinue, handleBrowserSignInCancel, handleBrowserSignInOpenUrl, currentHost, showAuthDialog, authDialogReason, handleAuthDialogSubmit, handleAuthDialogCancel, permissionsDialogFile, setPermissionsDialogFile, handleSavePermissions, sudoDialogOpen, setSudoDialogOpen, setPendingSudoOperation, handleSudoPasswordSubmit, }: FileManagerDialogsProps) { return ( <> 0} onOpenChange={(open) => !open && setCompressDialogFiles([])} fileNames={compressDialogFiles.map((f) => f.name)} onCompress={handleCompress} /> {currentHost && ( )} { if (!open) setPermissionsDialogFile(null); }} onSave={handleSavePermissions} /> { setSudoDialogOpen(open); if (!open) setPendingSudoOperation(null); }} onSubmit={handleSudoPasswordSubmit} /> ); }