diff --git a/package-lock.json b/package-lock.json index 3e41d7a3..f5e2b7ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "solid-panes", - "version": "4.4.2-0", + "version": "4.4.2-1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "solid-panes", - "version": "4.4.2-0", + "version": "4.4.2-1", "license": "MIT", "dependencies": { "@solid/better-simple-slideshow": "^0.1.0", diff --git a/package.json b/package.json index ed71faf5..b027f44a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "solid-panes", - "version": "4.4.2-0", + "version": "4.4.2-1", "description": "Solid-compatible Panes: applets and views for the mashlib and databrowser", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/mainPage/menu.ts b/src/mainPage/menu.ts index b43be7a4..c5d8989b 100644 --- a/src/mainPage/menu.ts +++ b/src/mainPage/menu.ts @@ -59,7 +59,17 @@ const applyMenuCollapsedState = (navMenu: HTMLElement | null): void => { updateCollapseButtonPosition(navMenu, collapseBtn) } -const isLoggedIn = (): boolean => Boolean(authSession?.info?.isLoggedIn) +const refreshAuthStateFromSession = async (): Promise => { + try { + const webId = await authn.checkUser() + return Boolean(webId || authn.currentUser()) + } catch { + // Keep the menu responsive even if auth refresh is transiently unavailable. + return Boolean(authn.currentUser()) + } +} + +const isLoggedIn = (): boolean => Boolean(authn.currentUser()) const setFooterVisibility = (loggedIn: boolean): void => { const footer = document.querySelector('solid-ui-footer') as HTMLElement | null @@ -343,6 +353,7 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa const menuToggle = document.getElementById('MenuToggleBtn') as HTMLElement | null const menuOverlay = document.getElementById('MenuOverlay') as HTMLElement | null const navMenuContent = document.getElementById('NavMenuContent') as HTMLElement | null + await refreshAuthStateFromSession() const closeMobileMenu = () => { if (!navMenu || !menuToggle || !menuOverlay) return @@ -445,20 +456,23 @@ export const createLeftSideMenu = async (subject: NamedNode, outliner: OutlineMa await renderMenuItems(subject, outliner, navMenuContent) } - authSession.events.on('login', () => { + authSession.events.on('login', async () => { + await refreshAuthStateFromSession() updateMenuVisibility() refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop') - refreshMenuItems() + await refreshMenuItems() }) - authSession.events.on('logout', () => { + authSession.events.on('logout', async () => { + await refreshAuthStateFromSession() updateMenuVisibility() refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop') - refreshMenuItems() + await refreshMenuItems() }) - authSession.events.on('sessionRestore', () => { + authSession.events.on('sessionRestore', async () => { + await refreshAuthStateFromSession() updateMenuVisibility() refreshMenu(outliner.context?.environment?.layout === 'mobile' ? 'mobile' : 'desktop') - refreshMenuItems() + await refreshMenuItems() }) navMenuContent.dataset.authEventsBound = 'true' }