1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-23 03:36:18 +02:00

Automatically remove shapeshift txs over 11 minutes old with no payment

This commit is contained in:
Dan Finlay 2017-02-03 21:36:04 -08:00
parent c9024655d3
commit 5d37f90787

View File

@ -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