diff options
author | Wojtek Kosior <koszko@koszko.org> | 2021-08-27 14:54:19 +0200 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2021-08-27 14:54:19 +0200 |
commit | 53891495d6f6b901da3058b1227d326313d922e9 (patch) | |
tree | d05005bde363be333ac71f25bd001fd7916af996 /common | |
parent | 48f76d7004da4bd4998d0c79266c62f893cfa7d3 (diff) | |
download | browser-extension-53891495d6f6b901da3058b1227d326313d922e9.tar.gz browser-extension-53891495d6f6b901da3058b1227d326313d922e9.zip |
put simplest, asynchronous local storage operations in a separate file
Diffstat (limited to 'common')
-rw-r--r-- | common/storage_raw.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/common/storage_raw.js b/common/storage_raw.js new file mode 100644 index 0000000..9ce3980 --- /dev/null +++ b/common/storage_raw.js @@ -0,0 +1,49 @@ +/** + * part of Hachette + * Basic wrappers for storage API functions. + * + * Copyright (C) 2021 Wojtek Kosior + * Redistribution terms are gathered in the `copyright' file. + */ + +/* + * IMPORTS_START + * IMPORT TYPE_PREFIX + * IMPORT browser + * IMPORT is_chrome + * IMPORTS_END + */ + +async function get(key) +{ + /* Fix for fact that Chrome does not use promises here */ + const promise = is_chrome ? + new Promise(resolve => chrome.storage.local.get(key, resolve)) : + browser.storage.local.get(key); + + return (await promise)[key]; +} + +async function set(key_or_object, value) +{ + return browser.storage.local.set(typeof key_or_object === "object" ? + key_or_object : {[key]: value}); +} + +async function set_var(name, value) +{ + return set(TYPE_PREFIX.VAR + name, value); +} + +async function get_var(name) +{ + return get(TYPE_PREFIX.VAR + name); +} + +const raw_storage = {get, set, get_var, set_var}; + +/* + * EXPORTS_START + * EXPORT raw_storage + * EXPORTS_END + */ |