From 4c92470940612597a185a9af6324f6e251aced54 Mon Sep 17 00:00:00 2001 From: Precious Oritsedere Date: Fri, 11 Sep 2026 13:38:45 +0100 Subject: [PATCH 1/4] rename copy dropdown --- app/components/FileItemMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/FileItemMenu.tsx b/app/components/FileItemMenu.tsx index 0c82c7c..a738125 100644 --- a/app/components/FileItemMenu.tsx +++ b/app/components/FileItemMenu.tsx @@ -84,7 +84,7 @@ export default function FileItemMenu({ run(onCopy)}> - Copy + Make a Copy run(onShare)}> From 60a7ebf0de0c8613ff2a47c22d96938a184a3bdf Mon Sep 17 00:00:00 2001 From: Precious Oritsedere Date: Fri, 11 Sep 2026 13:42:08 +0100 Subject: [PATCH 2/4] Hide Make a copy on folders in the context menu --- .../file-manager/FileManagerContent.tsx | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/components/file-manager/FileManagerContent.tsx b/app/components/file-manager/FileManagerContent.tsx index 7289996..8c11e8c 100644 --- a/app/components/file-manager/FileManagerContent.tsx +++ b/app/components/file-manager/FileManagerContent.tsx @@ -331,14 +331,6 @@ export default function FileManagerContent() { dispatchFileAction({ type: "download", file }); }, }, - { - label: "Copy", - icon: Copy, - onClick: () => { - closeContextMenu(); - dispatchFileAction({ type: "copy", file }); - }, - }, { label: "Share", icon: Share2, @@ -360,6 +352,17 @@ export default function FileManagerContent() { }); } + if (file.type === "file") { + actions.push({ + label: "Make a Copy", + icon: Copy, + onClick: () => { + closeContextMenu(); + dispatchFileAction({ type: "copy", file }); + }, + }); + } + actions.push({ label: "Delete", icon: Trash2, From 88bba89aa8250608735cc1509433cb7ab58c247f Mon Sep 17 00:00:00 2001 From: Precious Oritsedere Date: Fri, 11 Sep 2026 13:45:38 +0100 Subject: [PATCH 3/4] Hide Make a copy on folders in the item menu --- app/components/FileItemMenu.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/components/FileItemMenu.tsx b/app/components/FileItemMenu.tsx index a738125..e2a48f5 100644 --- a/app/components/FileItemMenu.tsx +++ b/app/components/FileItemMenu.tsx @@ -82,10 +82,12 @@ export default function FileItemMenu({ Download - run(onCopy)}> - - Make a Copy - + {file.type === "file" && ( + run(onCopy)}> + + Make a Copy + + )} run(onShare)}> Share From 20ddc9b3b041f6dd852b5b3df72ad96e1fbabaff Mon Sep 17 00:00:00 2001 From: Precious Oritsedere Date: Fri, 11 Sep 2026 13:47:46 +0100 Subject: [PATCH 4/4] Guard copy so folders cannot be copied --- app/components/file-manager/hooks/useFileOperations.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/components/file-manager/hooks/useFileOperations.ts b/app/components/file-manager/hooks/useFileOperations.ts index 37f9bb8..5e9c1f1 100644 --- a/app/components/file-manager/hooks/useFileOperations.ts +++ b/app/components/file-manager/hooks/useFileOperations.ts @@ -7,7 +7,6 @@ import type { AccessLevel } from "../../ShareDialog"; import { getAuthenticatedSession, copyFileResource, - copyFolderResource, downloadFile, downloadFolderAsZip, deleteFileResource, @@ -91,7 +90,7 @@ export function useFileOperations({ const copyFile = useCallback( async (file: FileItemData) => { - if (!file) { + if (!file || file.type === "folder") { return; } @@ -99,11 +98,7 @@ export function useFileOperations({ `Copying "${file.name}"...`, async () => { const { fetch: fetchFn } = getAuthenticatedSession(); - if (file.type === "folder") { - await copyFolderResource(file, fetchFn); - } else { - await copyFileResource(file, fetchFn); - } + await copyFileResource(file, fetchFn); }, { successMessage: `Copied "${file.name}"`,