[Bug]: Basic Functionality - When disabled, I can still start a Send and select Non-EVM networks, leading to being blocked in the Recipient screen with an error
Describe the bug
When Basic Functionality disabled, I can still start a Send and select Non-EVM networks, leading to being blocked in the Recipient screen
Expected behavior
We shouldn't see nonEVM networks in the assets list, if we have Basic Functionality off. We already see the Send button disabled, if I have any of the non-EVM netowrk selected (Expected)
[HB] Send asset list and network filter excludes non-EVM networks when Basic Functionality is disabled.
Screenshots/Recordings
https://github.com/user-attachments/assets/b095a976-1432-469a-aa17-fc3426383055
Steps to reproduce
- Go toSettings
- Disable Basic Functionality
- Select All networks
- Click Send
- Click Asset --> see you can select non-EVM assets
- Select one
- Add amount
- See 'invalid value' error and not able to proceed
Error messages or log output
Detection stage
In production (default)
Version
13.9.0
Build type
None
Browser
Chrome
Operating system
MacOS
Hardware wallet
No response
Additional context
No response
Severity
No response
Moving it to @MetaMask/core-extension-ux as it relates to settings. Maybe we need to make a bigger decision here of how we want this to be working cc/ @hesterbruikman
I've updated the ticket and assigned it to team-confirmations (cc @bschorchit ). Expected behavior is for send asset list and network filter to exclude non-EVM networks when Basic Functionality is disabled.
I agree @aganglada this does feel off that this makes non-EVM feel like it's not Basic functionality. We could consider a separate toggle in Settings. I'd propose to only do this as part of Settings redesign though. This organises settings and makes it easier to find and combine these privacy settings.
@aganglada can you clarify what external call happens for non-EVM Send transactions? Is there anything called beyond the RPC that might also be used for balance and asset display.
Why can't users send BTC or Solana when basic functionality is off?
It's a know issue, snaps can't run while basic functionality is off, we will need to show something to the user to indicate this is not possible at the moment.
If this is the limitation I believe there is no easy way to tackle with it on send flow right now.
Would it make sense if we just filter out nonEVM tokens in send flow if basic functionality is off? @bschorchit @hesterbruikman
Hello @hesterbruikman 👋 I am implementing excluding non evm assets + non evm networks from the networks popover when BFT is off.
This is current behavior https://github.com/user-attachments/assets/be18a97b-0fa2-49fc-a5fb-35047d6e0c41
Would like to confirm the scenario where user is already on a non-evm chain and turns the BFT off; Since i am filtering out non evm assets and chains
This is how its looking like (assets and networks are filtered out but Solana stays selected) This seems off right? Do we wish, if user is already on a non evm network, to not filter out assets for that specific network and not filter out the network from the list? But once he switches to a EVM chain or clicks on "all popular networks", we exclude it from list of networks assets?
https://github.com/user-attachments/assets/192cf92d-93bd-46d0-862c-2f00f276e8e2
Do we wish, if user is already on a non evm network, to not filter out assets for that specific network and not filter out the network from the list?
Yes, great thinking @sahar-fehri . I'd expect that if I already have a balance and assets in views those would not disappear. But I wouldn't be able to update and I wouldn't be able to take next actions on those assets.
GIVEN Non-EVM (Snap) chain selected WHEN BFT is disabled THEN Assets for non-EVM (Snap) chain remain visible (they won't update) AND Assets for Non-EVM (Snap) chain are not listed in Swap/Send
Let me know if you see issues with this approach!
Thank you @hesterbruikman !
GIVEN Non-EVM (Snap) chain selected WHEN BFT is disabled THEN Assets for non-EVM (Snap) chain remain visible (they won't update) AND Assets for Non-EVM (Snap) chain are not listed in Swap/Send
I think this ☝️ scenario already works as you described now on main. I agree that if i'm a user on Solana, with tokens, and turn OFF BFT, i should still be able to see my tokens but i wont be able to send/swap.
Do these scenarios sound correct to you?
GIVEN Non-EVM (Snap) chain selected GIVEN User with no tokens on the selected Non-EVM chain WHEN BFT is disabled THEN Native asset for non-EVM (Snap) chain remain visible AND Swap and Send are disabled.
GIVEN "all popular networks" selected WHEN BFT is disabled THEN Non-EVM tokens are filtered out from the tokens list AND Non-EVM chains are filtered out from the network popover
GIVEN an EVM chain selected WHEN BFT is disabled THEN Non-EVM chains are filtered out from the network popover
Just realized that the fix is going to be bigger than i expected :p
Thanks @sahar-fehri going through these 1-by-1
GIVEN Non-EVM (Snap) chain selected GIVEN User with no tokens on the selected Non-EVM chain WHEN BFT is disabled THEN Native asset for non-EVM (Snap) chain remain visible AND Swap and Send are disabled.
If possible I believe Swap and Send should remain enabled, however the asset list in the send flow should not include the non-EVM (Snap) assets. The user should also not be able to filter the Asset list inside Swap and Send on the non-EVM (Snap) assets. This would mirror the behavior of aNetwork being enabled but not support by Swaps
GIVEN "all popular networks" selected WHEN BFT is disabled THEN Non-EVM tokens are filtered out from the tokens list AND Non-EVM chains are filtered out from the network popover
✅
GIVEN an EVM chain selected WHEN BFT is disabled THEN Non-EVM chains are filtered out from the network popover
✅
Looking at this again; When an EVM chain is selected and BFT is off; we have this (screenshot)
I'm thinking:
GIVEN Non-EVM (Snap) chain selected GIVEN User on the selected Non-EVM chain WHEN BFT is disabled THEN swap button is disabled and send button is enabled. AND when clicking on Send button, the list of assets should not contain non-EVM assets, and the network filter inside send flow should not contain non-EVM chain, the user should not be able to filter on the non-EVM assets
Aah, you're otally right Sahar. I was focusing on how we should treat the non-EVM Snap network. I'd say for Send we'd still want the action button to be active (and handle network and asset unavailable inside the Send flow). With BFT off though, Swap would not be available altogether. So yes, for Swap we should follow the EVM behavior.
Really when BFT is disabled, Swap should be disabled always, there shouldn't need to be extra logic for when a non-EVM chain is selected on the Portfolio. It's kind of suprising that this is the case.