/* eslint-disable @typescript-eslint/no-explicit-any */ import { BrowserSessionData } from './types'; export abstract class BrowserSessionHandler { get browserSessionData(): BrowserSessionData | undefined { return this.#browserSessionData; } #browserSessionData?: BrowserSessionData; /** * Load the data from the browser session storage. It should be an empty object, * if no data is available yet (e.g. because the vault (from the browser sync data) * was not unlocked via password). * * ATTENTION: Make sure to call "setFullData(..)" afterwards to update the in-memory data. */ abstract loadFullData(): Promise>>; setFullData(data: BrowserSessionData) { this.#browserSessionData = JSON.parse(JSON.stringify(data)); } clearInMemoryData() { this.#browserSessionData = undefined; } /** * Persist the full data to the session data storage. * * ATTENTION: Make sure to call "setFullData(..)" afterwards of before to update the in-memory data. */ abstract saveFullData(data: BrowserSessionData): Promise; abstract clearData(): Promise; }