Skip to content

Commit a14b6bc

Browse files
committed
fix: cache-busting admin JS + safety guard in admin.js to prevent dashboard race condition
1 parent ee417f2 commit a14b6bc

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

public/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<div id="app"></div>
1717

18-
<script src="/js/app.js"></script>
19-
<script src="/js/admin.js"></script>
18+
<script src="/js/app.js?v=2"></script>
19+
<script src="/js/admin.js?v=2"></script>
2020
</body>
2121
</html>

public/js/admin.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,10 +379,22 @@ window.addEventListener('popstate', () => {
379379
}
380380
});
381381

382+
let adminTakingOver = false;
383+
382384
function initAdmin() {
383385
const path = window.location.pathname;
384386
if (!path.startsWith('/admin')) return;
385387

388+
adminTakingOver = true;
389+
390+
// Clear any dashboard that may have been rendered by an old cached app.js
391+
const app = document.getElementById('app');
392+
if (app && app.querySelector('.dashboard-layout')) {
393+
app.innerHTML = '';
394+
localStorage.removeItem('zh_token');
395+
localStorage.removeItem('zh_user');
396+
}
397+
386398
let meta = document.querySelector('meta[name="robots"]');
387399
if (!meta) {
388400
meta = document.createElement('meta');

public/js/app.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,7 @@ function toggleSidebarCollapse() {
460460

461461
// ===== DASHBOARD =====
462462
async function renderDashboard() {
463+
if (typeof adminTakingOver !== 'undefined' && adminTakingOver) return;
463464
const app = $('#app');
464465
app.innerHTML = html`
465466
<div class="dashboard-layout">

0 commit comments

Comments
 (0)