1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-02 14:15:06 +01:00
metamask-extension/app/scripts/controllers/network/middleware/pending.js
Frankie 514be408f8
I#6704 eth_getTransactionByHash will now check metamask's local history for pending transactions (#7327)
* tests - create tests for pending middlewares

* transactions - add r,s,v values to the txMeta to match the JSON rpc response

* network - add new middleware for eth_getTransactionByHash that the checks pending tx's for a response value

* transactions/pending - use getTransactionReceipt for checking if tx is in a block

* meta - file rename
2019-10-30 12:15:54 -10:00

29 lines
965 B
JavaScript

const { formatTxMetaForRpcResult } = require('../util')
const createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')
function createPendingNonceMiddleware ({ getPendingNonce }) {
return createAsyncMiddleware(async (req, res, next) => {
const {method, params} = req
if (method !== 'eth_getTransactionCount') return next()
const [param, blockRef] = params
if (blockRef !== 'pending') return next()
res.result = await getPendingNonce(param)
})
}
function createPendingTxMiddleware ({ getPendingTransactionByHash }) {
return createAsyncMiddleware(async (req, res, next) => {
const {method, params} = req
if (method !== 'eth_getTransactionByHash') return next()
const [hash] = params
const txMeta = getPendingTransactionByHash(hash)
if (!txMeta) return next()
res.result = formatTxMetaForRpcResult(txMeta)
})
}
module.exports = {
createPendingTxMiddleware,
createPendingNonceMiddleware,
}