From 5d37f90787cdeec130537e61626f92d6f8a7b5e3 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Fri, 3 Feb 2017 21:36:04 -0800 Subject: Automatically remove shapeshift txs over 11 minutes old with no payment --- app/scripts/lib/controllers/shapeshift.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'app/scripts/lib/controllers/shapeshift.js') diff --git a/app/scripts/lib/controllers/shapeshift.js b/app/scripts/lib/controllers/shapeshift.js index bcfe3e14c..6d1c95323 100644 --- a/app/scripts/lib/controllers/shapeshift.js +++ b/app/scripts/lib/controllers/shapeshift.js @@ -4,6 +4,9 @@ const extend = require('xtend') // every three seconds when an incomplete tx is waiting const POLLING_INTERVAL = 3000 +// drop txs that haven't been paid to in 11 mins +const TIMEOUT_LIMIT = 660000 + class ShapeshiftController { constructor (opts = {}) { @@ -24,11 +27,21 @@ class ShapeshiftController { } getPendingTxs () { + this.removeOldTxs() const txs = this.getShapeShiftTxList() const pending = txs.filter(tx => tx.response && tx.response.status !== 'complete') return pending } + removeOldTxs() { + const { shapeShiftTxList } = this.store.getState() + const now = new Date().getTime() + const old = shapeShiftTxList.find((tx) => { + return tx.time + TIMEOUT_LIMIT < now + }) + old.forEach(tx => this.removeShapeShiftTx(tx)) + } + pollForUpdates () { const pendingTxs = this.getPendingTxs() @@ -68,6 +81,15 @@ class ShapeshiftController { } } + removeShapeShiftTx (tx) { + const { shapeShiftTxList } = this.store.getState() + const index = shapeShiftTxList.indexOf(index) + if (index !== -1) { + shapeShiftTxList.splice(index, 1) + } + this.updateState({ shapeShiftTxList }) + } + createShapeShiftTx (depositAddress, depositType) { const state = this.store.getState() let { shapeShiftTxList } = state -- cgit