-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
chore(runway): cherry-pick fix: cp-7.60.0 use correct chainId collectibles for nft send flow #23071
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(runway): cherry-pick fix: cp-7.60.0 use correct chainId collectibles for nft send flow #23071
Conversation
…ibles for nft send flow (#22966) <!-- 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** The underlying sendflow uses `selectChainId` which should be marked as deprecated. - This selected does not return the correct chain ID when you are using "Popular Networks" view as you can have multiple chainIDs selected now!! This has unearthed a very large scope at this selector underpins many areas in mobile and extension 💀 Ideally all flows and features should move away from this selector and handle multiple selected chainIDs. ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: fix: correct nft images available during send flow ## **Related issues** Fixes: #20982 ## **Manual testing steps** 1. Select Popular Networks Tab 2. Go through NFT send flow - Select NFT from (e.g.) Linea (not ethereum) 3. Expected: On review page, should see NFT and can select NFT image without crashing app ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> https://www.loom.com/share/683675a4c01b47b0a99f6ff5e9dfa30a ## **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] > Fetch NFTs by the correct hex chainId via a new selector in the send flow, refine HeroNft placeholder/interaction, and add selector tests with deprecation notes for legacy selectors. > > - **State/Selectors**: > - **New** `reducers/collectibles/selectAllCollectiblesByChain`: returns collectibles for selected address and given `Hex` chainId; includes unit tests. > - **Deprecate** `collectiblesSelector` and `selectChainId` (comments only). > - **Hooks**: > - Update `useNft` to use `selectAllCollectiblesByChain` and hexified `chainId`; derive NFT by `tokenId`. > - **UI**: > - `HeroNft` placeholder: remove "Show" text, only show `#tokenId` when available; block navigation when no NFT. > - Tests updated and expanded (placeholder interaction, image from `collection.imageUrl`, assertions). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 0247941. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsFallback: AI analysis did not complete successfully. Running all tests. |
| expect(getByText('#12345')).toBeDefined(); | ||
|
|
||
| fireEvent.press(getByTestId('nft-image')); | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Test uses weak assertion instead of strong matcher (Bugbot Rules)
Tests use .toBeDefined() matcher instead of the recommended strong assertion .toBeOnTheScreen() for verifying element presence. Per testing guidelines, weak matchers like toBeDefined() should be replaced with specific assertions that clearly verify the element is rendered and visible to users.
|
|
No release label on PR. Adding release label release-7.60.0 on PR, as PR was cherry-picked in branch 7.60.0. |



Description
The underlying sendflow uses
selectChainIdwhich should be marked asdeprecated.
"Popular Networks" view as you can have multiple chainIDs selected now!!
This has unearthed a very large scope at this selector underpins many
areas in mobile and extension 💀
Ideally all flows and features should move away from this selector and
handle multiple selected chainIDs.
Changelog
CHANGELOG entry: fix: correct nft images available during send flow
Related issues
Fixes: #20982
Manual testing steps
ethereum)
without crashing app
Screenshots/Recordings
Before
After
https://www.loom.com/share/683675a4c01b47b0a99f6ff5e9dfa30a
Pre-merge author checklist
Docs and MetaMask Mobile
Coding
Standards.
if applicable
guidelines).
Not required for external contributors.
Pre-merge reviewer checklist
app, test code being changed).
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
Note
Switches NFT lookup to a chain-scoped selector to fix multi-network send flow, updates HeroNft placeholder behavior, adds selector tests, and deprecates legacy selectors.
selectAllCollectiblesByChaininreducers/collectibles/collectibles.tswith unit tests, enabling per-chain NFT selection.collectiblesSelectorandselectChainIdas deprecated with notes about multi-network selection.useNftto:hexChainIdand select NFTs viaselectAllCollectiblesByChain.chainIdas hex and resolve contract/name accordingly.HeroNftplaceholder: make non-interactive when no NFT; only show#tokenIdif present; remove "Show" text.hero-nft.test.tsxto reflect placeholder behavior and collection image fallback.collectibles.test.tscoveringselectAllCollectiblesByChainedge cases.Written by Cursor Bugbot for commit 4c30784. This will update automatically on new commits. Configure here.
e5692de