fix: My Computer luôn hiển thị cây hệ thống client, bỏ restore folder cũ

This commit is contained in:
2026-08-02 18:55:14 +07:00
parent 5e3a283bd9
commit befc0d35fd
4 changed files with 13 additions and 34 deletions
+3 -29
View File
@@ -9205,6 +9205,8 @@ const MediaExplorerPanel = ({ height }) => {
}, [saveSession, computerMode, clientRoot]);
const restoreSession = React.useCallback(() => {
// Ch khôi phc favorites + các pref khác. KHÔNG khôi phc thư mc/tree đã m:
// My Computer luôn phi hin th cây h thng client.
try {
const raw = localStorage.getItem(SESSION_KEY);
if (!raw) return;
@@ -9212,44 +9214,16 @@ const MediaExplorerPanel = ({ height }) => {
if (snap.folder) setFolder(snap.folder);
if (snap.computerMode) setComputerMode(snap.computerMode);
if (snap.clientRootName) setClientRoot({ name: snap.clientRootName });
if (snap.computerRoots && snap.computerRoots.length) setComputerRoots(snap.computerRoots);
if (snap.computerPath) setComputerPath(snap.computerPath);
if (snap.computerFiles) setComputerFiles(snap.computerFiles);
if (snap.selected) setSelected(snap.selected);
if (snap.computerTree) {
const tree = {};
Object.keys(snap.computerTree).forEach(path => {
tree[path] = {
dirs: snap.computerTree[path].dirs || [],
expanded: snap.computerTree[path].expanded
};
});
setComputerTree(tree);
}
} catch (e) {}
}, []);
React.useEffect(() => {
(async () => {
await restoreSession();
// Restore the FileSystemDirectoryHandle so client-mode browsing still works
// Ch ni li FileSystemDirectoryHandle đ client browsing hot đng (không khôi phc folder cũ)
const savedHandle = await loadClientRootHandle();
if (savedHandle && savedHandle.kind === 'directory') {
setClientRoot(savedHandle);
const restoredPath = (() => { try { return JSON.parse(localStorage.getItem(SESSION_KEY) || '{}').computerPath; } catch (e) { return null; } })();
if (restoredPath) {
setComputerRoots([{ name: savedHandle.name, path: 'root', is_dir: true, handle: savedHandle }]);
// Re-browse current dir to re-attach real handles (metadata-only tree from localStorage)
const storedTree = (() => { try { return JSON.parse(localStorage.getItem(SESSION_KEY) || '{}').computerTree; } catch (e) { return null; } })();
if (storedTree) {
const rebuilt = {};
Object.keys(storedTree).forEach(p => { rebuilt[p] = { dirs: storedTree[p].dirs || [], expanded: storedTree[p].expanded }; });
setComputerTree(rebuilt);
}
setComputerMode('client');
// Rebuild handles for the current folder + ancestors by walking from root
browseComputerDir({ name: savedHandle.name, path: 'root', is_dir: true, handle: savedHandle });
}
}
})();
// eslint-disable-next-line react-hooks/exhaustive-deps