@collectionspace/cspace-public-browser
Version:
CollectionSpace public browser
81 lines (79 loc) • 2.34 kB
JavaScript
;
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;