specific add and remove methods for frequentRpcList (#5554)

feature/default_network_editable
Esteban Miño 6 years ago committed by Whymarrh Whitby
parent ea214945cf
commit 7c4f98ffd6
  1. 51
      app/scripts/controllers/preferences.js
  2. 4
      app/scripts/metamask-controller.js
  3. 19
      test/unit/app/controllers/preferences-controller-test.js

@ -374,22 +374,6 @@ class PreferencesController {
return Promise.resolve(label) return Promise.resolve(label)
} }
/**
* Gets an updated rpc list from this.addToFrequentRpcList() and sets the `frequentRpcList` to this update list.
*
* @param {string} _url The the new rpc url to add to the updated list
* @param {bool} remove Remove selected url
* @returns {Promise<void>} Promise resolves with undefined
*
*/
updateFrequentRpcList (_url, remove = false) {
return this.addToFrequentRpcList(_url, remove)
.then((rpcList) => {
this.store.updateState({ frequentRpcList: rpcList })
return Promise.resolve()
})
}
/** /**
* Setter for the `currentAccountTab` property * Setter for the `currentAccountTab` property
* *
@ -405,24 +389,39 @@ class PreferencesController {
} }
/** /**
* Returns an updated rpcList based on the passed url and the current list. * Adds custom RPC url to state.
* The returned list will have a max length of 3. If the _url currently exists it the list, it will be moved to the
* end of the list. The current list is modified and returned as a promise.
* *
* @param {string} _url The rpc url to add to the frequentRpcList. * @param {string} url The RPC url to add to frequentRpcList.
* @param {bool} remove Remove selected url * @returns {Promise<array>} Promise resolving to updated frequentRpcList.
* @returns {Promise<array>} The updated frequentRpcList.
* *
*/ */
addToFrequentRpcList (_url, remove = false) { addToFrequentRpcList (url) {
const rpcList = this.getFrequentRpcList() const rpcList = this.getFrequentRpcList()
const index = rpcList.findIndex((element) => { return element === _url }) const index = rpcList.findIndex((element) => { return element === url })
if (index !== -1) { if (index !== -1) {
rpcList.splice(index, 1) rpcList.splice(index, 1)
} }
if (!remove && _url !== 'http://localhost:8545') { if (url !== 'http://localhost:8545') {
rpcList.push(_url) rpcList.push(url)
}
this.store.updateState({ frequentRpcList: rpcList })
return Promise.resolve(rpcList)
}
/**
* Removes custom RPC url from state.
*
* @param {string} url The RPC url to remove from frequentRpcList.
* @returns {Promise<array>} Promise resolving to updated frequentRpcList.
*
*/
removeFromFrequentRpcList (url) {
const rpcList = this.getFrequentRpcList()
const index = rpcList.findIndex((element) => { return element === url })
if (index !== -1) {
rpcList.splice(index, 1)
} }
this.store.updateState({ frequentRpcList: rpcList })
return Promise.resolve(rpcList) return Promise.resolve(rpcList)
} }

@ -1458,7 +1458,7 @@ module.exports = class MetamaskController extends EventEmitter {
*/ */
async setCustomRpc (rpcTarget) { async setCustomRpc (rpcTarget) {
this.networkController.setRpcTarget(rpcTarget) this.networkController.setRpcTarget(rpcTarget)
await this.preferencesController.updateFrequentRpcList(rpcTarget) await this.preferencesController.addToFrequentRpcList(rpcTarget)
return rpcTarget return rpcTarget
} }
@ -1467,7 +1467,7 @@ module.exports = class MetamaskController extends EventEmitter {
* @param {string} rpcTarget - A RPC URL to delete. * @param {string} rpcTarget - A RPC URL to delete.
*/ */
async delCustomRpc (rpcTarget) { async delCustomRpc (rpcTarget) {
await this.preferencesController.updateFrequentRpcList(rpcTarget, true) await this.preferencesController.removeFromFrequentRpcList(rpcTarget)
} }
/** /**

@ -479,5 +479,24 @@ describe('preferences controller', function () {
assert.equal(preferencesController.store.getState().seedWords, 'foo bar baz') assert.equal(preferencesController.store.getState().seedWords, 'foo bar baz')
}) })
}) })
describe('on updateFrequentRpcList', function () {
it('should add custom RPC url to state', function () {
preferencesController.addToFrequentRpcList('rpc_url')
preferencesController.addToFrequentRpcList('http://localhost:8545')
assert.deepEqual(preferencesController.store.getState().frequentRpcList, ['rpc_url'])
preferencesController.addToFrequentRpcList('rpc_url')
assert.deepEqual(preferencesController.store.getState().frequentRpcList, ['rpc_url'])
})
it('should remove custom RPC url from state', function () {
preferencesController.addToFrequentRpcList('rpc_url')
assert.deepEqual(preferencesController.store.getState().frequentRpcList, ['rpc_url'])
preferencesController.removeFromFrequentRpcList('other_rpc_url')
preferencesController.removeFromFrequentRpcList('http://localhost:8545')
preferencesController.removeFromFrequentRpcList('rpc_url')
assert.deepEqual(preferencesController.store.getState().frequentRpcList, [])
})
})
}) })

Loading…
Cancel
Save