diff options
| author | Agando <roduccomm@gmail.com> | 2026-10-18 17:19:14 +0200 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-10-18 17:19:14 +0200 |
| commit | 7e904aec06c09f7fdef0938155d2b9a19d36e314 (patch) | |
| tree | f859e146ad9e34c75d86ebcabefdb70a07ec4db9 /modules/core/virtual-fs.js | |
| parent | 267b50588c736fdfec9a53488a2a39c608ebd7d4 (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.js | 21 |
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); |