From 12210f79968479d3e13e77cda70cbb98747325a3 Mon Sep 17 00:00:00 2001 From: Jean Regisser Date: Thu, 31 Oct 2024 12:43:31 +0100 Subject: [PATCH] chore: add `itemType` to `transaction_feed_item_select` event (#6199) ### Description As the title says. ### Test plan - Tests pass ### Related issues See Slack [thread](https://valora-app.slack.com/archives/C02DY3RK79T/p1729846095107579). ### Backwards compatibility Yes ### Network scalability If a new NetworkId and/or Network are added in the future, the changes in this PR will: - [x] Continue to work without code changes, OR trigger a compilation error (guaranteeing we find it when a new network is added) --- src/analytics/Properties.tsx | 2 +- .../feed/ClaimRewardFeedItem.test.tsx | 4 +++- src/transactions/feed/ClaimRewardFeedItem.tsx | 5 +++-- .../feed/DepositOrWithdrawFeedItem.test.tsx | 17 ++++++++++++++++- .../feed/DepositOrWithdrawFeedItem.tsx | 5 +++-- src/transactions/feed/NftFeedItem.tsx | 4 +++- src/transactions/feed/SwapFeedItem.tsx | 4 +++- src/transactions/feed/TokenApprovalFeedItem.tsx | 6 ++++-- src/transactions/feed/TransferFeedItem.tsx | 4 +++- 9 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/analytics/Properties.tsx b/src/analytics/Properties.tsx index 8d680e3e99a..7c0c127cabf 100644 --- a/src/analytics/Properties.tsx +++ b/src/analytics/Properties.tsx @@ -179,7 +179,7 @@ interface HomeEventsProperties { notificationPositionInList?: number } [HomeEvents.notification_center_spotlight_dismiss]: undefined - [HomeEvents.transaction_feed_item_select]: undefined + [HomeEvents.transaction_feed_item_select]: { itemType: TokenTransactionTypeV2 } [HomeEvents.transaction_feed_address_copy]: undefined [HomeEvents.view_token_balances]: { totalBalance?: string } [HomeEvents.home_action_pressed]: { action: HomeActionName } diff --git a/src/transactions/feed/ClaimRewardFeedItem.test.tsx b/src/transactions/feed/ClaimRewardFeedItem.test.tsx index c863a0da4e7..e038dba2133 100644 --- a/src/transactions/feed/ClaimRewardFeedItem.test.tsx +++ b/src/transactions/feed/ClaimRewardFeedItem.test.tsx @@ -157,6 +157,8 @@ describe('ClaimRewardFeedItem', () => { fireEvent.press( getByTestId(`ClaimRewardFeedItem/${mockClaimRewardTransaction.transactionHash}`) ) - expect(AppAnalytics.track).toHaveBeenCalledWith(HomeEvents.transaction_feed_item_select) + expect(AppAnalytics.track).toHaveBeenCalledWith(HomeEvents.transaction_feed_item_select, { + itemType: mockClaimRewardTransaction.type, + }) }) }) diff --git a/src/transactions/feed/ClaimRewardFeedItem.tsx b/src/transactions/feed/ClaimRewardFeedItem.tsx index 71608b9956c..c13b43f7e8e 100644 --- a/src/transactions/feed/ClaimRewardFeedItem.tsx +++ b/src/transactions/feed/ClaimRewardFeedItem.tsx @@ -88,8 +88,9 @@ export default function ClaimRewardFeedItem({ transaction }: Props) { { - // TODO: we'll add the type in a subsequent PR - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transaction.type, + }) navigate(Screens.TransactionDetailsScreen, { transaction }) }} > diff --git a/src/transactions/feed/DepositOrWithdrawFeedItem.test.tsx b/src/transactions/feed/DepositOrWithdrawFeedItem.test.tsx index b7ad5ba31a3..583c2f9a408 100644 --- a/src/transactions/feed/DepositOrWithdrawFeedItem.test.tsx +++ b/src/transactions/feed/DepositOrWithdrawFeedItem.test.tsx @@ -1,6 +1,8 @@ -import { render } from '@testing-library/react-native' +import { fireEvent, render } from '@testing-library/react-native' import * as React from 'react' import { Provider } from 'react-redux' +import AppAnalytics from 'src/analytics/AppAnalytics' +import { HomeEvents } from 'src/analytics/Events' import DepositOrWithdrawFeedItem from 'src/transactions/feed/DepositOrWithdrawFeedItem' import { NetworkId, TokenTransactionTypeV2, TransactionStatus } from 'src/transactions/types' import { createMockStore } from 'test/utils' @@ -83,4 +85,17 @@ describe('DepositOrWithdrawFeedItem', () => { expect(queryByText('transactionFeed.depositSubtitle, {"txAppName":"Some Dapp"}')).toBeNull() }) + + it('should fire analytic event on tap', () => { + const { getByTestId } = render( + + + + ) + + fireEvent.press(getByTestId(`DepositOrWithdrawFeedItem/${depositTransaction.transactionHash}`)) + expect(AppAnalytics.track).toHaveBeenCalledWith(HomeEvents.transaction_feed_item_select, { + itemType: depositTransaction.type, + }) + }) }) diff --git a/src/transactions/feed/DepositOrWithdrawFeedItem.tsx b/src/transactions/feed/DepositOrWithdrawFeedItem.tsx index 606cf786431..f5c688d484e 100644 --- a/src/transactions/feed/DepositOrWithdrawFeedItem.tsx +++ b/src/transactions/feed/DepositOrWithdrawFeedItem.tsx @@ -123,8 +123,9 @@ export default function DepositOrWithdrawFeedItem({ transaction }: Props) { { - // TODO: we'll add the type in a subsequent PR - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transaction.type, + }) navigate(Screens.TransactionDetailsScreen, { transaction }) }} > diff --git a/src/transactions/feed/NftFeedItem.tsx b/src/transactions/feed/NftFeedItem.tsx index 0a7dc2c26a0..91a59fc9b91 100644 --- a/src/transactions/feed/NftFeedItem.tsx +++ b/src/transactions/feed/NftFeedItem.tsx @@ -28,7 +28,9 @@ function NftFeedItem({ transaction }: Props) { const openNftTransactionDetails = () => { navigate(Screens.NftsInfoCarousel, { nfts, networkId: transaction.networkId }) - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transaction.type, + }) } return ( diff --git a/src/transactions/feed/SwapFeedItem.tsx b/src/transactions/feed/SwapFeedItem.tsx index 7d366b4bc8d..c90ca41f49f 100644 --- a/src/transactions/feed/SwapFeedItem.tsx +++ b/src/transactions/feed/SwapFeedItem.tsx @@ -27,7 +27,9 @@ function SwapFeedItem({ transaction }: Props) { const handleOpenTransactionDetails = () => { navigate(Screens.TransactionDetailsScreen, { transaction: transaction }) - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transaction.type, + }) } const isCrossChainSwap = transaction.type === TokenTransactionTypeV2.CrossChainSwapTransaction diff --git a/src/transactions/feed/TokenApprovalFeedItem.tsx b/src/transactions/feed/TokenApprovalFeedItem.tsx index 700ba9bc5e5..8daef4b78a8 100644 --- a/src/transactions/feed/TokenApprovalFeedItem.tsx +++ b/src/transactions/feed/TokenApprovalFeedItem.tsx @@ -1,8 +1,8 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, Text, View } from 'react-native' -import { HomeEvents } from 'src/analytics/Events' import AppAnalytics from 'src/analytics/AppAnalytics' +import { HomeEvents } from 'src/analytics/Events' import Touchable from 'src/components/Touchable' import { navigate } from 'src/navigator/NavigationService' import { Screens } from 'src/navigator/Screens' @@ -21,7 +21,9 @@ function TokenApprovalFeedItem({ transaction }: Props) { const handleOpenTransactionDetails = () => { navigate(Screens.TransactionDetailsScreen, { transaction }) - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transaction.type, + }) } return ( diff --git a/src/transactions/feed/TransferFeedItem.tsx b/src/transactions/feed/TransferFeedItem.tsx index 2f0c10f1ba0..a637cd35c04 100644 --- a/src/transactions/feed/TransferFeedItem.tsx +++ b/src/transactions/feed/TransferFeedItem.tsx @@ -38,7 +38,9 @@ function TransferFeedItem({ transfer }: Props) { navigate(Screens.TransactionDetailsScreen, { transaction: transfer }) } - AppAnalytics.track(HomeEvents.transaction_feed_item_select) + AppAnalytics.track(HomeEvents.transaction_feed_item_select, { + itemType: transfer.type, + }) } const tokenInfo = useTokenInfo(amount.tokenId)