Persist settings in viewer

Mentions #81
This commit is contained in:
chylex 2019-09-19 22:05:01 +02:00
parent 5f095fae7d
commit 8c4991eafc

View File

@ -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;