UNPKG

react-principal

Version:

A state management with react context for apps which using hooks.

43 lines 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.persistReducer = exports.persisterCreator = void 0; const utils_1 = require("./utils"); const INITIALIZE_STATE_FROM_STORAGE = Symbol(); exports.persisterCreator = function persisterCreator(Storage, key, mapStateToPersist) { return { persist(state, action) { if (action.type !== INITIALIZE_STATE_FROM_STORAGE) { Storage.setItem(key, JSON.stringify(mapStateToPersist ? mapStateToPersist(state) : state)); } }, async setToState(storeRef) { try { const storedState = await Storage.getItem(key); if (!storedState) { return; } const stateObject = JSON.parse(storedState); const { dispatch } = storeRef.current; const mappedState = mapStateToPersist ? mapStateToPersist(stateObject) : stateObject; dispatch({ type: INITIALIZE_STATE_FROM_STORAGE, payload: mappedState, }); } catch (error) { if (utils_1.__DEV__) { console.error(error); } } }, }; }; exports.persistReducer = (reducer) => (state, action) => { if (action.type === INITIALIZE_STATE_FROM_STORAGE) { return { ...state, ...action.payload }; } return reducer(state, action); }; //# sourceMappingURL=persist.js.map