From 0ad77970762ac5389e264ce70f633dddd8d58844 Mon Sep 17 00:00:00 2001 From: Frankie Date: Thu, 17 Jan 2019 09:10:33 -1000 Subject: 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 --- app/scripts/controllers/preferences.js | 6 ++++- app/scripts/migrations/030.js | 47 ++++++++++++++++++++++++++++++++++ app/scripts/migrations/index.js | 1 + 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 app/scripts/migrations/030.js (limited to 'app/scripts') 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'), ] -- cgit v1.2.3