@@ -59,7 +59,20 @@ 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+ await authn . checkUser ( )
65+ if ( ! authn . currentUser ( ) ) {
66+ await authn . checkUser ( )
67+ }
68+ } catch ( error ) {
69+ // Keep the menu responsive even if auth refresh is transiently unavailable.
70+ }
71+
72+ return Boolean ( authn . currentUser ( ) )
73+ }
74+
75+ const isLoggedIn = ( ) : boolean => Boolean ( authn . currentUser ( ) )
6376
6477const setFooterVisibility = ( loggedIn : boolean ) : void => {
6578 const footer = document . querySelector ( 'solid-ui-footer' ) as HTMLElement | null
@@ -343,6 +356,7 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa
343356 const menuToggle = document . getElementById ( 'MenuToggleBtn' ) as HTMLElement | null
344357 const menuOverlay = document . getElementById ( 'MenuOverlay' ) as HTMLElement | null
345358 const navMenuContent = document . getElementById ( 'NavMenuContent' ) as HTMLElement | null
359+ await refreshAuthStateFromSession ( )
346360
347361 const closeMobileMenu = ( ) => {
348362 if ( ! navMenu || ! menuToggle || ! menuOverlay ) return
@@ -446,19 +460,25 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa
446460 }
447461
448462 authSession . events . on ( 'login' , ( ) => {
449- updateMenuVisibility ( )
450- refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
451- refreshMenuItems ( )
463+ void refreshAuthStateFromSession ( ) . then ( ( ) => {
464+ updateMenuVisibility ( )
465+ refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
466+ void refreshMenuItems ( )
467+ } )
452468 } )
453469 authSession . events . on ( 'logout' , ( ) => {
454- updateMenuVisibility ( )
455- refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
456- refreshMenuItems ( )
470+ void refreshAuthStateFromSession ( ) . then ( ( ) => {
471+ updateMenuVisibility ( )
472+ refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
473+ void refreshMenuItems ( )
474+ } )
457475 } )
458476 authSession . events . on ( 'sessionRestore' , ( ) => {
459- updateMenuVisibility ( )
460- refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
461- refreshMenuItems ( )
477+ void refreshAuthStateFromSession ( ) . then ( ( ) => {
478+ updateMenuVisibility ( )
479+ refreshMenu ( outliner . context ?. environment ?. layout === 'mobile' ? 'mobile' : 'desktop' )
480+ void refreshMenuItems ( )
481+ } )
462482 } )
463483 navMenuContent . dataset . authEventsBound = 'true'
464484 }
0 commit comments