A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
902 B
32 lines
902 B
import DefaultSettings from './default'; |
|
import * as settingsValues from './values'; |
|
|
|
const loadRaw = async(): Promise<any> => { |
|
let { settings } = await browser.storage.local.get('settings'); |
|
if (!settings) { |
|
return DefaultSettings; |
|
} |
|
return { ...DefaultSettings, ...settings as object }; |
|
}; |
|
|
|
const loadValue = async() => { |
|
let settings = await loadRaw(); |
|
let value = JSON.parse(DefaultSettings.json); |
|
if (settings.source === 'json') { |
|
value = settingsValues.valueFromJson(settings.json); |
|
} else if (settings.source === 'form') { |
|
value = settingsValues.valueFromForm(settings.form); |
|
} |
|
if (!value.properties) { |
|
value.properties = {}; |
|
} |
|
return { ...settingsValues.valueFromJson(DefaultSettings.json), ...value }; |
|
}; |
|
|
|
const save = (settings: any): Promise<any> => { |
|
return browser.storage.local.set({ |
|
settings, |
|
}); |
|
}; |
|
|
|
export { loadRaw, loadValue, save };
|
|
|