From 9fd5d96d00b71739d7222935c92f2f30c130abbd Mon Sep 17 00:00:00 2001 From: isaacclad Date: Tue, 7 Jul 2026 20:35:45 +0000 Subject: [PATCH] Show boot splash on app open/reload for logged-in users. Replace the once-per-session sessionStorage guard (which suppressed the loading screen after its first appearance) with entry-aware logic: show on app entry and reloads, suppress on internal link navigations and back/forward. --- resources/views/partials/boot-splash.blade.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/resources/views/partials/boot-splash.blade.php b/resources/views/partials/boot-splash.blade.php index 5d86769..fd3e36e 100644 --- a/resources/views/partials/boot-splash.blade.php +++ b/resources/views/partials/boot-splash.blade.php @@ -27,15 +27,24 @@ (function(){ var el=document.getElementById('ladill-boot'); if(!el)return; - // Show once per browser session; suppress instantly on later navigations (no flash). + function remove(){if(el&&el.parentNode)el.parentNode.removeChild(el);} + // Show when the user opens or reloads the app; suppress only on internal + // link navigations and back/forward so we don't flash on every click. try{ - if(sessionStorage.getItem('lb_booted')){el.parentNode.removeChild(el);return;} - sessionStorage.setItem('lb_booted','1'); + var navType='navigate'; + var nav=performance.getEntriesByType&&performance.getEntriesByType('navigation'); + if(nav&&nav.length){navType=nav[0].type;} + else if(performance.navigation){navType=performance.navigation.type===1?'reload':(performance.navigation.type===2?'back_forward':'navigate');} + var internal=false; + if(navType!=='reload'&&document.referrer){ + try{internal=new URL(document.referrer).origin===location.origin;}catch(e){} + } + if(internal||navType==='back_forward'){remove();return;} }catch(e){} var start=Date.now(),MIN=550; function done(){ var wait=Math.max(0,MIN-(Date.now()-start)); - setTimeout(function(){if(!el)return;el.style.opacity='0';setTimeout(function(){if(el&&el.parentNode)el.parentNode.removeChild(el);},400);},wait); + setTimeout(function(){if(!el)return;el.style.opacity='0';setTimeout(remove,400);},wait); } if(document.readyState==='complete')done();else window.addEventListener('load',done); setTimeout(done,8000); // safety net