diff options
author | Thomas Huang <thomas.b.huang@gmail.com> | 2017-06-28 01:32:28 +0800 |
---|---|---|
committer | Thomas Huang <thomas.b.huang@gmail.com> | 2017-06-28 01:32:28 +0800 |
commit | 1977417017eec00a546ab816fa635ea575e4835d (patch) | |
tree | 77f942810eda1665b4b8974077985f082bfc24c3 /app/scripts/controllers | |
parent | 235cb1f2d790a7bda349ab0d33ad1009751a8536 (diff) | |
parent | 48f7cff8c0e765e85532c860c5f3061ca1d6deb7 (diff) | |
download | tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar.gz tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar.bz2 tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar.lz tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar.xz tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.tar.zst tangerine-wallet-browser-1977417017eec00a546ab816fa635ea575e4835d.zip |
Merge branch 'master' into i1473-dappDefaultGasPrice
Diffstat (limited to 'app/scripts/controllers')
-rw-r--r-- | app/scripts/controllers/infura.js | 42 | ||||
-rw-r--r-- | app/scripts/controllers/preferences.js | 8 | ||||
-rw-r--r-- | app/scripts/controllers/transactions.js | 2 |
3 files changed, 51 insertions, 1 deletions
diff --git a/app/scripts/controllers/infura.js b/app/scripts/controllers/infura.js new file mode 100644 index 000000000..98375b446 --- /dev/null +++ b/app/scripts/controllers/infura.js @@ -0,0 +1,42 @@ +const ObservableStore = require('obs-store') +const extend = require('xtend') + +// every ten minutes +const POLLING_INTERVAL = 300000 + +class InfuraController { + + constructor (opts = {}) { + const initState = extend({ + infuraNetworkStatus: {}, + }, opts.initState) + this.store = new ObservableStore(initState) + } + + // + // PUBLIC METHODS + // + + // Responsible for retrieving the status of Infura's nodes. Can return either + // ok, degraded, or down. + checkInfuraNetworkStatus () { + return fetch('https://api.infura.io/v1/status/metamask') + .then(response => response.json()) + .then((parsedResponse) => { + this.store.updateState({ + infuraNetworkStatus: parsedResponse, + }) + }) + } + + scheduleInfuraNetworkCheck () { + if (this.conversionInterval) { + clearInterval(this.conversionInterval) + } + this.conversionInterval = setInterval(() => { + this.checkInfuraNetworkStatus() + }, POLLING_INTERVAL) + } +} + +module.exports = InfuraController diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 7212c7c43..aa8e05fcc 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -7,6 +7,7 @@ class PreferencesController { constructor (opts = {}) { const initState = extend({ frequentRpcList: [], + currentAccountTab: 'history', }, opts.initState) this.store = new ObservableStore(initState) } @@ -35,6 +36,13 @@ class PreferencesController { }) } + setCurrentAccountTab (currentAccountTab) { + return new Promise((resolve, reject) => { + this.store.updateState({ currentAccountTab }) + resolve() + }) + } + addToFrequentRpcList (_url) { const rpcList = this.getFrequentRpcList() const index = rpcList.findIndex((element) => { return element === _url }) diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js index e3c2d74d3..1efa96610 100644 --- a/app/scripts/controllers/transactions.js +++ b/app/scripts/controllers/transactions.js @@ -384,13 +384,13 @@ module.exports = class TransactionController extends EventEmitter { // - `'signed'` the tx is signed // - `'submitted'` the tx is sent to a server // - `'confirmed'` the tx has been included in a block. + // - `'failed'` the tx failed for some reason, included on tx data. _setTxStatus (txId, status) { var txMeta = this.getTx(txId) txMeta.status = status this.emit(`${txMeta.id}:${status}`, txId) if (status === 'submitted' || status === 'rejected') { this.emit(`${txMeta.id}:finished`, txMeta) - } this.updateTx(txMeta) this.emit('updateBadge') |