aboutsummaryrefslogtreecommitdiff
path: root/modules/core/virtual-fs.js
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-10-18 17:19:14 +0200
committerAgando <roduccomm@gmail.com>2026-10-18 17:19:14 +0200
commit7e904aec06c09f7fdef0938155d2b9a19d36e314 (patch)
treef859e146ad9e34c75d86ebcabefdb70a07ec4db9 /modules/core/virtual-fs.js
parent267b50588c736fdfec9a53488a2a39c608ebd7d4 (diff)
newOS4 v4.6.40: review fixes (bug diagnostics, trash tree, dir paste, stale capture, preview)
Diffstat (limited to 'modules/core/virtual-fs.js')
-rw-r--r--modules/core/virtual-fs.js21
1 files changed, 7 insertions, 14 deletions
diff --git a/modules/core/virtual-fs.js b/modules/core/virtual-fs.js
index d8b5098..8f11d25 100644
--- a/modules/core/virtual-fs.js
+++ b/modules/core/virtual-fs.js
@@ -613,20 +613,13 @@ class VirtualFileSystem {
this.root.content['.trash'] = { type: 'dir', content: {} };
}
const trash = this.root.content['.trash'];
- const flatten = (n, prefix) => {
- if (n.type === 'file') {
- const flatName = prefix + '-' + name;
- let ctr = 0;
- let unique = flatName;
- while (trash.content[unique]) { unique = flatName + '-' + (++ctr); }
- trash.content[unique] = JSON.parse(JSON.stringify(n));
- } else if (n.type === 'dir') {
- for (const [childName, child] of Object.entries(n.content || {})) {
- flatten(child, prefix + '-' + childName);
- }
- }
- };
- flatten(node, ts + '-dir-' + name);
+ // Keep the subtree intact so it can be restored later; the old flatten loop
+ // turned every descendant into a sibling file and lost empty dirs entirely.
+ const baseName = ts + '-dir-' + name;
+ let unique = baseName;
+ let ctr = 0;
+ while (trash.content[unique]) { unique = baseName + '-' + (++ctr); }
+ trash.content[unique] = JSON.parse(JSON.stringify(node));
delete resolved.dir.content[resolved.name];
this.saveToStorage();
this._emitChange(path);