feat: feedback verbetering 04

This commit is contained in:
kodi
2026-03-15 14:52:33 +01:00
parent 3d82699535
commit 61d0c8de41
3 changed files with 154 additions and 42 deletions
+32 -42
View File
@@ -2874,28 +2874,30 @@ async function startCopySelected() {
}
const baseDestination = paneState(destinationPane).currentPath;
setError("actions-error", "");
let successes = 0;
let failures = 0;
let firstError = null;
for (const item of selectedItems) {
const destination = defaultDestination(item.path, baseDestination);
try {
const result = await apiRequest("POST", "/api/files/copy", {
try {
let result;
if (selectedItems.length > 1) {
result = await apiRequest("POST", "/api/files/copy", {
sources: selectedItems.map((item) => item.path),
destination_base: baseDestination,
});
setStatus("Copy: operation started");
} else {
const item = selectedItems[0];
const destination = defaultDestination(item.path, baseDestination);
result = await apiRequest("POST", "/api/files/copy", {
source: item.path,
destination,
});
state.selectedTaskId = result.task_id;
await refreshTasksSnapshot();
successes += 1;
} catch (err) {
failures += 1;
if (!firstError) {
firstError = `${item.path}: ${err.message}`;
}
setStatus("Copy: started");
}
state.selectedTaskId = result.task_id;
await refreshTasksSnapshot();
} catch (err) {
setActionError("Copy", err);
return;
}
await Promise.all([loadBrowsePane("left"), loadBrowsePane("right")]);
showActionSummary("Copy", successes, failures, firstError);
}
async function startMoveSelected() {
@@ -2908,10 +2910,9 @@ async function executeMoveSelection(baseDestination) {
if (selectedItems.length === 0) {
return;
}
const allFiles = selectedItems.every((item) => item.kind === "file");
setError("actions-error", "");
if (!allFiles) {
if (selectedItems.length > 1) {
const result = await apiRequest("POST", "/api/files/move", {
sources: selectedItems.map((item) => item.path),
destination_base: baseDestination,
@@ -2920,36 +2921,25 @@ async function executeMoveSelection(baseDestination) {
await refreshTasksSnapshot();
setSelectedItem(sourcePane, null);
await Promise.all([loadBrowsePane("left"), loadBrowsePane("right")]);
setStatus("Move: batch started");
setStatus("Move: operation started");
return;
}
let successes = 0;
let failures = 0;
let firstError = null;
for (const item of selectedItems) {
const destination = defaultDestination(item.path, baseDestination);
try {
if (item.kind !== "file") {
throw new Error("Only files are supported for move");
}
const result = await apiRequest("POST", "/api/files/move", {
source: item.path,
destination,
});
state.selectedTaskId = result.task_id;
await refreshTasksSnapshot();
successes += 1;
} catch (err) {
failures += 1;
if (!firstError) {
firstError = `${item.path}: ${err.message}`;
}
}
const item = selectedItems[0];
const destination = defaultDestination(item.path, baseDestination);
if (item.kind !== "file") {
setActionError("Move", new Error("Only files are supported for single-item move"));
return;
}
const result = await apiRequest("POST", "/api/files/move", {
source: item.path,
destination,
});
state.selectedTaskId = result.task_id;
await refreshTasksSnapshot();
setSelectedItem(sourcePane, null);
await Promise.all([loadBrowsePane("left"), loadBrowsePane("right")]);
showActionSummary("Move", successes, failures, firstError);
setStatus("Move: started");
}
async function addBookmark() {