fix: My Computer hiển thị ổ đĩa/thư mục, fallback khi client handle hết quyền

This commit is contained in:
2026-08-02 18:59:35 +07:00
parent befc0d35fd
commit 224fd54a56
4 changed files with 31 additions and 12 deletions
+23 -10
View File
@@ -9301,17 +9301,30 @@ const MediaExplorerPanel = ({ height }) => {
let savedHandle = null;
try { savedHandle = await loadClientRootHandle(); } catch (e) {}
if (savedHandle && savedHandle.kind === 'directory') {
setComputerMode('client');
setClientRoot(savedHandle);
const rootEntry = { name: savedHandle.name, path: 'root', is_dir: true, handle: savedHandle };
setComputerRoots([rootEntry]);
setComputerPath('root');
setComputerFiles([]);
const browsed = await browseComputerDir(rootEntry);
if (browsed && browsed.dirs) {
browsed.dirs.slice(0, 10).forEach(d => browseComputerDir(d));
// Yêu cu li quyn đc (permission có th b thu hi sau reload)
let permitted = true;
try {
if (typeof savedHandle.queryPermission === 'function') {
const st = await savedHandle.queryPermission({ mode: 'read' });
if (st !== 'granted' && typeof savedHandle.requestPermission === 'function') {
const r = await savedHandle.requestPermission({ mode: 'read' });
permitted = r === 'granted';
}
}
} catch (e) { permitted = false; }
if (permitted) {
setComputerMode('client');
setClientRoot(savedHandle);
const rootEntry = { name: savedHandle.name, path: 'root', is_dir: true, handle: savedHandle };
setComputerRoots([rootEntry]);
setComputerPath('root');
setComputerFiles([]);
const browsed = await browseComputerDir(rootEntry);
if (browsed && browsed.dirs && browsed.dirs.length) {
browsed.dirs.slice(0, 10).forEach(d => browseComputerDir(d));
return;
}
}
return;
}
// Auto-scan đĩa/thư mc h thng (server API = máy local), không m hp thoi picker
setComputerMode('server');