aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/background.js
diff options
context:
space:
mode:
authorkumavis <aaron@kumavis.me>2018-04-07 03:05:24 +0800
committerkumavis <aaron@kumavis.me>2018-04-07 03:05:24 +0800
commit0685381fdcd3ab8cebc76bf73e9678deaf5d15f8 (patch)
tree9ddd22a32caca564895daadd88426b8f05bf3888 /app/scripts/background.js
parent054dce8d665da11fbe619a17138077b6e75c0415 (diff)
downloadtangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.gz
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.bz2
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.lz
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.xz
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.zst
tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.zip
metamask - attempt recovery from empty vault
Diffstat (limited to 'app/scripts/background.js')
-rw-r--r--app/scripts/background.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/scripts/background.js b/app/scripts/background.js
index ec586f642..a4d95289b 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