UNPKG

redux-storage-engine-jsurl

Version:

jsurl engine for redux-store. Store your state in the url hash.

44 lines (36 loc) 1.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _jsurl = require('jsurl'); var _jsurl2 = _interopRequireDefault(_jsurl); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (key, replacer, reviver) { return { load() { var hash = window.location.hash; try { var encodedState = hash.substr(1); var parsedState = _jsurl2.default.parse(encodedState); var state = typeof parsedState === 'object' ? parsedState : {}; return Promise.resolve(state); } catch (e) { console.error(e); return Promise.reject({}); } }, save(state) { var title = document.title; var path = window.location.pathname; if (Object.keys(state).length === 0 && state.constructor === Object) { window.history.pushState({}, title, path); return Promise.resolve(); } var encodedState = _jsurl2.default.stringify(state); var url = `${path}#${encodedState}`; window.history.pushState({}, title, url); return Promise.resolve(); } }; }; module.exports = exports['default'];