fix(files): route drops through the selected target
This commit is contained in:
35
webui/scripts/test-file-drop-target-structure.mjs
Normal file
35
webui/scripts/test-file-drop-target-structure.mjs
Normal file
@@ -0,0 +1,35 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
|
||||
const source = readFileSync(new URL("../src/features/files/FilesPage.tsx", import.meta.url), "utf8");
|
||||
const normalized = source.replace(/\s+/g, " ");
|
||||
|
||||
function assertIncludes(fragment, message) {
|
||||
if (!normalized.includes(fragment.replace(/\s+/g, " "))) throw new Error(message);
|
||||
}
|
||||
|
||||
assertIncludes(
|
||||
"const target = options.target ?? currentActionTarget();",
|
||||
"uploads must prefer the explicit target supplied by the initiating interaction"
|
||||
);
|
||||
assertIncludes(
|
||||
"const targetSpace = target ? findSpace(target.spaceId) : null;",
|
||||
"the upload owner must be resolved from the selected target"
|
||||
);
|
||||
assertIncludes(
|
||||
"owner_type: targetSpace.owner_type, owner_id: targetSpace.owner_id, path: target.folderPath,",
|
||||
"the upload request must use the selected target owner and folder"
|
||||
);
|
||||
assertIncludes(
|
||||
"async function uploadExternalFilesToTarget(fileList: FileList | File[], target: FileActionTarget) { await handleFilesUpload(fileList, { target }); }",
|
||||
"external drops must pass their concrete target without asynchronous dialog-state mutation"
|
||||
);
|
||||
assertIncludes(
|
||||
"await uploadExternalFilesToTarget(event.dataTransfer.files, target);",
|
||||
"drop handling must forward the target on which the files were dropped"
|
||||
);
|
||||
assertIncludes(
|
||||
"onFiles={(files) => handleFilesUpload(files, { target: activeDialogTarget || undefined })}",
|
||||
"the dialog picker/drop zone must snapshot its selected target for upload"
|
||||
);
|
||||
|
||||
console.log("Files upload target routing structure is intact.");
|
||||
Reference in New Issue
Block a user