diff options
author | kumavis <aaron@kumavis.me> | 2018-04-07 03:05:24 +0800 |
---|---|---|
committer | kumavis <aaron@kumavis.me> | 2018-04-07 03:05:24 +0800 |
commit | 0685381fdcd3ab8cebc76bf73e9678deaf5d15f8 (patch) | |
tree | 9ddd22a32caca564895daadd88426b8f05bf3888 | |
parent | 054dce8d665da11fbe619a17138077b6e75c0415 (diff) | |
download | tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.gz tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.tar.zst tangerine-wallet-browser-0685381fdcd3ab8cebc76bf73e9678deaf5d15f8.zip |
metamask - attempt recovery from empty vault
-rw-r--r-- | app/scripts/background.js | 22 |
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 |