diff --git a/app/component-library/components-temp/ListItemMultiSelectButton/ListItemMultiSelectButton.constants.ts b/app/component-library/components-temp/ListItemMultiSelectButton/ListItemMultiSelectButton.constants.ts
index fa1de756de16..06fa3a2118c9 100644
--- a/app/component-library/components-temp/ListItemMultiSelectButton/ListItemMultiSelectButton.constants.ts
+++ b/app/component-library/components-temp/ListItemMultiSelectButton/ListItemMultiSelectButton.constants.ts
@@ -8,6 +8,7 @@ import { ListItemMultiSelectButtonProps } from './ListItemMultiSelectButton.type
// Defaults
export const DEFAULT_LISTITEMMULTISELECT_GAP = 16;
export const BUTTON_TEST_ID = 'button-menu-select-test-id';
+export const BUTTON_TEXT_TEST_ID = 'button-text-select-test-id';
// Sample consts
export const SAMPLE_LISTITEMMULTISELECT_PROPS: ListItemMultiSelectButtonProps =
diff --git a/app/components/Nav/App/index.js b/app/components/Nav/App/index.js
index a042de232c30..51c57c7af913 100644
--- a/app/components/Nav/App/index.js
+++ b/app/components/Nav/App/index.js
@@ -693,7 +693,10 @@ const App = (props) => {
component={MultiRpcModal}
/>
) : null}
-
+
{
networkImageSource: networkImage,
});
}
-
previousNetworkConfigurations.current = networkConfigurations;
}, [networkConfigurations, networkName, networkImage, toastRef]);
diff --git a/app/components/UI/NetworkModal/NetworkAdded/index.tsx b/app/components/UI/NetworkModal/NetworkAdded/index.tsx
index 17a9e360336b..d4dc06b8dc68 100644
--- a/app/components/UI/NetworkModal/NetworkAdded/index.tsx
+++ b/app/components/UI/NetworkModal/NetworkAdded/index.tsx
@@ -14,6 +14,9 @@ const createStyles = (colors: any) =>
flexDirection: 'row',
paddingVertical: 16,
},
+ base: {
+ padding: 16,
+ },
button: {
flex: 1,
},
@@ -41,7 +44,7 @@ const NetworkAdded = (props: NetworkAddedProps) => {
const styles = createStyles(colors);
return (
-
+
{strings('networks.new_network')}
diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap
index 7f21f4f59075..92cb998fc5d8 100644
--- a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap
+++ b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap
@@ -549,7 +549,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -703,7 +703,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -1444,7 +1444,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -1492,10 +1492,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -1598,7 +1595,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -1648,10 +1645,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -2297,7 +2291,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -2451,7 +2445,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -2605,7 +2599,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -2653,10 +2647,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -2759,7 +2750,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -2809,10 +2800,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -3458,7 +3446,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -3612,7 +3600,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -3766,7 +3754,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -3814,10 +3802,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -3920,7 +3905,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -3970,10 +3955,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = `
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -4619,7 +4601,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -4773,7 +4755,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -4927,7 +4909,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -4975,10 +4957,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
@@ -5081,7 +5060,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
{
"borderRadius": 10,
"height": 20,
- "marginRight": 10,
+ "marginRight": 20,
"width": 20,
}
}
@@ -5131,10 +5110,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = `
},
undefined,
undefined,
- {
- "fontFamily": "EuclidCircularB-Bold",
- "fontWeight": "600",
- },
+ false,
undefined,
undefined,
undefined,
diff --git a/app/components/Views/NetworkSelector/NetworkSelector.tsx b/app/components/Views/NetworkSelector/NetworkSelector.tsx
index 112884966e7c..b585ec084e24 100644
--- a/app/components/Views/NetworkSelector/NetworkSelector.tsx
+++ b/app/components/Views/NetworkSelector/NetworkSelector.tsx
@@ -451,6 +451,9 @@ const NetworkSelector = () => {
networkName: mainnetName,
})
}
+ onLongPress={() => {
+ openModal(chainId, false, MAINNET, true);
+ }}
/>
);
}
@@ -458,7 +461,7 @@ const NetworkSelector = () => {
return (
{
const renderLineaMainnet = () => {
const { name: lineaMainnetName, chainId } = Networks['linea-mainnet'];
+ const name = networkConfigurations?.[chainId]?.name ?? lineaMainnetName;
if (isNetworkUiRedesignEnabled() && isNoSearchResults('linea-mainnet'))
return null;
@@ -483,7 +487,7 @@ const NetworkSelector = () => {
{
networkName: lineaMainnetName,
})
}
+ onLongPress={() => {
+ openModal(chainId, false, LINEA_MAINNET, true);
+ }}
/>
);
}
@@ -513,7 +520,7 @@ const NetworkSelector = () => {
return (
{
>
{
sheetRef.current?.onCloseBottomSheet(() => {
@@ -1011,6 +1014,7 @@ const NetworkSelector = () => {
actionTitle={strings('app_settings.delete')}
iconName={IconName.Trash}
onPress={() => removeRpcUrl(showNetworkMenuModal.chainId)}
+ testID={`delete-network-button-${showNetworkMenuModal.chainId}`}
/>
) : null}
diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js
index 23c03f664c30..1cbb5b513f1d 100644
--- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js
+++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js
@@ -135,7 +135,7 @@ const createStyles = (colors) =>
padding: 10,
color: colors.text.default,
},
- rpcUrlInput: {
+ dropDownInput: {
borderColor: colors.border.default,
borderRadius: 5,
borderWidth: 2,
@@ -354,7 +354,7 @@ export class NetworkSettings extends PureComponent {
rpcUrl: undefined,
rpcName: undefined,
rpcUrlFrom: undefined,
- rpcNameForm: undefined,
+ rpcNameForm: '',
rpcUrls: [],
blockExplorerUrls: [],
selectedRpcEndpointIndex: 0,
@@ -497,7 +497,10 @@ export class NetworkSettings extends PureComponent {
rpcName =
networkConfiguration?.rpcEndpoints[
networkConfiguration?.defaultRpcEndpointIndex
- ]?.name;
+ ]?.name ??
+ networkConfiguration?.rpcEndpoints[
+ networkConfiguration?.defaultRpcEndpointIndex
+ ]?.type;
selectedRpcEndpointIndex =
networkConfiguration?.defaultRpcEndpointIndex;
@@ -708,10 +711,6 @@ export class NetworkSettings extends PureComponent {
isCustomMainnet,
shouldNetworkSwitchPopToWallet,
navigation,
- nativeToken,
- networkType,
- networkUrl,
- showNetworkOnboarding,
}) => {
const { NetworkController, CurrencyRateController } = Engine.context;
@@ -755,7 +754,7 @@ export class NetworkSettings extends PureComponent {
(url) => url === blockExplorerUrl,
);
- const addedNetwork = await NetworkController.addNetwork({
+ await NetworkController.addNetwork({
chainId,
blockExplorerUrls,
defaultRpcEndpointIndex: 0,
@@ -770,18 +769,6 @@ export class NetworkSettings extends PureComponent {
},
],
});
-
- const { networkClientId } =
- addedNetwork?.rpcEndpoints?.[addedNetwork.defaultRpcEndpointIndex] ??
- {};
-
- await NetworkController.setActiveNetwork(networkClientId);
- this.props.showNetworkOnboardingAction({
- networkUrl,
- networkType,
- nativeToken,
- showNetworkOnboarding,
- });
}
isCustomMainnet
@@ -801,10 +788,10 @@ export class NetworkSettings extends PureComponent {
nickname,
blockExplorerUrls,
blockExplorerUrl,
- editable,
enableAction,
rpcUrls,
addMode,
+ editable,
} = this.state;
const ticker = this.state.ticker && this.state.ticker.toUpperCase();
@@ -1161,12 +1148,17 @@ export class NetworkSettings extends PureComponent {
};
onRpcItemAdd = async (url, name) => {
- if (!url || !name) {
+ if (!url) {
return;
}
+ const rpcName = name ?? '';
+
await this.setState((prevState) => ({
- rpcUrls: [...prevState.rpcUrls, { url, name }],
+ rpcUrls: [
+ ...prevState.rpcUrls,
+ { url, name: rpcName, type: RpcEndpointType.Custom },
+ ],
}));
await this.setState({
@@ -1279,7 +1271,6 @@ export class NetworkSettings extends PureComponent {
if (addMode) {
this.validateChainId();
}
- this.validateRpcUrl();
this.validateSymbol();
this.getCurrentState();
};
@@ -1791,7 +1782,6 @@ export class NetworkSettings extends PureComponent {
autoCapitalize={'none'}
autoCorrect={false}
value={nickname}
- editable={editable}
onChangeText={this.onNicknameChange}
placeholder={strings('app_settings.network_name_placeholder')}
placeholderTextColor={colors.text.muted}
@@ -1826,24 +1816,27 @@ export class NetworkSettings extends PureComponent {
{strings('app_settings.network_rpc_url_label')}
{isNetworkUiRedesignEnabled() ? (
-
+
this.openRpcModal()}
@@ -1895,7 +1888,6 @@ export class NetworkSettings extends PureComponent {
autoCapitalize={'none'}
autoCorrect={false}
value={chainId}
- editable={editable}
onChangeText={this.onChainIDChange}
onBlur={() => {
this.validateChainId();
@@ -1920,7 +1912,6 @@ export class NetworkSettings extends PureComponent {
autoCapitalize={'none'}
autoCorrect={false}
value={ticker}
- editable={editable}
onChangeText={this.onTickerChange}
onBlur={() => {
this.validateSymbol();
@@ -1940,12 +1931,13 @@ export class NetworkSettings extends PureComponent {
{isNetworkUiRedesignEnabled() ? (
-
+
this.openBlockExplorerModal()}
@@ -1961,7 +1953,6 @@ export class NetworkSettings extends PureComponent {
autoCapitalize={'none'}
autoCorrect={false}
value={blockExplorerUrl}
- editable={editable}
onChangeText={this.onBlockExplorerUrlChange}
placeholder={strings(
'app_settings.network_block_explorer_placeholder',
@@ -2050,12 +2041,12 @@ export class NetworkSettings extends PureComponent {
placeholder={strings('app_settings.network_rpc_placeholder')}
placeholderTextColor={colors.text.muted}
onSubmitEditing={this.jumpToChainId}
- testID={NetworksViewSelectorsIDs.RPC_URL_INPUT}
+ testID={NetworksViewSelectorsIDs.RPC_NAME_INPUT}
keyboardAppearance={themeAppearance}
/>
{
this.onRpcItemAdd(rpcUrlForm, rpcNameForm);
@@ -2063,6 +2054,7 @@ export class NetworkSettings extends PureComponent {
width={ButtonWidthTypes.Full}
labelTextVariant={TextVariant.DisplayMD}
isDisabled={!!warningRpcUrl}
+ testID={NetworksViewSelectorsIDs.ADD_RPC_BUTTON}
/>
|
@@ -2139,6 +2131,11 @@ export class NetworkSettings extends PureComponent {
style={styles.rpcMenu}
shouldNavigateBack={false}
>
+
+
+ {strings('app_settings.add_block_explorer_url')}
+
+
{blockExplorerUrls.map((url) => (
{
await this.onBlockExplorerUrlChange(url);
}}
+ showButtonIcon={blockExplorerUrl !== url}
buttonIcon={IconName.Trash}
onButtonClick={async () => {
await this.onBlockExplorerUrlDelete(url);
@@ -2181,6 +2180,11 @@ export class NetworkSettings extends PureComponent {
style={styles.rpcMenu}
shouldNavigateBack={false}
>
+
+
+ {strings('app_settings.add_rpc_url')}
+
+
{rpcUrls.map(({ url, name, type }) => (
{
await this.onRpcUrlChangeWithName(url, name, type);
this.closeRpcModal();
}}
+ showButtonIcon={
+ rpcUrl !== url && type !== RpcEndpointType.Infura
+ }
buttonIcon={IconName.Trash}
onButtonClick={async () => {
await this.onRpcUrlDelete(url);
@@ -2217,6 +2225,7 @@ export class NetworkSettings extends PureComponent {
}}
width={ButtonWidthTypes.Auto}
labelTextVariant={TextVariant.DisplayMD}
+ testID={NetworksViewSelectorsIDs.ADD_RPC_BUTTON}
/>
|
|
diff --git a/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap
index 54836fa01520..57a1202d53ad 100644
--- a/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap
+++ b/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap
@@ -413,11 +413,14 @@ exports[`NetworksSettings should render correctly 1`] = `
{
expect(sanitizedUrl).toEqual(undefined);
});
- it('should not hide key from url', () => {
+ it('should return URL without change if there is no path', () => {
const urlString = 'https://www.example.com';
const sanitizedUrl = hideKeyFromUrl(urlString);
expect(sanitizedUrl).toEqual('https://www.example.com');
});
- it('should hide key from url if protocol is not defined', () => {
+ it('should handle URLs with query parameters', () => {
+ const urlString = 'https://www.example.com/v1/1234556?param=value';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com/v1');
+ });
+
+ it('should handle URLs with fragments', () => {
+ const urlString = 'https://www.example.com/v1/1234556#section';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com/v1');
+ });
+
+ it('should return the same URL when there is a trailing slash', () => {
+ const urlString = 'https://www.example.com/v1/';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com/v1');
+ });
+
+ it('should handle a URL without a protocol', () => {
const urlString = 'www.example.com/v1/1234';
const sanitizedUrl = hideKeyFromUrl(urlString);
expect(sanitizedUrl).toEqual('www.example.com/v1');
});
+
+ it('should handle URLs with multiple segments', () => {
+ const urlString = 'https://www.example.com/v1/1234/5678';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com/v1/1234');
+ });
+
+ it('should handle an empty string as the URL', () => {
+ const urlString = '';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('');
+ });
+
+ it('should return the hostname if no path exists', () => {
+ const urlString = 'https://www.example.com';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com');
+ });
+
+ it('should handle URLs with only a single slash (root URL)', () => {
+ const urlString = 'https://www.example.com/';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com');
+ });
+
+ it('should not strip anything if the URL has only a single path segment', () => {
+ const urlString = 'https://www.example.com/v1';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com');
+ });
+
+ it('should strip the key when there are special characters in the URL', () => {
+ const urlString = 'https://www.example.com/v1/123$%56';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com/v1');
+ });
+
+ it('should handle localhost URLs', () => {
+ const urlString = 'http://localhost:3000/v1/1234556';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('http://localhost:3000/v1');
+ });
+
+ it('should handle URLs with ports', () => {
+ const urlString = 'https://www.example.com:8080/v1/1234556';
+ const sanitizedUrl = hideKeyFromUrl(urlString);
+ expect(sanitizedUrl).toEqual('https://www.example.com:8080/v1');
+ });
});
diff --git a/app/util/hideKeyFromUrl.ts b/app/util/hideKeyFromUrl.ts
index 29a4c915d683..639a8f274d3f 100644
--- a/app/util/hideKeyFromUrl.ts
+++ b/app/util/hideKeyFromUrl.ts
@@ -1,6 +1,9 @@
const hideKeyFromUrl = (url: string | undefined) => {
if (!url) return url;
+ // If the URL is just a hostname without a path, return it as is
+ if (!url.includes('/')) return url;
+
const regex = /^(https?:\/\/)(.*)$/;
const match = url.match(regex);
@@ -8,6 +11,11 @@ const hideKeyFromUrl = (url: string | undefined) => {
const protocol = match[1];
let restOfUrl = match[2];
+ // Special case: handle URLs like 'test.test.com'
+ if (!restOfUrl.includes('/')) {
+ return protocol + restOfUrl;
+ }
+
// eslint-disable-next-line no-useless-escape
restOfUrl = restOfUrl.replace(/\/[^\/]*$/, '');
return protocol + restOfUrl;
diff --git a/app/util/networks/isNetworkUiRedesignEnabled.ts b/app/util/networks/isNetworkUiRedesignEnabled.ts
index e6d1667314d9..f8ba3b9aaec5 100644
--- a/app/util/networks/isNetworkUiRedesignEnabled.ts
+++ b/app/util/networks/isNetworkUiRedesignEnabled.ts
@@ -1,4 +1,3 @@
-export const isNetworkUiRedesignEnabled = () =>
- process.env.MM_NETWORK_UI_REDESIGN_ENABLED === '1';
+export const isNetworkUiRedesignEnabled = () => true;
export default isNetworkUiRedesignEnabled;
diff --git a/e2e/pages/Settings/NetworksView.js b/e2e/pages/Settings/NetworksView.js
index c73524d1b5a1..3a06040f7fd7 100644
--- a/e2e/pages/Settings/NetworksView.js
+++ b/e2e/pages/Settings/NetworksView.js
@@ -4,16 +4,39 @@ import {
} from '../../selectors/Settings/NetworksView.selectors';
import Matchers from '../../utils/Matchers';
import Gestures from '../../utils/Gestures';
+import { NetworkListModalSelectorsIDs } from '../../selectors/Modals/NetworkListModal.selectors';
class NetworkView {
get networkContainer() {
return Matchers.getElementByID(NetworksViewSelectorsIDs.NETWORK_CONTAINER);
}
+ get networkFormContainer() {
+ return Matchers.getElementByID(NetworksViewSelectorsIDs.CONTAINER);
+ }
+
get rpcContainer() {
return Matchers.getElementByID(NetworksViewSelectorsIDs.RPC_CONTAINER);
}
+ get addNetworkButtonForm() {
+ return device.getPlatform() === 'ios'
+ ? Matchers.getElementByID(NetworkListModalSelectorsIDs.ADD_BUTTON)
+ : Matchers.getElementByLabel(NetworkListModalSelectorsIDs.ADD_BUTTON);
+ }
+
+ get addRpcDropDownButton() {
+ return device.getPlatform() === 'ios'
+ ? Matchers.getElementByID(NetworksViewSelectorsIDs.ICON_BUTTON_RPC)
+ : Matchers.getElementByLabel(NetworksViewSelectorsIDs.ICON_BUTTON_RPC);
+ }
+
+ get addRpcButton() {
+ return device.getPlatform() === 'ios'
+ ? Matchers.getElementByID(NetworksViewSelectorsIDs.ADD_RPC_BUTTON)
+ : Matchers.getElementByLabel(NetworksViewSelectorsIDs.ADD_RPC_BUTTON);
+ }
+
get noMatchingText() {
return Matchers.getElementByText(
NetworkViewSelectorsText.NO_MATCHING_SEARCH_RESULTS,
@@ -117,6 +140,18 @@ class NetworkView {
await Gestures.waitAndTap(this.addNetworkButton);
}
+ async tapAddNetworkFormButton() {
+ await Gestures.waitAndTap(this.addNetworkButtonForm);
+ }
+
+ async tapRpcDropDownButton() {
+ await Gestures.waitAndTap(this.addRpcDropDownButton);
+ }
+
+ async tapAddRpcButton() {
+ await Gestures.waitAndTap(this.addRpcButton);
+ }
+
async switchToCustomNetworks() {
await Gestures.waitAndTap(this.customNetworkTab);
}
diff --git a/e2e/pages/modals/NetworkListModal.js b/e2e/pages/modals/NetworkListModal.js
index ed2e12df6baf..2865844a3919 100644
--- a/e2e/pages/modals/NetworkListModal.js
+++ b/e2e/pages/modals/NetworkListModal.js
@@ -5,12 +5,35 @@ import {
import Matchers from '../../utils/Matchers';
import Gestures from '../../utils/Gestures';
import { CellModalSelectorsIDs } from '../../selectors/Modals/CellModal.selectors';
+import { NetworksViewSelectorsIDs } from '../../selectors/Settings/NetworksView.selectors';
class NetworkListModal {
get networkScroll() {
return Matchers.getElementByID(NetworkListModalSelectorsIDs.SCROLL);
}
+ get closeIcon() {
+ return Matchers.getElementByID(NetworksViewSelectorsIDs.CLOSE_ICON);
+ }
+
+ get deleteNetworkButton() {
+ return Matchers.getElementByText(
+ NetworkListModalSelectorsText.DELETE_NETWORK,
+ );
+ }
+
+ get addPopularNetworkButton() {
+ return Matchers.getElementByText(
+ NetworkListModalSelectorsText.ADD_POPULAR_NETWORK_BUTTON,
+ );
+ }
+
+ get networkSearchInput() {
+ return Matchers.getElementByID(
+ NetworksViewSelectorsIDs.SEARCH_NETWORK_INPUT_BOX_ID,
+ );
+ }
+
get selectNetwork() {
return Matchers.getElementByText(
NetworkListModalSelectorsText.SELECT_NETWORK,
@@ -31,6 +54,14 @@ class NetworkListModal {
return Matchers.getElementByID(NetworkListModalSelectorsIDs.CUSTOM_NETWORK_CELL(network));
}
+ async tapDeleteButton() {
+ await Gestures.waitAndTap(this.deleteNetworkButton);
+ }
+
+ async scrollToTopOfNetworkList() {
+ await Gestures.swipe(this.networkScroll, 'down', 'fast');
+ }
+
async changeNetworkTo(networkName, custom) {
const elem = this.getCustomNetwork(networkName, custom);
await Gestures.waitAndTap(elem);
@@ -47,6 +78,26 @@ class NetworkListModal {
async tapTestNetworkSwitch() {
await Gestures.waitAndTap(this.testNetToggle);
}
+
+ async longPressOnNetwork(networkName) {
+ const network = Matchers.getElementByText(networkName);
+ await Gestures.tapAndLongPress(network);
+ }
+
+ async SearchNetworkName(networkName) {
+ await Gestures.typeTextAndHideKeyboard(
+ this.networkSearchInput,
+ networkName,
+ );
+ }
+
+ async tapClearSearch() {
+ await Gestures.waitAndTap(this.closeIcon);
+ }
+
+ async tapAddNetworkButton() {
+ await Gestures.waitAndTap(this.addPopularNetworkButton);
+ }
}
export default new NetworkListModal();
diff --git a/e2e/selectors/Modals/NetworkListModal.selectors.js b/e2e/selectors/Modals/NetworkListModal.selectors.js
index 4db2fbe7c864..a476f4b3a071 100644
--- a/e2e/selectors/Modals/NetworkListModal.selectors.js
+++ b/e2e/selectors/Modals/NetworkListModal.selectors.js
@@ -2,6 +2,8 @@ import enContent from '../../../locales/languages/en.json';
export const NetworkListModalSelectorsText = {
SELECT_NETWORK: enContent.networks.select_network,
+ DELETE_NETWORK: enContent.app_settings.delete,
+ ADD_POPULAR_NETWORK_BUTTON: enContent.networks.add,
};
export const NetworkListModalSelectorsIDs = {
diff --git a/e2e/selectors/Settings/NetworksView.selectors.js b/e2e/selectors/Settings/NetworksView.selectors.js
index af1bf8d095cd..85926b42264f 100644
--- a/e2e/selectors/Settings/NetworksView.selectors.js
+++ b/e2e/selectors/Settings/NetworksView.selectors.js
@@ -18,6 +18,10 @@ export const NetworksViewSelectorsIDs = {
CLOSE_ICON: 'close-network-icon',
BACK_ARROW_BUTTON: 'back-arrow-button',
SEARCH_NETWORK_INPUT_BOX_ID: 'network-search-input',
+ CONTAINER: 'network-form-container',
+ ICON_BUTTON_RPC: 'drop-down-rpc-menu',
+ ADD_RPC_BUTTON: 'add-rpc-button',
+ RPC_NAME_INPUT: 'input-rpc-name',
};
export const NetworksSelectorSelectorsIDs = {
diff --git a/e2e/specs/assets/nft-detection-modal.spec.js b/e2e/specs/assets/nft-detection-modal.spec.js
index b0b4b4e41ce8..fd37045ee508 100644
--- a/e2e/specs/assets/nft-detection-modal.spec.js
+++ b/e2e/specs/assets/nft-detection-modal.spec.js
@@ -15,7 +15,7 @@ import NetworkEducationModal from '../../pages/modals/NetworkEducationModal';
import { NftDetectionModalSelectorsText } from '../../selectors/Modals/NftDetectionModal.selectors';
describe(SmokeAssets('NFT Detection Modal'), () => {
- const ETHEREUM = 'Ethereum Main Network';
+ const ETHEREUM = 'Ethereum Network Mainnet';
beforeAll(async () => {
jest.setTimeout(170000);
await TestHelpers.reverseServerPort();
diff --git a/e2e/specs/networks/add-custom-rpc.spec.js b/e2e/specs/networks/add-custom-rpc.spec.js
index db554b19e60c..ddff33e3c6c5 100644
--- a/e2e/specs/networks/add-custom-rpc.spec.js
+++ b/e2e/specs/networks/add-custom-rpc.spec.js
@@ -4,13 +4,9 @@ import { Regression } from '../../tags';
import NetworkView from '../../pages/Settings/NetworksView';
import WalletView from '../../pages/wallet/WalletView';
import ToastModal from '../../pages/modals/ToastModal';
-import SettingsView from '../../pages/Settings/SettingsView';
import NetworkListModal from '../../pages/modals/NetworkListModal';
import NetworkEducationModal from '../../pages/modals/NetworkEducationModal';
-import NetworkAddedModal from '../../pages/modals/NetworkAddedModal';
-import NetworkApprovalModal from '../../pages/modals/NetworkApprovalModal';
import { loginToApp } from '../../viewHelper';
-import TabBarComponent from '../../pages/TabBarComponent';
import FixtureBuilder from '../../fixtures/fixture-builder';
import {
loadFixture,
@@ -21,9 +17,10 @@ import { getFixturesServerPort } from '../../fixtures/utils';
import FixtureServer from '../../fixtures/fixture-server';
import Assertions from '../../utils/Assertions';
import { CustomNetworks } from '../../resources/networks.e2e';
+import Gestures from '../../utils/Gestures';
+import Matchers from '../../utils/Matchers';
const fixtureServer = new FixtureServer();
-const MAINNET = 'Ethereum Main Network';
describe(Regression('Custom RPC Tests'), () => {
beforeAll(async () => {
@@ -45,40 +42,49 @@ describe(Regression('Custom RPC Tests'), () => {
await stopFixtureServer(fixtureServer);
});
- it('should go to settings then networks', async () => {
- await TabBarComponent.tapSettings();
- await SettingsView.tapNetworks();
- await Assertions.checkIfVisible(NetworkView.networkContainer);
+ it('should go to network', async () => {
+ await WalletView.tapNetworksButtonOnNavBar();
});
it('should add Gnosis network', async () => {
// Tap on Add Network button
- await NetworkView.tapAddNetworkButton();
- await NetworkView.switchToCustomNetworks();
+ await NetworkView.tapAddNetworkFormButton();
+
await NetworkView.typeInNetworkName(
CustomNetworks.Gnosis.providerConfig.nickname,
);
+
+ await NetworkView.tapRpcDropDownButton();
+ await NetworkView.tapAddRpcButton();
+
+ await TestHelpers.delay(2000);
await NetworkView.typeInRpcUrl('abc'); // Input incorrect RPC URL
await Assertions.checkIfVisible(NetworkView.rpcWarningBanner);
await NetworkView.clearRpcInputBox();
await NetworkView.typeInRpcUrl(CustomNetworks.Gnosis.providerConfig.rpcUrl);
+
+ await NetworkView.tapAddRpcButton();
+
await NetworkView.typeInChainId(
CustomNetworks.Gnosis.providerConfig.chainId,
);
await NetworkView.tapChainIDLabel(); // Focus outside of text input field
-
await NetworkView.typeInNetworkSymbol(
`${CustomNetworks.Gnosis.providerConfig.ticker}\n`,
);
+
if (device.getPlatform() === 'ios') {
await NetworkView.tapChainIDLabel(); // Focus outside of text input field
await NetworkView.tapChainIDLabel(); // Focus outside of text input field
await NetworkView.tapRpcNetworkAddButton();
}
- await Assertions.checkIfVisible(NetworkApprovalModal.container);
- await NetworkApprovalModal.tapApproveButton();
- await Assertions.checkIfVisible(NetworkAddedModal.switchNetwork);
- await NetworkAddedModal.tapSwitchToNetwork();
+ });
+
+ it('should switch to Gnosis network', async () => {
+ await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.changeNetworkTo(
+ CustomNetworks.Gnosis.providerConfig.nickname,
+ );
});
it('should dismiss network education modal', async () => {
@@ -100,15 +106,15 @@ describe(Regression('Custom RPC Tests'), () => {
// Tap to prompt network list
await WalletView.tapNetworksButtonOnNavBar();
await Assertions.checkIfVisible(NetworkListModal.networkScroll);
- await Assertions.checkIfVisible(
- NetworkListModal.getCustomNetwork(
- CustomNetworks.Gnosis.providerConfig.nickname,
- true,
- ),
+
+ await Assertions.checkIfElementToHaveText(
+ WalletView.navbarNetworkText,
+ CustomNetworks.Gnosis.providerConfig.nickname,
);
});
it('should switch to Sepolia then dismiss the network education modal', async () => {
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
await NetworkListModal.changeNetworkTo(
CustomNetworks.Sepolia.providerConfig.nickname,
@@ -124,17 +130,17 @@ describe(Regression('Custom RPC Tests'), () => {
});
it('should switch back to Gnosis', async () => {
+ await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfElementToHaveText(
WalletView.navbarNetworkText,
CustomNetworks.Sepolia.providerConfig.nickname,
);
- await WalletView.tapNetworksButtonOnNavBar();
await Assertions.checkIfVisible(NetworkListModal.networkScroll);
- await NetworkListModal.scrollToBottomOfNetworkList();
+ await NetworkListModal.scrollToTopOfNetworkList();
// Change to back to Gnosis Network
await NetworkListModal.changeNetworkTo(
CustomNetworks.Gnosis.providerConfig.nickname,
- true,
);
await Assertions.checkIfVisible(WalletView.container);
await Assertions.checkIfElementToHaveText(
@@ -142,7 +148,6 @@ describe(Regression('Custom RPC Tests'), () => {
CustomNetworks.Gnosis.providerConfig.nickname,
);
await Assertions.checkIfNotVisible(NetworkEducationModal.container);
-
try {
await Assertions.checkIfVisible(ToastModal.container);
await Assertions.checkIfNotVisible(ToastModal.container);
@@ -153,17 +158,38 @@ describe(Regression('Custom RPC Tests'), () => {
});
it('should go to settings networks and remove xDai network', async () => {
- await TabBarComponent.tapSettings();
- await SettingsView.tapNetworks();
- await Assertions.checkIfVisible(NetworkView.networkContainer);
+ await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
+ await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
+ await NetworkListModal.changeNetworkTo(
+ CustomNetworks.Sepolia.providerConfig.nickname,
+ );
+
+ await WalletView.tapNetworksButtonOnNavBar();
- await NetworkView.longPressToRemoveNetwork(
+ await NetworkListModal.longPressOnNetwork(
CustomNetworks.Gnosis.providerConfig.nickname,
);
+
if (device.getPlatform() === 'android') {
await device.disableSynchronization();
}
- await NetworkEducationModal.tapGotItButton();
+
+ // delete Gnosis network
+ const deleteButton = Matchers.getElementByID('delete-network-button-0x64');
+ await Gestures.waitAndTap(deleteButton);
+
+ await TestHelpers.delay(2000);
+
+ await NetworkListModal.tapDeleteButton();
+
+ try {
+ await Assertions.checkIfVisible(ToastModal.container);
+ await Assertions.checkIfNotVisible(ToastModal.container);
+ } catch {
+ // eslint-disable-next-line no-console
+ console.log('Toast is not visible');
+ }
try {
await Assertions.checkIfVisible(ToastModal.container);
@@ -172,11 +198,5 @@ describe(Regression('Custom RPC Tests'), () => {
// eslint-disable-next-line no-console
console.log('Toast is not visible');
}
- await TabBarComponent.tapWallet();
- await Assertions.checkIfVisible(WalletView.container);
- await Assertions.checkIfElementToHaveText(
- WalletView.navbarNetworkText,
- MAINNET,
- );
});
});
diff --git a/e2e/specs/networks/add-popular-networks.spec.js b/e2e/specs/networks/add-popular-networks.spec.js
index 377f9e0ce43c..05fbfa36a4b9 100644
--- a/e2e/specs/networks/add-popular-networks.spec.js
+++ b/e2e/specs/networks/add-popular-networks.spec.js
@@ -1,14 +1,13 @@
'use strict';
import TestHelpers from '../../helpers';
import { Regression } from '../../tags';
-import NetworkView from '../../pages/Settings/NetworksView';
-import SettingsView from '../../pages/Settings/SettingsView';
import NetworkAddedModal from '../../pages/modals/NetworkAddedModal';
import NetworkApprovalModal from '../../pages/modals/NetworkApprovalModal';
import { loginToApp } from '../../viewHelper';
-import TabBarComponent from '../../pages/TabBarComponent';
import FixtureBuilder from '../../fixtures/fixture-builder';
import { withFixtures } from '../../fixtures/fixture-helper';
+import WalletView from '../../pages/wallet/WalletView';
+import NetworkListModal from '../../pages/modals/NetworkListModal';
import Assertions from '../../utils/Assertions';
const Arbitrum = 'Arbitrum One';
@@ -28,11 +27,13 @@ describe(Regression('Add all popular networks'), () => {
async () => {
await loginToApp();
- await TabBarComponent.tapSettings();
- await SettingsView.tapNetworks();
- await NetworkView.tapAddNetworkButton();
- await NetworkView.tapNetworkByName(Arbitrum);
- await Assertions.checkIfVisible(NetworkApprovalModal.container);
+ await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
+
+ await Assertions.checkIfVisible(
+ NetworkListModal.addPopularNetworkButton,
+ );
+ await NetworkListModal.tapAddNetworkButton();
await NetworkApprovalModal.tapApproveButton();
await NetworkAddedModal.tapCloseButton();
},
diff --git a/e2e/specs/networks/connect-test-network.spec.js b/e2e/specs/networks/connect-test-network.spec.js
index b5711acfa9ed..963a84fc82f4 100644
--- a/e2e/specs/networks/connect-test-network.spec.js
+++ b/e2e/specs/networks/connect-test-network.spec.js
@@ -41,6 +41,7 @@ describe(Regression('Connect to a Test Network'), () => {
it('should switch to test Network then dismiss the network education modal', async () => {
// Tap to prompt network list
await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfVisible(NetworkListModal.networkScroll);
await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
await NetworkListModal.changeNetworkTo(
@@ -62,12 +63,14 @@ describe(Regression('Connect to a Test Network'), () => {
it('should not toggle off the Test Network switch while connected to test network', async () => {
await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfVisible(NetworkListModal.networkScroll);
await NetworkListModal.tapTestNetworkSwitch();
await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
});
it('should disconnect to Test Network', async () => {
+ await NetworkListModal.scrollToTopOfNetworkList();
await NetworkListModal.changeNetworkTo(ETHEREUM);
await Assertions.checkIfVisible(NetworkEducationModal.container);
await Assertions.checkIfElementToHaveText(
@@ -85,6 +88,7 @@ describe(Regression('Connect to a Test Network'), () => {
it('should toggle off the Test Network switch', async () => {
await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfVisible(NetworkListModal.networkScroll);
await Assertions.checkIfTextIsDisplayed(
CustomNetworks.Sepolia.providerConfig.nickname,
diff --git a/e2e/specs/networks/networks-search.spec.js b/e2e/specs/networks/networks-search.spec.js
index 86c0b459e32b..42b0ea475b7d 100644
--- a/e2e/specs/networks/networks-search.spec.js
+++ b/e2e/specs/networks/networks-search.spec.js
@@ -10,8 +10,12 @@ import FixtureBuilder from '../../fixtures/fixture-builder';
import { withFixtures } from '../../fixtures/fixture-helper';
import Assertions from '../../utils/Assertions';
import { PopularNetworksList } from '../../resources/networks.e2e';
+import WalletView from '../../pages/wallet/WalletView';
+import NetworkListModal from '../../pages/modals/NetworkListModal';
+import Matchers from '../../utils/Matchers';
+import Gestures from '../../utils/Gestures';
-const SHORT_HAND_NETWORK_TEXT = 'ava';
+const SHORT_HAND_NETWORK_TEXT = 'Ava';
const INVALID_NETWORK_TEXT = 'cccM';
describe(Regression('Networks Search'), () => {
beforeAll(async () => {
@@ -28,28 +32,28 @@ describe(Regression('Networks Search'), () => {
async () => {
await loginToApp();
- await TabBarComponent.tapSettings();
- await SettingsView.tapNetworks();
- await NetworkView.SearchNetworkName(INVALID_NETWORK_TEXT);
- await Assertions.checkIfVisible(NetworkView.noMatchingText);
- await NetworkView.tapClearSearch();
- await NetworkView.SearchNetworkName(SHORT_HAND_NETWORK_TEXT);
- await NetworkView.tapNetworkByName(
+ await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.SearchNetworkName(INVALID_NETWORK_TEXT);
+ await NetworkListModal.tapClearSearch();
+ await NetworkListModal.SearchNetworkName(SHORT_HAND_NETWORK_TEXT);
+ await NetworkListModal.longPressOnNetwork(
PopularNetworksList.Avalanche.providerConfig.nickname,
);
- await NetworkView.tapDeleteButton();
- await Assertions.checkIfVisible(NetworkView.noMatchingText);
- await NetworkView.tapClearSearch();
- await Assertions.checkIfNotVisible(
- NetworkView.getnetworkName(
- PopularNetworksList.Avalanche.providerConfig.nickname,
- ),
+ if (device.getPlatform() === 'android') {
+ await device.disableSynchronization();
+ }
+
+ // delete avalanche network
+ const deleteButton = Matchers.getElementByID(
+ 'delete-network-button-0xa86a',
);
- await NetworkView.tapAddNetworkButton();
+ await Gestures.waitAndTap(deleteButton);
+
+ await TestHelpers.delay(2000);
+ await NetworkListModal.tapDeleteButton();
+
await Assertions.checkIfVisible(
- NetworkView.getnetworkName(
- PopularNetworksList.Avalanche.providerConfig.nickname,
- ),
+ NetworkListModal.addPopularNetworkButton,
);
},
);
diff --git a/e2e/specs/wallet/send-ERC-token.spec.js b/e2e/specs/wallet/send-ERC-token.spec.js
index 86d3a494ab3d..97e6662d5eb9 100644
--- a/e2e/specs/wallet/send-ERC-token.spec.js
+++ b/e2e/specs/wallet/send-ERC-token.spec.js
@@ -30,7 +30,9 @@ describe(SmokeCore('Send ERC Token'), () => {
it('should add Sepolia testnet to my networks list', async () => {
await WalletView.tapNetworksButtonOnNavBar();
await TestHelpers.delay(2000);
+ await NetworkListModal.scrollToBottomOfNetworkList();
await NetworkListModal.tapTestNetworkSwitch();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
await NetworkListModal.changeNetworkTo(
CustomNetworks.Sepolia.providerConfig.nickname,
diff --git a/e2e/viewHelper.js b/e2e/viewHelper.js
index ad7438dadc97..c444366f9777 100644
--- a/e2e/viewHelper.js
+++ b/e2e/viewHelper.js
@@ -70,13 +70,16 @@ have to have all these workarounds in the tests
};
export const skipNotificationsDeviceSettings = async () => {
-
await TestHelpers.delay(1000);
try {
- await Assertions.checkIfVisible(EnableDeviceNotificationsAlert.stepOneContainer);
+ await Assertions.checkIfVisible(
+ EnableDeviceNotificationsAlert.stepOneContainer,
+ );
await EnableDeviceNotificationsAlert.tapOnNotEnableDeviceNotificationsButton();
- await Assertions.checkIfNotVisible(EnableDeviceNotificationsAlert.stepOneContainer);
+ await Assertions.checkIfNotVisible(
+ EnableDeviceNotificationsAlert.stepOneContainer,
+ );
} catch {
/* eslint-disable no-console */
@@ -99,6 +102,7 @@ export const importWalletWithRecoveryPhrase = async () => {
await ImportWalletView.enterPassword(validAccount.password);
await ImportWalletView.reEnterPassword(validAccount.password);
+ //'Should dismiss Enable device Notifications checks alert'
await TestHelpers.delay(3500);
await OnboardingSuccessView.tapDone();
//'Should dismiss Enable device Notifications checks alert'
@@ -187,7 +191,9 @@ export const addLocalhostNetwork = async () => {
export const switchToSepoliaNetwork = async () => {
await WalletView.tapNetworksButtonOnNavBar();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await NetworkListModal.tapTestNetworkSwitch();
+ await NetworkListModal.scrollToBottomOfNetworkList();
await Assertions.checkIfToggleIsOn(NetworkListModal.testNetToggle);
await NetworkListModal.changeNetworkTo(
CustomNetworks.Sepolia.providerConfig.nickname,
diff --git a/patches/@metamask+preferences-controller+11.0.0.patch b/patches/@metamask+preferences-controller+11.0.0.patch
index bc5402698b7b..712fc6cf2ef0 100644
--- a/patches/@metamask+preferences-controller+11.0.0.patch
+++ b/patches/@metamask+preferences-controller+11.0.0.patch
@@ -1,3 +1,105 @@
+diff --git a/node_modules/@metamask/preferences-controller/.idea/.gitignore b/node_modules/@metamask/preferences-controller/.idea/.gitignore
+new file mode 100644
+index 0000000..b58b603
+--- /dev/null
++++ b/node_modules/@metamask/preferences-controller/.idea/.gitignore
+@@ -0,0 +1,5 @@
++# Default ignored files
++/shelf/
++/workspace.xml
++# Editor-based HTTP Client requests
++/httpRequests/
+diff --git a/node_modules/@metamask/preferences-controller/.idea/modules.xml b/node_modules/@metamask/preferences-controller/.idea/modules.xml
+new file mode 100644
+index 0000000..ecac035
+--- /dev/null
++++ b/node_modules/@metamask/preferences-controller/.idea/modules.xml
+@@ -0,0 +1,8 @@
++
++
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/@metamask/preferences-controller/.idea/preferences-controller.iml b/node_modules/@metamask/preferences-controller/.idea/preferences-controller.iml
+new file mode 100644
+index 0000000..24643cc
+--- /dev/null
++++ b/node_modules/@metamask/preferences-controller/.idea/preferences-controller.iml
+@@ -0,0 +1,12 @@
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+diff --git a/node_modules/@metamask/preferences-controller/.idea/workspace.xml b/node_modules/@metamask/preferences-controller/.idea/workspace.xml
+new file mode 100644
+index 0000000..dbf94fd
+--- /dev/null
++++ b/node_modules/@metamask/preferences-controller/.idea/workspace.xml
+@@ -0,0 +1,50 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++ 1727275325414
++
++
++ 1727275325414
++
++
++
++
++
++
++
++
+\ No newline at end of file
diff --git a/node_modules/@metamask/preferences-controller/dist/chunk-FSWGV6H6.js b/node_modules/@metamask/preferences-controller/dist/chunk-FSWGV6H6.js
index 30e985c..d03fa2f 100644
--- a/node_modules/@metamask/preferences-controller/dist/chunk-FSWGV6H6.js
@@ -20,7 +122,8 @@ index 30e985c..d03fa2f 100644
+ useTransactionSimulations: { persist: true, anonymous: true },
+ showMultiRpcModal: { persist: false, anonymous: false },
};
- var name = "PreferencesController";
+-var name = "PreferencesController";
++var name = 'PreferencesController';
function getDefaultPreferencesState() {
@@ -37,7 +41,7 @@ function getDefaultPreferencesState() {
isIpfsGatewayEnabled: true,
@@ -29,7 +132,8 @@ index 30e985c..d03fa2f 100644
- openSeaEnabled: false,
+ displayNftMedia: false,
securityAlertsEnabled: false,
- selectedAddress: "",
+- selectedAddress: "",
++ selectedAddress: '',
showIncomingTransactions: {
@@ -64,7 +68,11 @@ function getDefaultPreferencesState() {
},
@@ -52,7 +156,7 @@ index 30e985c..d03fa2f 100644
+ if (useNftDetection && !this.state.displayNftMedia) {
throw new Error(
- "useNftDetection cannot be enabled if openSeaEnabled is false"
-+ "useNftDetection cannot be enabled if displayNftMedia is false"
++ 'useNftDetection cannot be enabled if displayNftMedia is false',
);
}
this.update((state) => {
@@ -120,25 +224,82 @@ index 30e985c..d03fa2f 100644
+ * @param smartTransactionsOptInStatus - true to opt into smart transactions
+ */
+ setSmartTransactionsOptInStatus(smartTransactionsOptInStatus) {
-+ this.update((state) => {
-+ state.smartTransactionsOptInStatus = smartTransactionsOptInStatus;
-+ });
++ this.update((state) => {
++ state.smartTransactionsOptInStatus = smartTransactionsOptInStatus;
++ });
+ }
+
+ /**
-+ * A setter for the user to opt into transaction simulations
-+ *
-+ * @param useTransactionSimulations - true to opt into transaction simulations
-+ */
++ * A setter for the user to opt into transaction simulations
++ *
++ * @param useTransactionSimulations - true to opt into transaction simulations
++ */
+ setUseTransactionSimulations(useTransactionSimulations) {
-+ this.update((state) => {
-+ state.useTransactionSimulations = useTransactionSimulations;
-+ });
++ this.update((state) => {
++ state.useTransactionSimulations = useTransactionSimulations;
++ });
+ }
+
/**
* A setter for the user preferences to enable/disable rpc methods.
*
+@@ -255,7 +312,7 @@ var PreferencesController = class extends _basecontroller.BaseController {
+ const { disabledRpcMethodPreferences } = this.state;
+ const newDisabledRpcMethods = {
+ ...disabledRpcMethodPreferences,
+- [methodName]: isEnabled
++ [methodName]: isEnabled,
+ };
+ this.update((state) => {
+ state.disabledRpcMethodPreferences = newDisabledRpcMethods;
+@@ -297,21 +354,28 @@ var PreferencesController = class extends _basecontroller.BaseController {
+ * @param chainId - On hexadecimal format to enable the incoming transaction network
+ * @param isIncomingTransactionNetworkEnable - true to enable incoming transactions
+ */
+- setEnableNetworkIncomingTransactions(chainId, isIncomingTransactionNetworkEnable) {
+- if (Object.values(_chunkPOA2PUW4js.ETHERSCAN_SUPPORTED_CHAIN_IDS).includes(chainId)) {
++ setEnableNetworkIncomingTransactions(
++ chainId,
++ isIncomingTransactionNetworkEnable,
++ ) {
++ if (
++ Object.values(_chunkPOA2PUW4js.ETHERSCAN_SUPPORTED_CHAIN_IDS).includes(
++ chainId,
++ )
++ ) {
+ this.update((state) => {
+ state.showIncomingTransactions = {
+ ...this.state.showIncomingTransactions,
+- [chainId]: isIncomingTransactionNetworkEnable
++ [chainId]: isIncomingTransactionNetworkEnable,
+ };
+ });
+ }
+ }
+ };
+ _syncIdentities = new WeakSet();
+-syncIdentities_fn = function(addresses) {
+- addresses = addresses.map(
+- (address) => _controllerutils.toChecksumHexAddress.call(void 0, address)
++syncIdentities_fn = function (addresses) {
++ addresses = addresses.map((address) =>
++ _controllerutils.toChecksumHexAddress.call(void 0, address),
+ );
+ this.update((state) => {
+ const { identities } = state;
+@@ -335,9 +399,7 @@ syncIdentities_fn = function(addresses) {
+ };
+ var PreferencesController_default = PreferencesController;
+
+-
+-
+-
+-
+-exports.getDefaultPreferencesState = getDefaultPreferencesState; exports.PreferencesController = PreferencesController; exports.PreferencesController_default = PreferencesController_default;
++exports.getDefaultPreferencesState = getDefaultPreferencesState;
++exports.PreferencesController = PreferencesController;
++exports.PreferencesController_default = PreferencesController_default;
+ //# sourceMappingURL=chunk-FSWGV6H6.js.map
diff --git a/node_modules/@metamask/preferences-controller/dist/types/PreferencesController.d.ts b/node_modules/@metamask/preferences-controller/dist/types/PreferencesController.d.ts
index 7e3ba15..c3c7ec6 100644
--- a/node_modules/@metamask/preferences-controller/dist/types/PreferencesController.d.ts
@@ -199,11 +360,9 @@ index 7e3ba15..c3c7ec6 100644
setUseNftDetection(useNftDetection: boolean): void;
/**
- * Toggle the opensea enabled setting.
-+ * Toggle the display nft media enabled setting.
- *
+- *
- * @param openSeaEnabled - Boolean indicating user preference on using OpenSea's API.
-+ * @param displayNftMedia - Boolean indicating user preference on using web2 third parties.
- */
+- */
- setOpenSeaEnabled(openSeaEnabled: boolean): void;
+ setDisplayNftMedia(displayNftMedia: boolean): void;
+ /**
| | | |