Commit 99b3e05
authored
feat: track analytics events for View All button clicks in NFT and Token lists (MetaMask#23107)
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
## **Description**
Implemented analytics tracking for the "View All" buttons on the Tokens
and NFTs pages to measure user engagement with the homepage performance
optimization feature.
**Reason for change:**
The recent homepage redesign added "View All" buttons to limit the
number of tokens and NFTs displayed initially. However, we weren't
tracking user interactions with these buttons, making it difficult to
understand adoption and usage patterns.
**Solution:**
- Added new Segment event `View All Assets Clicked` that fires when
users tap either button
- Event includes `asset_type` property to differentiate between Token
and NFT interactions
- Updated both TokenList and NftGrid components to track the event
- Added comprehensive unit tests to verify tracking implementation
## **Changelog**
CHANGELOG entry: null
## **Related issues**
Fixes: TMCU-206
## **Manual testing steps**
```gherkin
Feature: View All Assets Analytics Tracking
Scenario: user views all tokens from homepage
Given the user is on the wallet homepage with more than 10 tokens
When user taps the "View all tokens" button
Then the "View All Assets Clicked" event is sent to Segment with asset_type: Token
And user navigates to the full tokens list view
Scenario: user views all NFTs from homepage
Given the user is on the wallet homepage with more than 18 NFTs
When user taps the "View all NFTs" button
Then the "View All Assets Clicked" event is sent to Segment with asset_type: NFT
And user navigates to the full NFTs list view
```
## **Screenshots/Recordings**
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
<!-- [screenshots/recordings] -->
### **After**
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Adds `VIEW_ALL_ASSETS_CLICKED` tracking with `asset_type` for Tokens
and NFTs and updates tests accordingly.
>
> - **Analytics**
> - Add `MetaMetricsEvents.VIEW_ALL_ASSETS_CLICKED` to
`app/core/Analytics/MetaMetrics.events.ts` (enum and `events` map).
> - **UI**
> - `app/components/UI/Tokens/TokenList/index.tsx`: Track
`VIEW_ALL_ASSETS_CLICKED` with `{ asset_type: 'Token' }` in
`handleViewAllTokens`; include metrics deps in callback.
> - `app/components/UI/NftGrid/NftGrid.tsx`: Track
`VIEW_ALL_ASSETS_CLICKED` with `{ asset_type: 'NFT' }` in
`handleViewAllNfts`; include metrics deps in callback.
> - **Tests**
> - `app/components/UI/Tokens/TokenList/index.test.tsx`: Mock metrics
and assert event fired on "View all tokens" press.
> - `app/components/UI/NftGrid/NftGrid.test.tsx`: Assert event fired on
"View all NFTs" press.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
d2d75cd. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->1 parent 44ac101 commit 99b3e05
5 files changed
Lines changed: 91 additions & 2 deletions
File tree
- app
- components/UI
- NftGrid
- Tokens/TokenList
- core/Analytics
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
434 | 434 | | |
435 | 435 | | |
436 | 436 | | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
437 | 476 | | |
438 | 477 | | |
439 | 478 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
142 | 147 | | |
143 | | - | |
| 148 | + | |
144 | 149 | | |
145 | 150 | | |
146 | 151 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
13 | 15 | | |
| 16 | + | |
| 17 | + | |
14 | 18 | | |
15 | 19 | | |
16 | 20 | | |
| |||
127 | 131 | | |
128 | 132 | | |
129 | 133 | | |
| 134 | + | |
130 | 135 | | |
131 | 136 | | |
132 | 137 | | |
133 | 138 | | |
| 139 | + | |
134 | 140 | | |
135 | 141 | | |
136 | 142 | | |
| |||
162 | 168 | | |
163 | 169 | | |
164 | 170 | | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
165 | 185 | | |
166 | 186 | | |
167 | 187 | | |
| |||
227 | 247 | | |
228 | 248 | | |
229 | 249 | | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
230 | 266 | | |
231 | 267 | | |
232 | 268 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
| 75 | + | |
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
77 | 79 | | |
78 | 80 | | |
79 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
80 | 87 | | |
81 | | - | |
| 88 | + | |
82 | 89 | | |
83 | 90 | | |
84 | 91 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
| 80 | + | |
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
| |||
682 | 683 | | |
683 | 684 | | |
684 | 685 | | |
| 686 | + | |
685 | 687 | | |
686 | 688 | | |
687 | 689 | | |
| |||
0 commit comments