"use client";
import { FileManagerBackgroundContextMenu, FileManagerContextMenu } from "@/modules/files/components/menus/file-manager-overlays";
import {
CreateEntryDialog,
EmptyTrashConfirmDialog,
FileInfoDialogOverlay,
PasteConflictDialog,
RenameEntryDialog,
UploadProgressDialog,
} from "@/modules/files/components/dialogs/file-manager-dialogs";
import { NetworkStorageDialog } from "@/modules/files/components/dialogs/network-storage-dialog";
import { GoogleDriveDialog } from "@/modules/files/components/dialogs/google-drive-dialog";
import { UsbStorageDialog } from "@/modules/files/components/dialogs/usb-storage-dialog";
import type { FileInfoResponse } from "@/lib/shared/contracts/files";
import type { FileEntry } from "@/modules/files/components/file-manager-presenters";
import type {
ClipboardState,
CreateEntryDialogState,
PasteConflictState,
RenameDialogState,
} from "@/modules/files/components/manager/file-manager-state";
type FileManagerDialogLayerProps = {
clipboardState: ClipboardState | null;
contextShare:
| {
id: string;
}
| undefined;
createEntryDialog: CreateEntryDialogState | null;
fileInfoDialog: FileInfoResponse | null;
isTrashView: boolean;
pasteConflict: PasteConflictState | null;
pastePending: boolean;
renameDialog: RenameDialogState | null;
showBackgroundContextMenu: { x: number; y: number } | null;
showContextMenu: { x: number; y: number; entry: FileEntry } | null;
showEmptyTrashConfirm: boolean;
showNetworkDialog: boolean;
showGoogleDriveDialog: boolean;
showUsbDialog: boolean;
trashItemCount: number;
uploadPending: boolean;
uploadProgress: { loaded: number; total: number } | null;
unzipPending: boolean;
createPending: boolean;
renamePending: boolean;
onCloseContextMenu: () => void;
onCloseBackgroundContextMenu: () => void;
onOpenCreateEntryDialog: (kind: "file" | "folder") => void;
onCloseCreateEntryDialog: () => void;
onChangeCreateEntryDialog: (value: string) => void;
onSubmitCreateEntryDialog: () => void;
onCloseRenameDialog: () => void;
onChangeRenameDialog: (value: string) => void;
onSubmitRenameDialog: () => void;
onCancelEmptyTrash: () => void;
onCancelUpload: () => void;
onConfirmEmptyTrash: () => void;
onCloseFileInfoDialog: () => void;
onConflictResolution: (choice: "replace" | "keep-both" | "skip" | "skip-all") => void;
onCloseNetworkDialog: () => void;
onCloseGoogleDriveDialog: () => void;
onCloseUsbDialog: () => void;
onNavigateToNetwork: () => void;
onNavigateToUsb: (path: string[]) => void;
onCopyContextEntry: () => void;
onCopyContextPath: () => void;
onCutContextEntry: () => void;
onDeleteContextEntry: () => void;
onDownloadContextEntry: () => void;
onUnzipContextEntry: () => void;
onGetInfoContextEntry: () => void;
onMoveContextEntryToTrash: () => void;
onOpenContextEntry: () => void;
onPasteIntoContextEntry: () => void;
onPasteIntoBackground: () => void;
onRenameContextEntry: () => void;
onRestoreContextEntry: () => void;
onToggleContextShare: () => void;
onToggleContextStar: () => void;
};
export function FileManagerDialogLayer({
clipboardState,
contextShare,
createEntryDialog,
createPending,
fileInfoDialog,
isTrashView,
onCancelEmptyTrash,
onCancelUpload,
onChangeCreateEntryDialog,
onChangeRenameDialog,
onCloseBackgroundContextMenu,
onCloseContextMenu,
onCloseCreateEntryDialog,
onCloseFileInfoDialog,
onCloseNetworkDialog,
onCloseGoogleDriveDialog,
onCloseUsbDialog,
onCloseRenameDialog,
onConfirmEmptyTrash,
onConflictResolution,
onCopyContextEntry,
onCopyContextPath,
onCutContextEntry,
onDeleteContextEntry,
onDownloadContextEntry,
onUnzipContextEntry,
onGetInfoContextEntry,
onMoveContextEntryToTrash,
onNavigateToNetwork,
onNavigateToUsb,
onOpenContextEntry,
onOpenCreateEntryDialog,
onPasteIntoBackground,
onPasteIntoContextEntry,
onRenameContextEntry,
onRestoreContextEntry,
onSubmitCreateEntryDialog,
onSubmitRenameDialog,
onToggleContextShare,
onToggleContextStar,
pasteConflict,
pastePending,
renameDialog,
renamePending,
showBackgroundContextMenu,
showContextMenu,
showEmptyTrashConfirm,
showNetworkDialog,
showGoogleDriveDialog,
showUsbDialog,
trashItemCount,
uploadPending,
uploadProgress,
unzipPending,
}: FileManagerDialogLayerProps) {
return (
<>
{showContextMenu ? (
) : null}
{showBackgroundContextMenu ? (
onOpenCreateEntryDialog("folder")}
onNewFile={() => onOpenCreateEntryDialog("file")}
onPaste={onPasteIntoBackground}
/>
) : null}
{createEntryDialog ? (
) : null}
{renameDialog ? (
) : null}
{showEmptyTrashConfirm ? (
) : null}
{fileInfoDialog ? (
) : null}
{uploadPending || uploadProgress ? (
) : unzipPending ? (
) : null}
{pasteConflict ? (
onConflictResolution("replace")}
onKeepBoth={() => onConflictResolution("keep-both")}
onSkip={() => onConflictResolution("skip")}
onSkipAll={() => onConflictResolution("skip-all")}
/>
) : null}
{ onNavigateToUsb(path); onCloseUsbDialog(); }}
/>
>
);
}