feat: refine frontend folder management and display by merging folder tree data.

This commit is contained in:
2025-12-09 12:37:27 +01:00
parent 463046c970
commit 8a16293f0e
7 changed files with 155 additions and 190 deletions
@@ -238,9 +238,30 @@ const SelectionFloatingActions: React.FC<SelectionFloatingActionsProps> = ({
() => foldersManager.getTreeSnapshot(),
);
const dataSnapshot = useSyncExternalStore(
useCallback(cb => foldersManager.subscribe(cb), [foldersManager]),
() => foldersManager.getSnapshot(),
() => foldersManager.getSnapshot(),
);
useEffect(() => {
setRemoteFolderTree(treeSnapshot);
}, [treeSnapshot]);
if (!treeSnapshot || treeSnapshot.length === 0) {
setRemoteFolderTree([]);
return;
}
const map = dataSnapshot;
const mergeNode = (node: FolderTreeNode): FolderTreeNode => {
const liveData = map.get(node.id);
const name = liveData?.name ?? node.name;
const children = node.children ? node.children.map(mergeNode) : [];
return { ...node, name, children };
};
const mergedTree = treeSnapshot.map(mergeNode);
setRemoteFolderTree(mergedTree);
}, [treeSnapshot, dataSnapshot]);
const requestFolderTree = useCallback(() => {
foldersManager.ensureTree();