feat(MediaManager, MediaBrowser): add file existence check before upload to prevent overwriting

This commit is contained in:
Jaime Idolpx 2026-06-09 15:58:04 -04:00
parent c0d45e33f0
commit e0ac2549c6
2 changed files with 11 additions and 2 deletions

View File

@ -14,6 +14,7 @@ import {
import {
createFolder,
deletePath,
fileExists,
humanFileSize,
joinPath,
listDirectory,
@ -99,7 +100,11 @@ export default function MediaBrowser({ currentPath, onSelect, onClose }: MediaBr
const handleUpload = async (file: File) => {
if (!path) return;
try { await putFileContents(joinPath(path, file.name), await file.arrayBuffer()); toast.success(`Uploaded ${file.name}`); void load(path); }
const target = joinPath(path, file.name);
if (await fileExists(target)) {
if (!window.confirm(`"${file.name}" already exists. Overwrite?`)) return;
}
try { await putFileContents(target, await file.arrayBuffer()); toast.success(`Uploaded ${file.name}`); void load(path); }
catch (e: any) { toast.error(`Failed to upload ${file.name}: ${e?.message ?? e}`); }
};

View File

@ -876,8 +876,12 @@ export default function MediaManager({ initialPath = '/', rootPath, title, confi
// ── Upload ───────────────────────────────────────────────────────────────
const handleUpload = async (file: File) => {
const target = joinPath(path, file.name);
if (await fileExists(target)) {
if (!window.confirm(`"${file.name}" already exists. Overwrite?`)) return;
}
try {
await putFileContents(joinPath(path, file.name), await file.arrayBuffer());
await putFileContents(target, await file.arrayBuffer());
toast.success(`Uploaded ${file.name}`);
void load(path);
} catch (e: any) { toast.error(`Upload failed for ${file.name}: ${e?.message ?? e}`); }