import type { FileItem, SSHHost } from "@/types/index"; import { TOTPDialog } from "@/ssh/dialogs/TOTPDialog.tsx"; import { SSHAuthDialog } from "@/ssh/dialogs/SSHAuthDialog.tsx"; import { WarpgateDialog } from "@/ssh/dialogs/WarpgateDialog.tsx"; 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; warpgateRequired: boolean; warpgateUrl: string; warpgateSecurityKey: string; handleWarpgateContinue: () => void | Promise; handleWarpgateCancel: () => void; handleWarpgateOpenUrl: () => 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, warpgateRequired, warpgateUrl, warpgateSecurityKey, handleWarpgateContinue, handleWarpgateCancel, handleWarpgateOpenUrl, 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} /> ); }