diff options
author | Dan Finlay <dan@danfinlay.com> | 2017-02-28 02:39:48 +0800 |
---|---|---|
committer | Dan Finlay <dan@danfinlay.com> | 2017-02-28 02:40:37 +0800 |
commit | b5d03cd52418cfd09ce51a23c01e78262d3ffc9b (patch) | |
tree | e19ca7c5a1880f8849376794a42c6b85fbf80fdb /app/scripts/controllers/preferences.js | |
parent | 5edb3db96939de2dee31fa19cb8e715dc649bfd6 (diff) | |
download | tangerine-wallet-browser-b5d03cd52418cfd09ce51a23c01e78262d3ffc9b.tar.gz tangerine-wallet-browser-b5d03cd52418cfd09ce51a23c01e78262d3ffc9b.tar.zst tangerine-wallet-browser-b5d03cd52418cfd09ce51a23c01e78262d3ffc9b.zip |
add controllers to root scripts folder
Diffstat (limited to 'app/scripts/controllers/preferences.js')
-rw-r--r-- | app/scripts/controllers/preferences.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js new file mode 100644 index 000000000..9343fe67b --- /dev/null +++ b/app/scripts/controllers/preferences.js @@ -0,0 +1,64 @@ +const ObservableStore = require('obs-store') +const normalizeAddress = require('eth-sig-util').normalize +const extend = require('xtend') + + +class PreferencesController { + + constructor (opts = {}) { + const initState = extend({ frequentRpcList: [] }, opts.initState) + this.store = new ObservableStore(initState) + } + + // + // PUBLIC METHODS + // + + setSelectedAddress (_address) { + return new Promise((resolve, reject) => { + const address = normalizeAddress(_address) + this.store.updateState({ selectedAddress: address }) + resolve() + }) + } + + getSelectedAddress (_address) { + return this.store.getState().selectedAddress + } + + updateFrequentRpcList (_url) { + return this.addToFrequentRpcList(_url) + .then((rpcList) => { + this.store.updateState({ frequentRpcList: rpcList }) + return rpcList + }) + } + + addToFrequentRpcList (_url) { + let rpcList = this.getFrequentRpcList() + let index = rpcList.findIndex((element) => { return element === _url }) + if (index !== -1) { + rpcList.splice(index, 1) + } + if (_url !== 'http://localhost:8545') { + rpcList.push(_url) + } + if (rpcList.length > 2) { + rpcList.shift() + } + return Promise.resolve(rpcList) + } + + getFrequentRpcList () { + return this.store.getState().frequentRpcList + } + + // + // PRIVATE METHODS + // + + + +} + +module.exports = PreferencesController |