diff --git a/app/static/js/app.js b/app/static/js/app.js index dd7f966..70ba4d6 100644 --- a/app/static/js/app.js +++ b/app/static/js/app.js @@ -49,6 +49,14 @@ window.navigateTo = function(url) { document.addEventListener('DOMContentLoaded', async function() { console.log('mc-webui initialized'); + // Force viewport recalculation on PWA navigation + // This fixes the bottom bar visibility issue when navigating from other pages + window.scrollTo(0, 0); + // Trigger resize event to force browser to recalculate viewport height + window.dispatchEvent(new Event('resize')); + // Force reflow to ensure proper layout calculation + document.body.offsetHeight; + // Load last seen timestamps from server await loadLastSeenTimestampsFromServer(); await loadDmLastSeenTimestampsFromServer(); @@ -78,6 +86,30 @@ document.addEventListener('DOMContentLoaded', async function() { setupAutoRefresh(); }); +// Handle page restoration from cache (PWA back/forward navigation) +window.addEventListener('pageshow', function(event) { + if (event.persisted) { + // Page was restored from cache, force viewport recalculation + console.log('Page restored from cache, recalculating viewport'); + window.scrollTo(0, 0); + window.dispatchEvent(new Event('resize')); + document.body.offsetHeight; + } +}); + +// Handle app returning from background (PWA visibility change) +document.addEventListener('visibilitychange', function() { + if (!document.hidden) { + // App became visible again, force viewport recalculation + console.log('App became visible, recalculating viewport'); + setTimeout(() => { + window.scrollTo(0, 0); + window.dispatchEvent(new Event('resize')); + document.body.offsetHeight; + }, 100); + } +}); + /** * Setup event listeners */