Skip to content

Instantly share code, notes, and snippets.

@wildskyf
Last active July 28, 2019 09:20
Show Gist options
  • Save wildskyf/991515259f275f31cfc77dc2318cd206 to your computer and use it in GitHub Desktop.
Save wildskyf/991515259f275f31cfc77dc2318cd206 to your computer and use it in GitHub Desktop.
Web extension: use for updating storage version. credit to @ettoolong
const loadPreference = async defaultPreference => {
let results = await browser.storage.sync.get()
if ((typeof results.length === 'number') && (results.length > 0)) {
results = results[0]
}
if (!results.version) {
await browser.storage.sync.set(defaultPreference)
return defaultPreference
}
if (results.version === defaultPreference.version) return results
let updateKeys = Object.keys(defaultPreference).filter( key => results[key] === undefined)
if (updateKeys.length === 0) return defaultPreference;
let update = updateKeys.reduce( (obj, key) => ({
...obj,
key: defaultPreference[key]
}), {})
await browser.storage.sync.set(update)
return {
...results,
...update
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment