UNPKG

@snipsonian/observable-state

Version:

Observable-state snippets (redux-like)

53 lines (52 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.saveStateToStorage = exports.determineInitialState = void 0; const mergeObjectPropsDeeply_1 = require("@snipsonian/core/cjs/merge/mergeObjectPropsDeeply"); const localStorage_1 = require("@snipsonian/browser/cjs/storage/localStorage"); const sessionStorage_1 = require("@snipsonian/browser/cjs/storage/sessionStorage"); function determineInitialState({ initialState, stateStorageConfig, }) { if (!stateStorageConfig) { return initialState; } const { local, session, custom } = stateStorageConfig; let combinedStorageState = initialState; if (local && localStorage_1.default.isSupported) { combinedStorageState = (0, mergeObjectPropsDeeply_1.default)(combinedStorageState, localStorage_1.default.read({ key: local.browserStorageKey, defaultValue: {}, })); } if (session && sessionStorage_1.default.isSupported) { combinedStorageState = (0, mergeObjectPropsDeeply_1.default)(combinedStorageState, sessionStorage_1.default.read({ key: session.browserStorageKey, defaultValue: {}, })); } if (custom) { combinedStorageState = (0, mergeObjectPropsDeeply_1.default)(combinedStorageState, custom.readFromStorage()); } return combinedStorageState; } exports.determineInitialState = determineInitialState; function saveStateToStorage({ state, stateStorageConfig, }) { if (!stateStorageConfig) { return; } const { local, session, custom } = stateStorageConfig; if (local && localStorage_1.default.isSupported) { localStorage_1.default.save({ key: local.browserStorageKey, value: local.getStatePartToSave(state), }); } if (session && sessionStorage_1.default.isSupported) { sessionStorage_1.default.save({ key: session.browserStorageKey, value: session.getStatePartToSave(state), }); } if (custom) { custom.saveToStorage(custom.getStatePartToSave(state)); } } exports.saveStateToStorage = saveStateToStorage;