mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-02 14:15:06 +01:00
514be408f8
* 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
29 lines
965 B
JavaScript
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,
|
|
}
|