aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/background.js
diff options
context:
space:
mode:
authorDan <danjm.com@gmail.com>2018-04-10 17:49:01 +0800
committerDan <danjm.com@gmail.com>2018-04-10 17:49:01 +0800
commitf4d8da927734b2dcd597d1cc833f9fe6ac59cc77 (patch)
tree24984f09e1a0a86b8187ffee5197e3857a2b10cc /app/scripts/background.js
parent284dd85a99f538b77fd477f4952117d1792f64a5 (diff)
parent29dab1e9e00c1c1e6ad834026df51b2839d3171d (diff)
downloadtangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar.gz
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar.bz2
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar.lz
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar.xz
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.tar.zst
tangerine-wallet-browser-f4d8da927734b2dcd597d1cc833f9fe6ac59cc77.zip
Merge branch 'master' into i3725-refactor-send-component
Diffstat (limited to 'app/scripts/background.js')
-rw-r--r--app/scripts/background.js34
1 files changed, 31 insertions, 3 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js
index ec586f642..5878cd2e8 100644
--- a/app/scripts/background.js
+++ b/app/scripts/background.js
@@ -78,6 +78,28 @@ async function loadStateFromPersistence () {
diskStore.getState() ||
migrator.generateInitialState(firstTimeState)
+ // check if somehow state is empty
+ // this should never happen but new error reporting suggests that it has
+ // for a small number of users
+ // https://github.com/metamask/metamask-extension/issues/3919
+ if (versionedData && !versionedData.data) {
+ // try to recover from diskStore incase only localStore is bad
+ const diskStoreState = diskStore.getState()
+ if (diskStoreState && diskStoreState.data) {
+ // we were able to recover (though it might be old)
+ versionedData = diskStoreState
+ const vaultStructure = getObjStructure(versionedData)
+ raven.captureMessage('MetaMask - Empty vault found - recovered from diskStore', {
+ // "extra" key is required by Sentry
+ extra: { vaultStructure },
+ })
+ } else {
+ // unable to recover, clear state
+ versionedData = migrator.generateInitialState(firstTimeState)
+ raven.captureMessage('MetaMask - Empty vault found - unable to recover')
+ }
+ }
+
// report migration errors to sentry
migrator.on('error', (err) => {
// get vault structure without secrets
@@ -140,9 +162,9 @@ function setupController (initState, initLangCode) {
asStream(controller.store),
debounce(1000),
storeTransform(versionifyData),
- storeTransform(syncDataWithExtension),
+ storeTransform(persistData),
(error) => {
- log.error('pump hit error', error)
+ log.error('MetaMask - Persistence pipeline failed', error)
}
)
@@ -151,7 +173,13 @@ function setupController (initState, initLangCode) {
return versionedData
}
- function syncDataWithExtension(state) {
+ function persistData(state) {
+ if (!state) {
+ throw new Error('MetaMask - updated state is missing', state)
+ }
+ if (!state.data) {
+ throw new Error('MetaMask - updated state does not have data', state)
+ }
if (localStore.isSupported) {
localStore.set(state)
.catch((err) => {