|
|
|
import {
|
|
|
|
createExplorerLink,
|
|
|
|
createExplorerLinkForChain,
|
|
|
|
} from '@metamask/etherscan-link';
|
|
|
|
|
|
|
|
export function transactionMatchesNetwork(transaction, chainId, networkId) {
|
|
|
|
if (typeof transaction.chainId !== 'undefined') {
|
|
|
|
return transaction.chainId === chainId;
|
|
|
|
}
|
|
|
|
return transaction.metamaskNetworkId === networkId;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* build the etherscan link for a transaction by either chainId, if available
|
|
|
|
* or metamaskNetworkId as a fallback. If rpcPrefs is provided will build the
|
|
|
|
* url for the provided blockExplorerUrl.
|
|
|
|
*
|
|
|
|
* @param {Object} transaction - a transaction object from state
|
|
|
|
* @param {string} [transaction.metamaskNetworkId] - network id tx occurred on
|
|
|
|
* @param {string} [transaction.chainId] - chain id tx occurred on
|
|
|
|
* @param {string} [transaction.hash] - hash of the transaction
|
|
|
|
* @param {Object} [rpcPrefs] - the rpc preferences for the current RPC network
|
|
|
|
* @param {string} [rpcPrefs.blockExplorerUrl] - the block explorer url for RPC
|
|
|
|
* networks
|
|
|
|
* @returns {string}
|
|
|
|
*/
|
|
|
|
export function getBlockExplorerUrlForTx(transaction, rpcPrefs = {}) {
|
|
|
|
if (rpcPrefs.blockExplorerUrl) {
|
|
|
|
return `${rpcPrefs.blockExplorerUrl.replace(/\/+$/u, '')}/tx/${
|
|
|
|
transaction.hash
|
|
|
|
}`;
|
|
|
|
}
|
|
|
|
if (transaction.chainId) {
|
|
|
|
return createExplorerLinkForChain(transaction.hash, transaction.chainId);
|
|
|
|
}
|
|
|
|
return createExplorerLink(transaction.hash, transaction.metamaskNetworkId);
|
|
|
|
}
|