From 7550974a36bdd9dcebd2669936eec9a5ee7cbd2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20Mi=C3=B1o?= Date: Mon, 12 Aug 2019 20:08:54 -0400 Subject: [PATCH] feature: sync tokens (#991) --- app/core/Engine.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/core/Engine.js b/app/core/Engine.js index d62fc97eda4..8f32ce39fd1 100644 --- a/app/core/Engine.js +++ b/app/core/Engine.js @@ -257,15 +257,33 @@ class Engine { KeyringController, PreferencesController, NetworkController, - TransactionController + TransactionController, + AssetsController } = this.datamodel.context; + // Select same network ? + await NetworkController.setProviderType(network.provider.type); + // Recreate accounts await KeyringController.createNewVaultAndRestore(pass, seed); for (let i = 0; i < accounts.hd.length - 1; i++) { await KeyringController.addNewAccount(); } + // Sync tokens + const allTokens = {}; + Object.keys(preferences.accountTokens).forEach(address => { + const checksummedAddress = toChecksumAddress(address); + allTokens[checksummedAddress] = {}; + Object.keys(preferences.accountTokens[address]).forEach( + networkType => + (allTokens[checksummedAddress][networkType] = preferences.accountTokens[address][networkType].map( + token => ({ ...token, address: toChecksumAddress(token.address) }) + )) + ); + }); + await AssetsController.update({ allTokens }); + // Restore preferences const updatedPref = { ...preferences, identities: {} }; Object.keys(preferences.identities).forEach(address => { @@ -301,8 +319,6 @@ class Engine { })) }); - // Select same network ? - await NetworkController.setProviderType(network.provider.type); return true; }; }