aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib
diff options
context:
space:
mode:
authorEllie Day <heyellieday@gmail.com>2018-01-03 13:31:17 +0800
committerEllie Day <heyellieday@gmail.com>2018-01-03 13:31:17 +0800
commit7184db7632ef79d4bde0e643fdc1a4ee910c77fb (patch)
treea634f4a92faf8aa84f061eb286b1bd656c45c84f /app/scripts/lib
parenta76324f6d397c3e746ba501cfd858c4869cb0af7 (diff)
downloadtangerine-wallet-browser-7184db7632ef79d4bde0e643fdc1a4ee910c77fb.tar.gz
tangerine-wallet-browser-7184db7632ef79d4bde0e643fdc1a4ee910c77fb.tar.zst
tangerine-wallet-browser-7184db7632ef79d4bde0e643fdc1a4ee910c77fb.zip
handle situation where storage.sync is disabled in certain versions of firefox
Diffstat (limited to 'app/scripts/lib')
-rw-r--r--app/scripts/lib/extension-store.js19
1 files changed, 17 insertions, 2 deletions
diff --git a/app/scripts/lib/extension-store.js b/app/scripts/lib/extension-store.js
index a8b730a65..dd0f82f36 100644
--- a/app/scripts/lib/extension-store.js
+++ b/app/scripts/lib/extension-store.js
@@ -1,11 +1,24 @@
const extension = require('extensionizer')
const KEYS_TO_SYNC = ['KeyringController', 'PreferencesController']
+const FIREFOX_SYNC_DISABLED_MESSAGE = 'Please set webextensions.storage.sync.enabled to true in about:config'
+
+const handleDisabledSyncAndResolve = (resolve, toResolve) => {
+ // Firefox 52 has sync available on extension.storage, but it is disabled by default
+ const lastError = extension.runtime.lastError
+ if (lastError && lastError.message.includes(FIREFOX_SYNC_DISABLED_MESSAGE)) {
+ resolve({})
+ } else {
+ resolve(toResolve)
+ }
+}
module.exports = class ExtensionStore {
async fetch() {
return new Promise((resolve) => {
- extension.storage.sync.get(KEYS_TO_SYNC, data => resolve(data))
+ extension.storage.sync.get(KEYS_TO_SYNC, (data) => {
+ handleDisabledSyncAndResolve(resolve, data)
+ })
})
}
async sync(state) {
@@ -14,7 +27,9 @@ module.exports = class ExtensionStore {
return result
}, {})
return new Promise((resolve) => {
- extension.storage.sync.set(dataToSync, () => resolve())
+ extension.storage.sync.set(dataToSync, () => {
+ handleDisabledSyncAndResolve(resolve)
+ })
})
}
}