aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/local-store.js
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2018-04-25 00:01:39 +0800
committerDan <danjm.com@gmail.com>2018-04-25 00:01:39 +0800
commit02a6d2089ede7d3faf4990c40b85b9f773f82c64 (patch)
treea46c581fae872d7ced368f067b8ae7b0df0778fd /app/scripts/lib/local-store.js
parent59c887301aba5d746d669441ec78ef7ec5de3146 (diff)
parent66ae4a948abbebdb513f9bd60d47fda36095e8df (diff)
downloadtangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar.gz
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar.bz2
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar.lz
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar.xz
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.tar.zst
tangerine-wallet-browser-02a6d2089ede7d3faf4990c40b85b9f773f82c64.zip
Merge branch 'master' into i3725-refactor-send-component
Diffstat (limited to 'app/scripts/lib/local-store.js')
-rw-r--r--app/scripts/lib/local-store.js38
1 files changed, 33 insertions, 5 deletions
diff --git a/app/scripts/lib/local-store.js b/app/scripts/lib/local-store.js
index 5b47985f6..139ff86bd 100644
--- a/app/scripts/lib/local-store.js
+++ b/app/scripts/lib/local-store.js
@@ -1,10 +1,13 @@
-// We should not rely on local storage in an extension!
-// We should use this instead!
-// https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/storage/local
-
const extension = require('extensionizer')
+const log = require('loglevel')
+/**
+ * A wrapper around the extension's storage local API
+ */
module.exports = class ExtensionStore {
+ /**
+ * @constructor
+ */
constructor() {
this.isSupported = !!(extension.storage.local)
if (!this.isSupported) {
@@ -12,6 +15,10 @@ module.exports = class ExtensionStore {
}
}
+ /**
+ * Returns all of the keys currently saved
+ * @return {Promise<*>}
+ */
async get() {
if (!this.isSupported) return undefined
const result = await this._get()
@@ -24,14 +31,24 @@ module.exports = class ExtensionStore {
}
}
+ /**
+ * Sets the key in local state
+ * @param {object} state - The state to set
+ * @return {Promise<void>}
+ */
async set(state) {
return this._set(state)
}
+ /**
+ * Returns all of the keys currently saved
+ * @private
+ * @return {object} the key-value map from local storage
+ */
_get() {
const local = extension.storage.local
return new Promise((resolve, reject) => {
- local.get(null, (result) => {
+ local.get(null, (/** @type {any} */ result) => {
const err = extension.runtime.lastError
if (err) {
reject(err)
@@ -42,6 +59,12 @@ module.exports = class ExtensionStore {
})
}
+ /**
+ * Sets the key in local state
+ * @param {object} obj - The key to set
+ * @return {Promise<void>}
+ * @private
+ */
_set(obj) {
const local = extension.storage.local
return new Promise((resolve, reject) => {
@@ -57,6 +80,11 @@ module.exports = class ExtensionStore {
}
}
+/**
+ * Returns whether or not the given object contains no keys
+ * @param {object} obj - The object to check
+ * @returns {boolean}
+ */
function isEmpty(obj) {
return Object.keys(obj).length === 0
}