react-toolbox
Version:
A set of complementary tools to ReactJS.
48 lines (36 loc) • 1.14 kB
JavaScript
/*eslint-disable no-empty */
;
exports.__esModule = true;
exports.saveState = saveState;
exports.readState = readState;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _warning = require('warning');
var _warning2 = _interopRequireDefault(_warning);
var KeyPrefix = '@@History/';
var QuotaExceededError = 'QuotaExceededError';
function createKey(key) {
return KeyPrefix + key;
}
function saveState(key, state) {
try {
window.sessionStorage.setItem(createKey(key), JSON.stringify(state));
} catch (error) {
if (error.name === QuotaExceededError || window.sessionStorage.length === 0) {
// Probably in Safari "private mode" where sessionStorage quota is 0. #42
_warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode');
return;
}
throw error;
}
}
function readState(key) {
var json = window.sessionStorage.getItem(createKey(key));
if (json) {
try {
return JSON.parse(json);
} catch (error) {
// Ignore invalid JSON.
}
}
return null;
}