insomnia/app/redux/middleware/localstorage.js
2016-09-01 22:45:12 -07:00

39 lines
848 B
JavaScript

/**
* Persist all state children that don't have the property "dontPersist"
*
* @param key localStorage key to persist to
*/
export default function (key) {
let timeout = null;
return _ref => {
const {getState} = _ref;
return next => action => {
clearTimeout(timeout);
timeout = setTimeout(() => {
const state = getState();
const stateToSave = {};
// Check for a `doNotPersist` property on the state
Object.keys(state)
.filter(k => !state[k].doNotPersist)
.map(k => {
stateToSave[k] = state[k]
});
localStorage[key] = JSON.stringify(stateToSave);
}, 1000);
return next(action);
};
}
}
export function getState (key) {
if (!localStorage[key]) {
return undefined;
}
return JSON.parse(localStorage[key]);
}