UNPKG

@collectionspace/cspace-public-browser

Version:
81 lines (79 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.togglePanel = exports.savePrefs = exports.loadPrefs = exports.expandPanel = void 0; var _immutable = _interopRequireDefault(require("immutable")); var _actionCodes = require("../constants/actionCodes"); var _config = _interopRequireDefault(require("../config")); var _reducers = require("../reducers"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /* global window */ // Username to use for pref storage when user is not logged in const anonymousUsername = '*'; const loadPrefs = () => dispatch => { const username = anonymousUsername; const storageKey = _config.default.get('storageKey'); let userPrefs = null; if (username) { const serializedPrefs = window.localStorage.getItem(storageKey); if (serializedPrefs) { try { userPrefs = _immutable.default.fromJS(JSON.parse(serializedPrefs)[username]); } catch (error) { userPrefs = null; } } } const defaultUserPrefs = _config.default.get('defaultUserPrefs'); if (defaultUserPrefs) { userPrefs = _immutable.default.fromJS(defaultUserPrefs).mergeDeep(userPrefs); } dispatch({ type: _actionCodes.PREFS_LOADED, payload: userPrefs }); }; exports.loadPrefs = loadPrefs; const savePrefs = () => (dispatch, getState) => { const username = anonymousUsername; const storageKey = _config.default.get('storageKey'); let prefs; if (username) { const serializedPrefs = window.localStorage.getItem(storageKey); if (serializedPrefs) { try { prefs = JSON.parse(serializedPrefs); } catch (error) { prefs = null; } } if (!prefs) { prefs = {}; } prefs[username] = (0, _reducers.getPrefs)(getState()).toJS(); window.localStorage.setItem(storageKey, JSON.stringify(prefs)); } }; exports.savePrefs = savePrefs; const expandPanel = (id, expanded = true) => dispatch => { dispatch({ type: _actionCodes.EXPAND_PANEL, payload: expanded, meta: { id } }); dispatch(savePrefs()); }; exports.expandPanel = expandPanel; const togglePanel = id => dispatch => { dispatch({ type: _actionCodes.TOGGLE_PANEL, meta: { id } }); dispatch(savePrefs()); }; exports.togglePanel = togglePanel;