aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers/preferences.js
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-02-28 02:39:48 +0800
committerDan Finlay <dan@danfinlay.com>2017-02-28 02:40:37 +0800
commitb5d03cd52418cfd09ce51a23c01e78262d3ffc9b (patch)
treee19ca7c5a1880f8849376794a42c6b85fbf80fdb /app/scripts/controllers/preferences.js
parent5edb3db96939de2dee31fa19cb8e715dc649bfd6 (diff)
downloadtangerine-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.js64
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