Repository: MetaMask/metamask-mobile (2025-07-16T17:30:19Z)

Issue:
[Bug]: Request Payment button for Solana should be disabled and hidden
### Describe the bug

Request Payment button for Solana should be disabled and hidden

### Expected behavior

_No response_

### Screenshots/Recordings

https://github.com/user-attachments/assets/698242d2-b727-4b22-a843-e1b7c925cc5f

### Steps to reproduce

1. Switch to Solana network
2. Click receive
3. See request payment button is displayed and enabled 

### Error messages or log output

```shell

```

### Detection stage

During release testing

### Version

7.51.0

### Build type

None

### Device

Iphone 16

### Operating system

iOS

### Additional context

_No response_

### Severity

_No response_


Discussion:
Hi @vinnyhoward,

This issue has been closed. Please complete this RCA form:
https://docs.google.com/forms/d/e/1FAIpQLSdnPbJISzFlR_aQD2uRpnMKSoGAopuTd_yeZK7J4Q5GzgbsOA/viewform?entry.340898780=17272&entry.1228565618=regression-RC-7.51.0&entry.1698032149=team-wallet-ux

<!-- AUTO-FORM -->
test pass for new build 2147



Patch:
diff --git a/app/components/UI/ReceiveRequest/index.js b/app/components/UI/ReceiveRequest/index.js
index f2659f5870bc..42852dfc5315 100644
--- a/app/components/UI/ReceiveRequest/index.js
+++ b/app/components/UI/ReceiveRequest/index.js
@@ -34,6 +34,7 @@ import { getDecimalChainId } from '../../../util/networks';
 import QRAccountDisplay from '../../Views/QRAccountDisplay';
 import PNG_MM_LOGO_PATH from '../../../images/branding/fox.png';
 import { isEthAddress } from '../../../util/address';
+import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController';
 
 const { height: windowHeight, width: windowWidth } = Dimensions.get('window');
 
@@ -153,6 +154,10 @@ class ReceiveRequest extends PureComponent {
      * Metrics injected by withMetricsAwareness HOC
      */
     metrics: PropTypes.object,
+    /**
+     * Boolean that indicates if the evm network is selected
+     */
+    isEvmNetworkSelected: PropTypes.bool,
   };
 
   state = {
@@ -260,16 +265,18 @@ class ReceiveRequest extends PureComponent {
 
           <QRAccountDisplay accountAddress={this.props.selectedAddress} />
 
-          <View style={styles.actionRow}>
-            <StyledButton
-              type={'normal'}
-              onPress={this.onReceive}
-              containerStyle={styles.actionButton}
-              testID={RequestPaymentModalSelectorsIDs.REQUEST_BUTTON}
-            >
-              {strings('receive_request.request_payment')}
-            </StyledButton>
-          </View>
+          {this.props.isEvmNetworkSelected && (
+            <View style={styles.actionRow}>
+              <StyledButton
+                type={'normal'}
+                onPress={this.onReceive}
+                containerStyle={styles.actionButton}
+                testID={RequestPaymentModalSelectorsIDs.REQUEST_BUTTON}
+              >
+                {strings('receive_request.request_payment')}
+              </StyledButton>
+            </View>
+          )}
         </View>
 
         <GlobalAlert />
@@ -289,6 +296,7 @@ const mapStateToProps = (state) => ({
     selectChainId(state),
     getRampNetworks(state),
   ),
+  isEvmNetworkSelected: selectIsEvmNetworkSelected(state),
 });
 
 const mapDispatchToProps = (dispatch) => ({


Test patch:
diff --git a/app/components/UI/ReceiveRequest/index.test.tsx b/app/components/UI/ReceiveRequest/index.test.tsx
index cc627eb8e64f..f9056112f657 100644
--- a/app/components/UI/ReceiveRequest/index.test.tsx
+++ b/app/components/UI/ReceiveRequest/index.test.tsx
@@ -5,6 +5,7 @@ import { renderScreen } from '../../../util/test/renderWithProvider';
 import { backgroundState } from '../../../util/test/initial-root-state';
 import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsControllerTestUtils';
 import { mockNetworkState } from '../../../util/test/network';
+import { RequestPaymentModalSelectorsIDs } from '../../../../e2e/selectors/Receive/RequestPaymentModal.selectors';
 
 const initialState = {
   engine: {
@@ -81,4 +82,26 @@ describe('ReceiveRequest', () => {
     );
     expect(toJSON()).toMatchSnapshot();
   });
+
+  it('should not render the request button if the evm network is not selected', () => {
+    const state = {
+      ...initialState,
+      engine: {
+        backgroundState: {
+          ...initialState.engine.backgroundState,
+          MultichainNetworkController: {
+            isEvmSelected: false,
+          },
+        },
+      },
+    };
+    const { queryByTestId } = renderScreen(
+      ReceiveRequest,
+      { name: 'ReceiveRequest' },
+      { state },
+    );
+    expect(
+      queryByTestId(RequestPaymentModalSelectorsIDs.REQUEST_BUTTON),
+    ).toBeNull();
+  });
 });