@ima/devtools
Version:
IMA.js debugging panel in the Chrome Developer Tools window.
46 lines (40 loc) • 1.24 kB
JavaScript
import defaultSettings from './defaultSettings';
/**
* Saves object to chrome.storage.local. Existing settings with the same key
* are overwritten.
*
* @param {object} settings key-value pair object.
*/
function setSettings(settings) {
chrome.storage.local.set(settings);
}
/**
* Promisified call to chrome.storage.local.get for getting current settings.
* Returned settings is merged with default settings json object.
*
* @param {?string} key Optional settings key, if null whole storage content is returned.
* @returns {Promise<object>}
*/
function getSettings(key = null) {
return new Promise(resolve => {
chrome.storage.local.get(key, result => {
if (key) {
resolve(result[key] !== undefined ? result[key] : defaultSettings[key]);
} else {
const { presets: defaultPresets, ...restSettings } = defaultSettings;
const { presets: resultPresets, ...resultRest } = result;
// Include default settings
const settings = {
...restSettings,
...resultRest,
presets: {
...resultPresets,
...defaultPresets,
},
};
resolve(settings);
}
});
});
}
export { setSettings, getSettings };