diff --git a/src/storage_manager/model/LocalStorage.js b/src/storage_manager/model/LocalStorage.js index 627306df2..3bec5a11b 100644 --- a/src/storage_manager/model/LocalStorage.js +++ b/src/storage_manager/model/LocalStorage.js @@ -1,6 +1,7 @@ -import Backbone from 'backbone'; +import { Model } from 'backbone'; +import { hasWin } from 'utils/mixins'; -export default Backbone.Model.extend({ +export default Model.extend({ defaults: { checkLocal: true }, @@ -8,31 +9,28 @@ export default Backbone.Model.extend({ /** * @private */ - store(data, clb) { - this.checkStorageEnvironment(); - - for (var key in data) localStorage.setItem(key, data[key]); - - if (typeof clb == 'function') { - clb(); + store(data, clb = () => {}) { + if (this.hasLocal()) { + for (let key in data) localStorage.setItem(key, data[key]); } + + clb && clb(); }, /** * @private */ - load(keys, clb) { - this.checkStorageEnvironment(); - var result = {}; - - for (var i = 0, len = keys.length; i < len; i++) { - var value = localStorage.getItem(keys[i]); - if (value) result[keys[i]] = value; + load(keys, clb = () => {}) { + const result = {}; + + if (this.hasLocal()) { + for (let i = 0, len = keys.length; i < len; i++) { + const value = localStorage.getItem(keys[i]); + if (value) result[keys[i]] = value; + } } - if (typeof clb == 'function') { - clb(result); - } + clb && clb(result); return result; }, @@ -41,9 +39,9 @@ export default Backbone.Model.extend({ * @private */ remove(keys) { - this.checkStorageEnvironment(); + if (!this.hasLocal()) return; - for (var i = 0, len = keys.length; i < len; i++) + for (let i = 0, len = keys.length; i < len; i++) localStorage.removeItem(keys[i]); }, @@ -51,8 +49,14 @@ export default Backbone.Model.extend({ * Check storage environment * @private * */ - checkStorageEnvironment() { - if (this.get('checkLocal') && !localStorage) - console.warn("Your browser doesn't support localStorage"); + hasLocal() { + const win = hasWin(); + + if (this.get('checkLocal') && (!win || !localStorage)) { + win && console.warn("Your browser doesn't support localStorage"); + return false; + } + + return true; } });