UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

34 lines (33 loc) 1.27 kB
// SPDX-License-Identifier: Apache-2.0 import GirafeSingleton from '../../base/GirafeSingleton.js'; class SessionManager extends GirafeSingleton { sessionHash = 'session'; initializeSingleton() { window.addEventListener('pagehide', () => this.saveStateToSession()); } beginSession() { this.context.urlManager.updateHash(this.sessionHash); } saveStateToSession() { console.debug('Saving state to sessionStorage'); const serializedState = this.context.stateSerializer.getSerializedState(); sessionStorage.setItem('geogirafe-state', serializedState); } hasState() { if (this.context.urlManager.hasHash(this.sessionHash)) { const serializedState = sessionStorage.getItem('geogirafe-state'); return serializedState !== null; } return false; } setStateFromSession() { let stateRestored = false; const serializedState = sessionStorage.getItem('geogirafe-state'); if (serializedState) { console.debug('Restoring state from sessionStorage'); stateRestored = this.context.stateSerializer.deserializeAndSetState(serializedState); } return stateRestored; } } export default SessionManager;