forked from AshleyF/briefcubing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.js
58 lines (53 loc) · 1.72 KB
/
settings.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var Settings = (function () {
const VERSION = 4;
var settings = { // defaults
version: VERSION,
randomAuf: true,
randomOrder: false,
simpleDiagram: false,
llHide: "show_all",
upColors: { yellow: true, red: true, blue: false },
algs: ["cmll_s_left_bar"],
algAufPrefs: {},
algStats: {},
timeout: 3,
lang: "en"
};
if (localStorage.settings) {
var stored = JSON.parse(localStorage.settings);
if (stored) {
switch (stored.version) {
case 1: // migrate to version 2
stored.version = VERSION;
settings = stored;
settings.algAufPrefs = {};
saveSettings();
break;
case 2: // migrate to version 3
stored.version = VERSION;
settings = stored;
settings.algStats = {};
break;
case 3: // accept version 3
stored.version = VERSION;
settings = stored;
settings.llHide = "show_all";
break;
case 4: // accept version 3
settings = stored;
break;
default: return; // discard unknown version
}
}
}
function saveSettings() {
localStorage.settings = JSON.stringify(settings);
}
function deleteSettings() {
localStorage.removeItem("settings");
}
return {
values: settings,
save: saveSettings,
delete: deleteSettings };
}());