diff options
author | Frankie <frankie.diamond@gmail.com> | 2019-01-18 03:10:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-18 03:10:33 +0800 |
commit | 0ad77970762ac5389e264ce70f633dddd8d58844 (patch) | |
tree | 4f96290fc9b98e4ba3d76fd4d7b8e9378ede12e9 /app/scripts | |
parent | de0ac53008715803408f37108941b3f49d1be952 (diff) | |
download | tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar.gz tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar.bz2 tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar.lz tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar.xz tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.tar.zst tangerine-wallet-browser-0ad77970762ac5389e264ce70f633dddd8d58844.zip |
I#5956 fix 1 (#6026)
* prevent invalid chainId's when adding cusstom rpcs
* migration 30 removes invalid chaids from preferences and networkController for custom rpcs
Diffstat (limited to 'app/scripts')
-rw-r--r-- | app/scripts/controllers/preferences.js | 6 | ||||
-rw-r--r-- | app/scripts/migrations/030.js | 47 | ||||
-rw-r--r-- | app/scripts/migrations/index.js | 1 |
3 files changed, 53 insertions, 1 deletions
diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index b21cdfb36..2faf8220b 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -408,7 +408,11 @@ class PreferencesController { rpcList.splice(index, 1) } if (url !== 'http://localhost:8545') { - rpcList.push({ rpcUrl: url, chainId, ticker, nickname }) + let checkedChainId + if (!!chainId && !Number.isNaN(parseInt(chainId))) { + checkedChainId = chainId + } + rpcList.push({ rpcUrl: url, chainId: checkedChainId, ticker, nickname }) } this.store.updateState({ frequentRpcListDetail: rpcList }) return Promise.resolve(rpcList) diff --git a/app/scripts/migrations/030.js b/app/scripts/migrations/030.js new file mode 100644 index 000000000..19b686c58 --- /dev/null +++ b/app/scripts/migrations/030.js @@ -0,0 +1,47 @@ +// next version number +const version = 30 + +/* + +removes invalid chaids from preferences and networkController for custom rpcs + +*/ + +const clone = require('clone') + +module.exports = { + version, + + migrate: async function (originalVersionedData) { + const versionedData = clone(originalVersionedData) + versionedData.meta.version = version + const state = versionedData.data + const newState = transformState(state) + versionedData.data = newState + return versionedData + }, +} + +function transformState (state) { + const newState = state + + const frequentRpcListDetail = newState.PreferencesController.frequentRpcListDetail + if (frequentRpcListDetail) { + frequentRpcListDetail.forEach((rpc, index) => { + if (!!rpc.chainId && Number.isNaN(parseInt(rpc.chainId))) { + delete frequentRpcListDetail[index].chainId + } + }) + newState.PreferencesController.frequentRpcListDetail = frequentRpcListDetail + } + + if (newState.NetworkController.network && Number.isNaN(parseInt(newState.NetworkController.network))) { + delete newState.NetworkController.network + } + + if (newState.NetworkController.provider && newState.NetworkController.provider.chainId && Number.isNaN(parseInt(newState.NetworkController.provider.chainId))) { + delete newState.NetworkController.provider.chainId + } + + return newState +} diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index 9344b77ed..99cca94b8 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -40,4 +40,5 @@ module.exports = [ require('./027'), require('./028'), require('./029'), + require('./030'), ] |