@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
34 lines (33 loc) • 1.27 kB
JavaScript
// 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;