1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 01:39:44 +01:00

Add data about dropped transaction in FINALIZED metrics event (#15383)

This commit is contained in:
VSaric 2022-08-02 17:53:09 +02:00 committed by GitHub
parent 9ce4a8f987
commit ce901f8edb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 1 deletions

View File

@ -1841,6 +1841,7 @@ export default class TransactionController extends EventEmitter {
return; return;
} }
otherTxMeta.replacedBy = txMeta.hash; otherTxMeta.replacedBy = txMeta.hash;
otherTxMeta.replacedById = txMeta.id;
this.txStateManager.updateTransaction( this.txStateManager.updateTransaction(
txMeta, txMeta,
'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce', 'transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce',
@ -1995,6 +1996,7 @@ export default class TransactionController extends EventEmitter {
}, },
defaultGasEstimates, defaultGasEstimates,
originalType, originalType,
replacedById,
metamaskNetworkId: network, metamaskNetworkId: network,
} = txMeta; } = txMeta;
const { transactions } = this.store.getState(); const { transactions } = this.store.getState();
@ -2098,6 +2100,24 @@ export default class TransactionController extends EventEmitter {
transactionContractMethod = transactions[id]?.contractMethodName; transactionContractMethod = transactions[id]?.contractMethodName;
} }
const replacedTxMeta = this._getTransaction(replacedById);
const TRANSACTION_REPLACEMENT_METHODS = {
RETRY: TRANSACTION_TYPES.RETRY,
CANCEL: TRANSACTION_TYPES.CANCEL,
SAME_NONCE: 'other',
};
let transactionReplaced;
if (extraParams?.dropped) {
transactionReplaced = TRANSACTION_REPLACEMENT_METHODS.SAME_NONCE;
if (replacedTxMeta?.type === TRANSACTION_TYPES.CANCEL) {
transactionReplaced = TRANSACTION_REPLACEMENT_METHODS.CANCEL;
} else if (replacedTxMeta?.type === TRANSACTION_TYPES.RETRY) {
transactionReplaced = TRANSACTION_REPLACEMENT_METHODS.RETRY;
}
}
const properties = { const properties = {
chain_id: chainId, chain_id: chainId,
referrer, referrer,
@ -2122,6 +2142,7 @@ export default class TransactionController extends EventEmitter {
first_seen: time, first_seen: time,
gas_limit: gasLimit, gas_limit: gasLimit,
transaction_contract_method: transactionContractMethod, transaction_contract_method: transactionContractMethod,
transaction_replaced: transactionReplaced,
...extraParams, ...extraParams,
...gasParamsInGwei, ...gasParamsInGwei,
}; };
@ -2330,6 +2351,8 @@ export default class TransactionController extends EventEmitter {
_dropTransaction(txId) { _dropTransaction(txId) {
this.txStateManager.setTxStatusDropped(txId); this.txStateManager.setTxStatusDropped(txId);
const txMeta = this.txStateManager.getTransaction(txId); const txMeta = this.txStateManager.getTransaction(txId);
this._trackTransactionMetricsEvent(txMeta, TRANSACTION_EVENTS.FINALIZED); this._trackTransactionMetricsEvent(txMeta, TRANSACTION_EVENTS.FINALIZED, {
dropped: true,
});
} }
} }

View File

@ -1484,6 +1484,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1565,6 +1566,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1656,6 +1658,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1739,6 +1742,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1820,6 +1824,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1887,6 +1892,7 @@ describe('Transaction Controller', function () {
gas_price: '2', gas_price: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.LEGACY,
status: 'unapproved', status: 'unapproved',
@ -1963,6 +1969,7 @@ describe('Transaction Controller', function () {
max_priority_fee_per_gas: '2', max_priority_fee_per_gas: '2',
gas_limit: '0x7b0d', gas_limit: '0x7b0d',
transaction_contract_method: undefined, transaction_contract_method: undefined,
transaction_replaced: undefined,
first_seen: 1624408066355, first_seen: 1624408066355,
transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.FEE_MARKET, transaction_envelope_type: TRANSACTION_ENVELOPE_TYPE_NAMES.FEE_MARKET,
status: 'unapproved', status: 'unapproved',