blob: 0efb6c97875204bc2f8db40ffc21c6b54b0d33c5 [file] [log] [blame]
Adrià Vilanova Martínez3465e772021-07-11 19:18:41 +02001import optionsPrototype from './optionsPrototype.json5';
2import specialOptions from './specialOptions.json5';
3
4export {optionsPrototype, specialOptions};
5
6// Adds missing options with their default value. If |dryRun| is set to false,
7// they are also saved to the sync storage area.
8export function cleanUpOptions(options, dryRun = false) {
9 console.log('[cleanUpOptions] Previous options', JSON.stringify(options));
10
11 if (typeof options !== 'object' || options === null) options = {};
12
13 var ok = true;
14 for (const [opt, optMeta] of Object.entries(optionsPrototype)) {
15 if (!(opt in options)) {
16 ok = false;
17 options[opt] = optMeta['defaultValue'];
18 }
19 }
20
21 console.log('[cleanUpOptions] New options', JSON.stringify(options));
22
23 if (!ok && !dryRun) {
24 chrome.storage.sync.set(options);
25 }
26
27 return options;
28}