diff --git a/src/renderer/scr.state.js b/src/renderer/scr.state.js index e806f61..0011772 100644 --- a/src/renderer/scr.state.js +++ b/src/renderer/scr.state.js @@ -240,7 +240,24 @@ var STATE = (function(){ ROOT.settings = {}; - var defineSettingProperty = (property, defaultValue) => { + var getStorageItem = (property) => { + try{ + return localStorage.getItem(property); + }catch(e){ + console.error(e); + return null; + } + }; + + var setStorageItem = (property, value) => { + try{ + localStorage.setItem(property, value); + }catch(e){ + console.error(e); + } + }; + + var defineSettingProperty = (property, defaultValue, storageToValue) => { var name = "_"+property; Object.defineProperty(ROOT.settings, property, { @@ -248,15 +265,28 @@ var STATE = (function(){ set: (value => { ROOT.settings[name] = value; triggerMessagesRefreshed(); + setStorageItem(property, value); }) }); - ROOT.settings[name] = defaultValue; - } + var stored = getStorageItem(property); + + if (stored !== null){ + stored = storageToValue(stored); + } + + ROOT.settings[name] = stored === null ? defaultValue : stored; + }; - defineSettingProperty("enableImagePreviews", true); - defineSettingProperty("enableFormatting", true); - defineSettingProperty("enableAnimatedEmoji", true); + var fromBooleanString = (value) => { + if (value === "true") return true; + if (value === "false") return false; + return null; + }; + + defineSettingProperty("enableImagePreviews", true, fromBooleanString); + defineSettingProperty("enableFormatting", true, fromBooleanString); + defineSettingProperty("enableAnimatedEmoji", true, fromBooleanString); // End return ROOT;