FIX: lỗi màn hình đen trên docker

This commit is contained in:
2026-08-08 10:51:58 +07:00
parent 3fc2087ee1
commit 24051a2794
7 changed files with 101 additions and 30 deletions
+30 -13
View File
@@ -15543,6 +15543,16 @@ const App = () => {
// Auth / User State
const [currentUser, setCurrentUser] = useState(null);
const [authModalOpen, setAuthModalOpen] = useState(false);
// 401 bt k m màn login (bug 09:45 màn đen khi token hng/hết hn)
React.useEffect(() => {
window.__onAuthFail = () => {
setCurrentUser(null);
setIsMandatoryLogin(true);
setAuthMode('login');
setAuthModalOpen(true);
};
return () => { delete window.__onAuthFail; };
}, []);
const [authMode, setAuthMode] = useState('login'); // 'login' | 'register' | 'force_change'
const [isMandatoryLogin, setIsMandatoryLogin] = useState(false);
const [profileModalOpen, setProfileModalOpen] = useState(false);
@@ -15847,20 +15857,27 @@ const App = () => {
restoreLastSessionProject();
}
} catch (err) {
const cached = localStorage.getItem('sonic_user');
if (cached) {
try { setCurrentUser(JSON.parse(cached)); } catch (_) { }
setIsMandatoryLogin(false);
setAuthModalOpen(false);
restoreLastSessionProject();
} else {
localStorage.removeItem('sonic_token');
localStorage.removeItem('sonic_user');
setCurrentUser(null);
setIsMandatoryLogin(true);
setAuthMode('login');
setAuthModalOpen(true);
// 401 (token hng/đi SECRET_KEY bug 09:45: dùng cached user vào app
// nhưng mi API 401 màn đen không login) B qua cached m LOGIN.
// detail server: "Thiếu Token xác thc..." / "Token đã hết hn..." (auth.py)
const errMsg = String((err && err.message) || err || '');
const isAuthErr = errMsg.includes('Token') || errMsg.includes('401') || errMsg.includes('Unauthorized') || errMsg.includes('unauthorized') || errMsg.includes('Không xác thực');
if (!isAuthErr) {
const cached = localStorage.getItem('sonic_user');
if (cached) {
try { setCurrentUser(JSON.parse(cached)); } catch (_) { }
setIsMandatoryLogin(false);
setAuthModalOpen(false);
restoreLastSessionProject();
return;
}
}
localStorage.removeItem('sonic_token');
localStorage.removeItem('sonic_user');
setCurrentUser(null);
setIsMandatoryLogin(true);
setAuthMode('login');
setAuthModalOpen(true);
}
};
checkAuthStatus();