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

Adding Metametrics for Activity Screen (#20077)

* adding activity metrics and tests

* removing unnecessary stopPropagation
This commit is contained in:
vthomas13 2023-07-25 09:06:11 -04:00 committed by GitHub
parent 6914baa54e
commit 3e6f1c3288
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 3 deletions

View File

@ -484,6 +484,8 @@ export enum MetaMetricsEventName {
AccountPasswordCreated = 'Account Password Created',
AccountReset = 'Account Reset',
AccountRenamed = 'Account Renamed',
ActivityDetailsOpened = 'Activity Details Opened',
ActivityDetailsClosed = 'Activity Details Closed',
AppInstalled = 'App Installed',
AppUnlocked = 'App Unlocked',
AppUnlockedFailed = 'App Unlocked Failed',

View File

@ -34,7 +34,10 @@ import {
import { IconColor } from '../../../helpers/constants/design-system';
import { Icon, IconName, IconSize } from '../../component-library';
///: END:ONLY_INCLUDE_IN
import { MetaMetricsEventCategory } from '../../../../shared/constants/metametrics';
import {
MetaMetricsEventCategory,
MetaMetricsEventName,
} from '../../../../shared/constants/metametrics';
import {
TransactionGroupCategory,
TransactionStatus,
@ -172,8 +175,19 @@ function TransactionListItemInner({
history.push(`${CONFIRM_TRANSACTION_ROUTE}/${id}`);
return;
}
setShowDetails((prev) => !prev);
}, [isUnapproved, history, id]);
setShowDetails((prev) => {
trackEvent({
event: prev
? MetaMetricsEventName.ActivityDetailsClosed
: MetaMetricsEventName.ActivityDetailsOpened,
category: MetaMetricsEventCategory.Navigation,
properties: {
activity_type: category,
},
});
return !prev;
});
}, [isUnapproved, history, id, trackEvent, category]);
///: BEGIN:ONLY_INCLUDE_IN(build-mmi)
const debugTransactionMeta = {

View File

@ -20,6 +20,12 @@ import {
import { useGasFeeEstimates } from '../../../hooks/useGasFeeEstimates';
import { GasEstimateTypes } from '../../../../shared/constants/gas';
import { getTokens } from '../../../ducks/metamask/metamask';
import {
MetaMetricsEventCategory,
MetaMetricsEventName,
} from '../../../../shared/constants/metametrics';
import { MetaMetricsContext } from '../../../contexts/metametrics';
import TransactionListItem from '.';
const FEE_MARKET_ESTIMATE_RETURN_VALUE = {
@ -115,6 +121,53 @@ const generateUseSelectorRouter = (opts) => (selector) => {
};
describe('TransactionListItem', () => {
describe('ActivityListItem interactions', () => {
beforeAll(() => {
useGasFeeEstimates.mockImplementation(
() => FEE_MARKET_ESTIMATE_RETURN_VALUE,
);
});
afterAll(() => {
useGasFeeEstimates.mockRestore();
});
it('should show the activity details popover and log metrics when the activity list item is clicked', () => {
useSelector.mockImplementation(
generateUseSelectorRouter({
balance: '0x3',
}),
);
const store = mockStore(mockState);
const mockTrackEvent = jest.fn();
const { queryByTestId } = renderWithProvider(
<MetaMetricsContext.Provider value={mockTrackEvent}>
<TransactionListItem transactionGroup={transactionGroup} />
</MetaMetricsContext.Provider>,
store,
);
const activityListItem = queryByTestId('activity-list-item');
fireEvent.click(activityListItem);
expect(mockTrackEvent).toHaveBeenCalledWith({
event: MetaMetricsEventName.ActivityDetailsOpened,
category: MetaMetricsEventCategory.Navigation,
properties: {
activity_type: 'send',
},
});
const popoverClose = queryByTestId('popover-close');
fireEvent.click(popoverClose);
expect(mockTrackEvent).toHaveBeenCalledWith({
event: MetaMetricsEventName.ActivityDetailsClosed,
category: MetaMetricsEventCategory.Navigation,
properties: {
activity_type: 'send',
},
});
});
});
describe('when account has insufficient balance to cover gas', () => {
beforeAll(() => {
useGasFeeEstimates.mockImplementation(