Skip to content

Instantly share code, notes, and snippets.

@evdokimovm
Last active September 2, 2023 16:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evdokimovm/b5a6ac3904ab58b84afcdb1873a3d975 to your computer and use it in GitHub Desktop.
Save evdokimovm/b5a6ac3904ab58b84afcdb1873a3d975 to your computer and use it in GitHub Desktop.
promise wrapper for chrome.storage.local.set and chrome.storage.local.get operations for chrome extensions

Promise wrapper for chrome.storage.local.set and chrome.storage.local.get operations for chrome extensions. It lets you to wait for asynchronous chrome.storage.local.set and chrome.storage.local.get to finish before continuing execution.

Usage example

// set data
await promiseWrapper({ user_settings: { ignore_pinned: false } }, storageSave)
// get data
var settings = await promiseWrapper('user_settings', storageGetAllFrom)
console.log(settings.ignore_pinned)
async function promiseWrapper(options, callback) {
return new Promise((resolve, reject) => {
try {
callback(options, resolve)
} catch (err) {
reject(err)
}
})
}
function storageSave(options, resolve) {
chrome.storage.local.set(options, () => resolve())
}
function storageGetAllFrom(collection, resolve) {
chrome.storage.local.get(collection, (data) => resolve(data[collection]))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment