blob: 8845b810a7eef2bd3176aa44d0d3fa033c452d7f [file] [log] [blame]
avm999634c1a6792020-08-31 21:30:42 +02001const defaultOptions = {
2 'list': true,
3 'thread': true,
4 'threadall': false,
5 'fixedtoolbar': false,
6 'redirect': false,
7 'history': false,
8 'loaddrafts': false,
9 'batchduplicate': false,
10 'escalatethreads': false,
11 'movethreads': false,
12 'increasecontrast': false,
13 'stickysidebarheaders': false,
14 'profileindicator': false,
avm99963ad65e752020-09-01 00:13:59 +020015 'profileindicatoralt': false,
16 'profileindicatoralt_months': 12,
avm999634c1a6792020-08-31 21:30:42 +020017};
18
avm99963ad65e752020-09-01 00:13:59 +020019const specialOptions = [
20 'profileindicatoralt_months',
21];
22
avm999634c1a6792020-08-31 21:30:42 +020023const deprecatedOptions = [
24 'escalatethreads',
25 'movethreads',
26 'batchduplicate',
27];
28
29function isEmpty(obj) {
30 return Object.keys(obj).length === 0;
31}
32
33function cleanUpOptions(options) {
34 console.log('[cleanUpOptions] Previous options', options);
avm99963ad65e752020-09-01 00:13:59 +020035
36 if (typeof options !== 'object' || options === null) {
37 options = defaultOptions;
38 } else {
39 var ok = true;
40 for (const [opt, value] of Object.entries(defaultOptions)) {
41 if (!(opt in options)) {
42 ok = false;
43 options[opt] = value;
44 }
avm999634c1a6792020-08-31 21:30:42 +020045 }
46 }
47
48 console.log('[cleanUpOptions] New options', options);
49
50 if (!ok) {
51 chrome.storage.sync.set(options);
52 }
53
54 return options;
55}