Skip to content
This repository was archived by the owner on Oct 2, 2018. It is now read-only.

Commit a0054e5

Browse files
committed
Silently purge old setting defaults
- Settings that are set to the old default values will be removed. - Outdated "false" value for "previews.enabled" will become "never"
1 parent 5f7b2e3 commit a0054e5

1 file changed

Lines changed: 54 additions & 11 deletions

File tree

scripts/settings.js

Lines changed: 54 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var defaultSettings = {
2121
"language": "auto",
2222
"nightmode": "false",
2323
"previews.enabled": "auto",
24-
"stats.enabled": "true",
24+
"stats.enabled": "true"
2525
};
2626

2727
firetext.settings.init = function () {
@@ -34,6 +34,17 @@ firetext.settings.init = function () {
3434
var nightmodeSelect = document.querySelector('#nightmode-select');
3535
var previewsSelect = document.querySelector('#previews-select');
3636
var statsEnabled = document.querySelector('#stats-enabled-switch');
37+
38+
// Save version
39+
if (!firetext.settings.get("lastVersion")) {
40+
// Either first run or update from 0.4-
41+
firetext.settings.save("lastVersion", version);
42+
43+
// If 0.4-, purge defaults for certain settings
44+
if (firetext.settings.get("autosave",true) != undefined) {
45+
purgeOldSettings("0.4");
46+
}
47+
}
3748

3849
// Autoload
3950
switch (firetext.settings.get('autoload')) {
@@ -143,14 +154,8 @@ firetext.settings.init = function () {
143154

144155
// Previews
145156
switch (firetext.settings.get('previews.enabled')) {
146-
case "false":
147157
case "never":
148158
previewsSelect.value = '0';
149-
150-
// Fix old value
151-
if (firetext.settings.get('previews.enabled') == 'false') {
152-
firetext.settings.save('previews.enabled', 'never');
153-
}
154159
break;
155160
case "always":
156161
previewsSelect.value = '1';
@@ -200,9 +205,9 @@ firetext.settings.init = function () {
200205
}
201206
};
202207

203-
firetext.settings.get = function (name) {
208+
firetext.settings.get = function (name, forceTrueValue) {
204209
var localStorageItem = localStorage.getItem(("firetext.settings."+name));
205-
if (localStorageItem) {
210+
if (localStorageItem || forceTrueValue) {
206211
return localStorageItem;
207212
} else {
208213
return defaultSettings[name];
@@ -213,6 +218,44 @@ firetext.settings.save = function (name, value) {
213218
if (bugsenseInitialized) {
214219
Bugsense.leaveBreadcrumb("Setting: "+name+" set to: "+value);
215220
}
216-
name = ("firetext.settings."+name);
217-
localStorage.setItem(name, value);
221+
if (defaultSettings[name] == value.toString()) {
222+
firetext.settings.clear(name);
223+
} else {
224+
var localStorageName = ("firetext.settings."+name);
225+
localStorage.setItem(localStorageName, value);
226+
}
227+
};
228+
229+
firetext.settings.clear = function (name) {
230+
var localStorageName = ("firetext.settings."+name);
231+
localStorage.removeItem(localStorageName);
218232
};
233+
234+
function purgeOldSettings(version) {
235+
switch (version) {
236+
case "0.4":
237+
// Define old defaults
238+
var oldDefaults = {
239+
"autoload": "false",
240+
"autosave": "true",
241+
"dropbox.enabled": "false",
242+
"nightmode": "auto",
243+
"previews.enabled": "true",
244+
"stats.enabled": "true"
245+
};
246+
247+
// Reset defaults
248+
for (var setting in oldDefaults) {
249+
if (firetext.settings.get(setting, true) == oldDefaults[setting]) {
250+
firetext.settings.clear(setting);
251+
}
252+
}
253+
254+
// Reset old values
255+
if (firetext.settings.get("previews.enabled", true) == "false") {
256+
firetext.settings.save("previews.enabled","never");
257+
}
258+
259+
break;
260+
}
261+
}

0 commit comments

Comments
 (0)