aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-12-18 08:36:03 +0800
committerDan Finlay <dan@danfinlay.com>2017-12-18 08:36:55 +0800
commit10ff77477cf3163eaea5ac9485977d91bcc102c0 (patch)
tree2e69d27b8451e4fe5aa4acc6ac231e87dd1c1c6a /app/scripts/controllers
parent60081b88d6750ee7ef4b9edbab647b75a7fe6336 (diff)
downloadtangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar.gz
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar.bz2
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar.lz
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar.xz
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.tar.zst
tangerine-wallet-browser-10ff77477cf3163eaea5ac9485977d91bcc102c0.zip
Add Recent Blocks controller
Tracks recent blocks, useful for estimating recent successful gas prices.
Diffstat (limited to 'app/scripts/controllers')
-rw-r--r--app/scripts/controllers/recent-blocks.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/app/scripts/controllers/recent-blocks.js b/app/scripts/controllers/recent-blocks.js
new file mode 100644
index 000000000..27f9013ff
--- /dev/null
+++ b/app/scripts/controllers/recent-blocks.js
@@ -0,0 +1,37 @@
+const ObservableStore = require('obs-store')
+const extend = require('xtend')
+
+class RecentBlocksController {
+
+ constructor (opts = {}) {
+ const { blockTracker } = opts
+ this.blockTracker = blockTracker
+ this.historyLength = opts.historyLength || 40
+
+ const initState = extend({
+ recentBlocks: [],
+ }, opts.initState)
+ this.store = new ObservableStore(initState)
+
+ this.blockTracker.on('block', this.processBlock.bind(this))
+ }
+
+ resetState () {
+ this.store.updateState({
+ recentBlocks: [],
+ })
+ }
+
+ processBlock (newBlock) {
+ const state = this.store.getState()
+ state.recentBlocks.push(newBlock)
+
+ while (state.recentBlocks.length > this.historyLength) {
+ state.recentBlocks.shift()
+ }
+
+ this.store.updateState(state)
+ }
+}
+
+module.exports = RecentBlocksController