aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers/preferences.js
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-03-09 07:19:33 +0800
committerDan Finlay <dan@danfinlay.com>2017-03-09 07:19:33 +0800
commite3f6c010abb5cec35910dc4ea83f451287d25f11 (patch)
treebcc8f6b5e70b136d45644ae56024b253086e8b64 /app/scripts/controllers/preferences.js
parent69d4aafc3e8fd62875e5da2c2c6c7b3bdac5bf9f (diff)
parent1fbe4a801a05523cbdf97f7d8491affb49ed9bc6 (diff)
downloadtangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar.gz
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar.bz2
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar.lz
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar.xz
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.tar.zst
tangerine-wallet-browser-e3f6c010abb5cec35910dc4ea83f451287d25f11.zip
Get basic ENS working
& merge master into ENS branch.
Diffstat (limited to 'app/scripts/controllers/preferences.js')
-rw-r--r--app/scripts/controllers/preferences.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js
new file mode 100644
index 000000000..18fccf11b
--- /dev/null
+++ b/app/scripts/controllers/preferences.js
@@ -0,0 +1,63 @@
+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 Promise.resolve()
+ })
+ }
+
+ 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