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

Commit 5f7b2e3

Browse files
committed
Refactor settings logic
- Simplify UI code - Establish defaults - If a setting has not been changed, don't save it (allows for changing defaults across versions)
1 parent d5df9d7 commit 5f7b2e3

1 file changed

Lines changed: 81 additions & 61 deletions

File tree

scripts/settings.js

Lines changed: 81 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,18 @@ firetext.settings = {};
1212

1313

1414
/* Settings
15-
------------------------*/
15+
------------------------*/
16+
var defaultSettings = {
17+
"autoload": "false",
18+
"autosave": "true",
19+
"autosaveNotification": "true",
20+
"dropbox.enabled": "false",
21+
"language": "auto",
22+
"nightmode": "false",
23+
"previews.enabled": "auto",
24+
"stats.enabled": "true",
25+
};
26+
1627
firetext.settings.init = function () {
1728
// Select elements
1829
var autoloadEnabled = document.querySelector('#autoload-enabled-switch');
@@ -25,28 +36,28 @@ firetext.settings.init = function () {
2536
var statsEnabled = document.querySelector('#stats-enabled-switch');
2637

2738
// Autoload
28-
if (firetext.settings.get('autoload') == 'true') {
29-
autoloadEnabled.setAttribute('checked', '');
30-
} else {
31-
autoloadEnabled.removeAttribute('checked');
32-
if (!firetext.settings.get('autoload')) {
33-
firetext.settings.save('autoload', 'false');
34-
}
39+
switch (firetext.settings.get('autoload')) {
40+
case "true":
41+
autoloadEnabled.setAttribute('checked', '');
42+
break;
43+
case "false":
44+
autoloadEnabled.removeAttribute('checked');
45+
break;
3546
}
3647
autoloadEnabled.onchange = function () {
3748
firetext.settings.save('autoload', this.checked);
3849
}
3950

4051
// Autosave
41-
if (firetext.settings.get('autosave') != 'false') {
42-
autosaveEnabled.setAttribute('checked', '');
43-
if (firetext.settings.get('autosave') != 'true') {
44-
firetext.settings.save('autosave', 'true');
45-
}
46-
document.getElementById('autosave-notification-setting').style.display = 'block';
47-
} else {
48-
autosaveEnabled.removeAttribute('checked');
49-
document.getElementById('autosave-notification-setting').style.display = 'none';
52+
switch (firetext.settings.get('autosave')) {
53+
case "true":
54+
autosaveEnabled.setAttribute('checked', '');
55+
if (deviceType == 'desktop') document.getElementById('autosave-notification-setting').style.display = 'block';
56+
break;
57+
case "false":
58+
autosaveEnabled.removeAttribute('checked');
59+
if (deviceType == 'desktop') document.getElementById('autosave-notification-setting').style.display = 'none';
60+
break;
5061
}
5162
autosaveEnabled.onchange = function () {
5263
firetext.settings.save('autosave', this.checked);
@@ -61,13 +72,13 @@ firetext.settings.init = function () {
6172

6273
// Autosave Notification
6374
if (deviceType == 'desktop') {
64-
if (firetext.settings.get('autosaveNotification') != 'false') {
65-
autosaveNotificationEnabled.setAttribute('checked', '');
66-
if (firetext.settings.get('autosaveNotification') != 'true') {
67-
firetext.settings.save('autosaveNotification', 'true');
68-
}
69-
} else {
70-
autosaveNotificationEnabled.removeAttribute('checked');
75+
switch (firetext.settings.get('autosaveNotification')) {
76+
case "true":
77+
autosaveNotificationEnabled.setAttribute('checked', '');
78+
break;
79+
case "false":
80+
autosaveNotificationEnabled.removeAttribute('checked');
81+
break;
7182
}
7283
autosaveNotificationEnabled.onchange = function () {
7384
firetext.settings.save('autosaveNotification', this.checked);
@@ -77,20 +88,20 @@ firetext.settings.init = function () {
7788
}
7889

7990
// Dropbox
80-
if (firetext.settings.get('dropbox.enabled') == 'true') {
81-
dropboxEnabled.setAttribute('checked', '');
82-
} else {
83-
dropboxEnabled.removeAttribute('checked');
91+
switch (firetext.settings.get('dropbox.enabled')) {
92+
case "true":
93+
dropboxEnabled.setAttribute('checked', '');
94+
break;
95+
case "false":
96+
dropboxEnabled.removeAttribute('checked');
97+
break;
8498
}
8599
dropboxEnabled.onchange = function () {
86100
firetext.settings.save('dropbox.enabled', this.checked);
87101
cloud.init();
88102
}
89103

90104
// Language
91-
if (!firetext.settings.get('language')) {
92-
firetext.settings.save('language', 'auto');
93-
}
94105
languageSelect.value = firetext.settings.get('language');
95106
languageSelect.addEventListener('change', function () {
96107
// Save
@@ -101,15 +112,16 @@ firetext.settings.init = function () {
101112
});
102113

103114
// Night Mode
104-
if (firetext.settings.get('nightmode') == 'true') {
105-
nightmodeSelect.value = '1';
106-
} else if (firetext.settings.get('nightmode') == 'auto') {
107-
nightmodeSelect.value = '2';
108-
} else {
109-
nightmodeSelect.value = '0';
110-
if (firetext.settings.get('nightmode') != 'false') {
111-
firetext.settings.save('nightmode', 'false');
112-
}
115+
switch (firetext.settings.get('nightmode')) {
116+
case "false":
117+
nightmodeSelect.value = '0';
118+
break;
119+
case "true":
120+
nightmodeSelect.value = '1';
121+
break;
122+
case "auto":
123+
nightmodeSelect.value = '2';
124+
break;
113125
}
114126
nightmodeSelect.addEventListener('change', function () {
115127
// Convert
@@ -130,18 +142,22 @@ firetext.settings.init = function () {
130142
});
131143

132144
// Previews
133-
if (firetext.settings.get('previews.enabled') == 'always') {
134-
previewsSelect.value = '1';
135-
} else if (firetext.settings.get('previews.enabled') == 'never' || firetext.settings.get('previews.enabled') == 'false') {
136-
previewsSelect.value = '0';
137-
if (firetext.settings.get('previews.enabled') != 'never') {
138-
firetext.settings.save('previews.enabled', 'never');
139-
}
140-
} else { // true, auto
141-
previewsSelect.value = '2';
142-
if (firetext.settings.get('previews.enabled') != 'auto') {
143-
firetext.settings.save('previews.enabled', 'auto');
144-
}
145+
switch (firetext.settings.get('previews.enabled')) {
146+
case "false":
147+
case "never":
148+
previewsSelect.value = '0';
149+
150+
// Fix old value
151+
if (firetext.settings.get('previews.enabled') == 'false') {
152+
firetext.settings.save('previews.enabled', 'never');
153+
}
154+
break;
155+
case "always":
156+
previewsSelect.value = '1';
157+
break;
158+
case "auto":
159+
previewsSelect.value = '2';
160+
break;
145161
}
146162
updatePreviewsEnabled();
147163
previewsSelect.addEventListener('change', function () {
@@ -163,13 +179,13 @@ firetext.settings.init = function () {
163179
});
164180

165181
// Stats
166-
if (firetext.settings.get('stats.enabled') != 'false') {
167-
statsEnabled.setAttribute('checked', '');
168-
if (firetext.settings.get('stats.enabled') != 'true') {
169-
firetext.settings.save('stats.enabled', 'true');
170-
}
171-
} else {
172-
statsEnabled.removeAttribute('checked');
182+
switch (firetext.settings.get('stats.enabled')) {
183+
case "true":
184+
statsEnabled.setAttribute('checked', '');
185+
break;
186+
case "false":
187+
statsEnabled.removeAttribute('checked');
188+
break;
173189
}
174190
statsEnabled.onchange = function () {
175191
firetext.settings.save('stats.enabled', this.checked);
@@ -185,8 +201,12 @@ firetext.settings.init = function () {
185201
};
186202

187203
firetext.settings.get = function (name) {
188-
name = ("firetext.settings."+name);
189-
return localStorage.getItem(name);
204+
var localStorageItem = localStorage.getItem(("firetext.settings."+name));
205+
if (localStorageItem) {
206+
return localStorageItem;
207+
} else {
208+
return defaultSettings[name];
209+
}
190210
};
191211

192212
firetext.settings.save = function (name, value) {

0 commit comments

Comments
 (0)