aboutsummaryrefslogtreecommitdiff
path: root/common/storage_raw.js
diff options
context:
space:
mode:
Diffstat (limited to 'common/storage_raw.js')
-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
+ */