Changeset View
Changeset View
Standalone View
Standalone View
extension/utils.js
Show All 16 Lines | |||||
17 | 17 | | |||
18 | class SettingsUtils { | 18 | class SettingsUtils { | ||
19 | static storage() { | 19 | static storage() { | ||
20 | return (IS_FIREFOX ? chrome.storage.local : chrome.storage.sync); | 20 | return (IS_FIREFOX ? chrome.storage.local : chrome.storage.sync); | ||
21 | } | 21 | } | ||
22 | 22 | | |||
23 | static get() { | 23 | static get() { | ||
24 | return new Promise((resolve, reject) => { | 24 | return new Promise((resolve, reject) => { | ||
25 | SettingsUtils.storage().get(DEFAULT_EXTENSION_SETTINGS, (items) => { | 25 | SettingsUtils.storage().get(null /* get all */, (items) => { | ||
26 | const error = chrome.runtime.lastError; | 26 | const error = chrome.runtime.lastError; | ||
27 | if (error) { | 27 | if (error) { | ||
28 | return reject(error); | 28 | return reject(error); | ||
29 | } | 29 | } | ||
30 | 30 | | |||
31 | // Passing a default Object get() only returns defaults for the top level of the object, | ||||
32 | // so we need to merge the level underneath manually. | ||||
33 | const addObjectInto = (obj, add) => { | ||||
34 | if (typeof add !== "object" || Array.isArray(add)) { | ||||
35 | return; | ||||
36 | } | ||||
37 | | ||||
38 | Object.keys(add).forEach((key) => { | ||||
39 | if (obj.hasOwnProperty(key)) { | ||||
fvogt: Why not if/else? | |||||
fvogt: I'd invert the condition | |||||
40 | addObjectInto(obj[key], add[key]); | ||||
41 | } else { | ||||
42 | obj[key] = add[key]; | ||||
43 | } | ||||
44 | }); | ||||
45 | }; | ||||
46 | | ||||
47 | addObjectInto(items, DEFAULT_EXTENSION_SETTINGS); | ||||
31 | resolve(items); | 48 | resolve(items); | ||
32 | }); | 49 | }); | ||
33 | }); | 50 | }); | ||
34 | } | 51 | } | ||
35 | 52 | | |||
36 | static set(settings) { | 53 | static set(settings) { | ||
37 | return new Promise((resolve, reject) => { | 54 | return new Promise((resolve, reject) => { | ||
38 | try { | 55 | try { | ||
Show All 18 Lines |
Why not if/else?