aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2021-08-27 14:54:19 +0200
committerWojtek Kosior <koszko@koszko.org>2021-08-27 14:54:19 +0200
commit53891495d6f6b901da3058b1227d326313d922e9 (patch)
treed05005bde363be333ac71f25bd001fd7916af996 /common
parent48f76d7004da4bd4998d0c79266c62f893cfa7d3 (diff)
downloadbrowser-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.js49
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
+ */