@@ -59,7 +59,17 @@ const applyMenuCollapsedState = (navMenu: HTMLElement | null): void => {
5959 updateCollapseButtonPosition ( navMenu , collapseBtn )
6060}
6161
62- const isLoggedIn = ( ) : boolean => Boolean ( authSession ?. info ?. isLoggedIn )
62+ const refreshAuthStateFromSession = async ( ) : Promise < boolean > => {
63+ try {
64+ const webId = await authn . checkUser ( )
65+ return Boolean ( webId || authn . currentUser ( ) )
66+ } catch {
67+ // Keep the menu responsive even if auth refresh is transiently unavailable.
68+ return Boolean ( authn . currentUser ( ) )
69+ }
70+ }
71+
72+ const isLoggedIn = ( ) : boolean => Boolean ( authn . currentUser ( ) )
6373
6474const setFooterVisibility = ( loggedIn : boolean ) : void => {
6575 const footer = document . querySelector ( 'solid-ui-footer' ) as HTMLElement | null
@@ -343,6 +353,7 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa
343353 const menuToggle = document . getElementById ( 'MenuToggleBtn' ) as HTMLElement | null
344354 const menuOverlay = document . getElementById ( 'MenuOverlay' ) as HTMLElement | null
345355 const navMenuContent = document . getElementById ( 'NavMenuContent' ) as HTMLElement | null
356+ await refreshAuthStateFromSession ( )
346357
347358 const closeMobileMenu = ( ) => {
348359 if ( ! navMenu || ! menuToggle || ! menuOverlay ) return
@@ -445,20 +456,23 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa
445456 await renderMenuItems ( subject , outliner , navMenuContent )
446457 }
447458
448- authSession . events . on ( 'login' , ( ) => {
459+ authSession . events . on ( 'login' , async ( ) => {
460+ await refreshAuthStateFromSession ( )
449461 updateMenuVisibility ( )
450462 refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
451- refreshMenuItems ( )
463+ await refreshMenuItems ( )
452464 } )
453- authSession . events . on ( 'logout' , ( ) => {
465+ authSession . events . on ( 'logout' , async ( ) => {
466+ await refreshAuthStateFromSession ( )
454467 updateMenuVisibility ( )
455468 refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
456- refreshMenuItems ( )
469+ await refreshMenuItems ( )
457470 } )
458- authSession . events . on ( 'sessionRestore' , ( ) => {
471+ authSession . events . on ( 'sessionRestore' , async ( ) => {
472+ await refreshAuthStateFromSession ( )
459473 updateMenuVisibility ( )
460474 refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
461- refreshMenuItems ( )
475+ await refreshMenuItems ( )
462476 } )
463477 navMenuContent . dataset . authEventsBound = 'true'
464478 }
0 commit comments