1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-29 23:58:06 +01:00

Persist lost identities to storage for later analysis

This commit is contained in:
Dan Finlay 2018-06-04 14:05:56 -07:00
parent f5d4acf53b
commit 8fcaa2cf56
2 changed files with 33 additions and 2 deletions

View File

@ -28,6 +28,7 @@ class PreferencesController {
featureFlags: {},
currentLocale: opts.initLangCode,
identities: {},
lostIdentities: {},
}, opts.initState)
this.store = new ObservableStore(initState)
}
@ -106,18 +107,19 @@ class PreferencesController {
* @returns {Promise<string>} selectedAddress the selected address.
*/
syncAddresses (addresses) {
const identities = this.store.getState().identities
let { identities, lostIdentities } = this.store.getState()
Object.keys(identities).forEach((identity) => {
if (!addresses.includes(identity)) {
delete identities[identity]
lostIdentities[identity] = identities[identity]
// TODO: Report the bug to Sentry including the now-lost identity.
alert('Error 4486: MetaMask has encountered a very strange error. Please open a support issue immediately at support@metamask.io.')
}
})
this.store.updateState({ identities })
this.store.updateState({ identities, lostIdentities })
this.addAddresses(addresses)
let selected = this.getSelectedAddress()

View File

@ -0,0 +1,29 @@
class BugNotifier {
notify (message) {
postData('http://example.com/answer', {answer: 42})
.then(data => console.log(data)) // JSON from `response.json()` call
.catch(error => console.error(error))
}
}
function postData(url, data) {
// Default options are marked with *
return fetch(url, {
body: JSON.stringify(data), // must match 'Content-Type' header
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, same-origin, *omit
headers: {
'user-agent': 'Mozilla/4.0 MDN Example',
'content-type': 'application/json'
},
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, cors, *same-origin
redirect: 'follow', // manual, *follow, error
referrer: 'no-referrer', // *client, no-referrer
})
.then(response => response.json()) // parses response to JSON
}
module.exports = BugNotifier