fix: My Computer hiển thị ổ đĩa/thư mục, fallback khi client handle hết quyền
This commit is contained in:
+23
-10
@@ -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 cầu lại quyền đọc (permission có thể bị thu hồi 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ư mục hệ thống (server API = máy local), không mở hộp thoại picker
|
||||
setComputerMode('server');
|
||||
|
||||
Reference in New Issue
Block a user