Your session expired due to 30 minutes of inactivity. Please log in again.
'; overlay.appendChild(content); document.body.appendChild(overlay); if (ffhSupabaseState && ffhSupabaseState.client) { await ffhSupabaseState.client.auth.signOut(); } // Clear sensitive in-memory data try { if (typeof boards !== 'undefined') { boards = []; } } catch (e) { ffhLog.debug('Could not clear boards', e.message); } const btn = document.getElementById('ffhPmSessionExpiredBtn'); if (btn) { btn.addEventListener('click', () => { window.location.href = '/'; }); } } catch (e) { ffhLog.error('PM session signout failed', e.message); } } }; function initPmInactivityListeners() { const events = ['click', 'keypress', 'scroll', 'touchstart', 'mousemove']; events.forEach(e => { document.addEventListener(e, () => { FFHPmInactivityTimer.reset(); }, { passive: true }); }); FFHPmInactivityTimer.reset(); } window.ffhSupabaseIntegration = { initialize: initializeSupabaseIntegration, forceSync: forceSupabaseSync, getStatus: getSyncStatus, loadFromStorage, saveToStorage, }; ffhLog.info('FFH PM Supabase Integration module loaded');