(sourceFolder, movedFiles, sourceId = '')
| 2665 | } |
| 2666 | |
| 2667 | function pruneMovedFilesFromInactivePane(sourceFolder, movedFiles, sourceId = '') { |
| 2668 | if (!window.dualPaneEnabled || !sourceFolder || !window.__frPaneState) return; |
| 2669 | |
| 2670 | const names = Array.isArray(movedFiles) |
| 2671 | ? movedFiles.map(f => { |
| 2672 | if (!f) return ''; |
| 2673 | if (typeof f === 'string') return f; |
| 2674 | if (typeof f === 'object') { |
| 2675 | return String(f.name || f.file || f.filename || f.fileName || ''); |
| 2676 | } |
| 2677 | return String(f); |
| 2678 | }).map(n => String(n || '').trim()).filter(Boolean) |
| 2679 | : []; |
| 2680 | if (!names.length) return; |
| 2681 | |
| 2682 | const nameSet = new Set(); |
| 2683 | names.forEach(name => { |
| 2684 | const raw = String(name || '').trim(); |
| 2685 | if (!raw) return; |
| 2686 | nameSet.add(raw); |
| 2687 | const decoded = decodeHtmlEntities(raw); |
| 2688 | if (decoded && decoded !== raw) { |
| 2689 | nameSet.add(decoded); |
| 2690 | } |
| 2691 | }); |
| 2692 | ['primary', 'secondary'].forEach(paneKey => { |
| 2693 | const state = window.__frPaneState[paneKey]; |
| 2694 | if (!state || state.currentFolder !== sourceFolder) return; |
| 2695 | if (sourceId && state.sourceId && state.sourceId !== sourceId) return; |
| 2696 | |
| 2697 | if (Array.isArray(state.fileData)) { |
| 2698 | state.fileData = state.fileData.filter(f => f && !nameSet.has(f.name)); |
| 2699 | } |
| 2700 | |
| 2701 | const list = getPaneListForKey(paneKey); |
| 2702 | if (!list) return; |
| 2703 | |
| 2704 | list.querySelectorAll('tr[data-file-name], .gallery-card[data-file-name]').forEach(row => { |
| 2705 | const raw = row.getAttribute('data-file-name') || ''; |
| 2706 | const decoded = decodeHtmlEntities(raw); |
| 2707 | if (nameSet.has(raw) || nameSet.has(decoded)) { |
| 2708 | row.remove(); |
| 2709 | } |
| 2710 | }); |
| 2711 | }); |
| 2712 | } |
| 2713 | |
| 2714 | async function paneDropHandler(e) { |
| 2715 | if (!window.dualPaneEnabled) return; |
no test coverage detected