From 0e139aeab995c82dd7116362d1162c35a2f11e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Vytick=20Vytrhl=C3=ADk?= Date: Mon, 6 Jan 2025 22:14:10 +0100 Subject: [PATCH] feat(suite-native): add evm L2s under feature flag --- suite-native/discovery/src/discoveryConfigSlice.ts | 11 +++++++++-- suite-native/feature-flags/src/featureFlagsSlice.ts | 3 +++ .../module-dev-utils/src/components/FeatureFlags.tsx | 1 + suite-native/tokens/src/utils.ts | 3 +++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/suite-native/discovery/src/discoveryConfigSlice.ts b/suite-native/discovery/src/discoveryConfigSlice.ts index 6845ece39c5..c077fd6172c 100644 --- a/suite-native/discovery/src/discoveryConfigSlice.ts +++ b/suite-native/discovery/src/discoveryConfigSlice.ts @@ -123,8 +123,12 @@ const selectIsSolanaEnabled = createMemoizedSelector( ); export const selectFeatureFlagEnabledNetworkSymbols = createMemoizedSelector( - [selectIsSolanaEnabled, selectAreTestnetsEnabled], - (isSolanaEnabled, areTestnetsEnabled) => { + [ + selectIsSolanaEnabled, + selectAreTestnetsEnabled, + state => selectIsFeatureFlagEnabled(state, FeatureFlag.AreEthL2sEnabled), + ], + (isSolanaEnabled, areTestnetsEnabled, areEthL2sEnabled) => { const allowlist: NetworkSymbol[] = []; if (isSolanaEnabled) { @@ -133,6 +137,9 @@ export const selectFeatureFlagEnabledNetworkSymbols = createMemoizedSelector( allowlist.push('dsol'); } } + if (areEthL2sEnabled) { + allowlist.push('base', 'op', 'arb'); + } return returnStableArrayIfEmpty(allowlist); }, diff --git a/suite-native/feature-flags/src/featureFlagsSlice.ts b/suite-native/feature-flags/src/featureFlagsSlice.ts index abe3a98869d..9f4bb342535 100644 --- a/suite-native/feature-flags/src/featureFlagsSlice.ts +++ b/suite-native/feature-flags/src/featureFlagsSlice.ts @@ -10,6 +10,7 @@ export const FeatureFlag = { IsSolanaEnabled: 'IsSolanaEnabled', IsConnectPopupEnabled: 'IsConnectPopupEnabled', IsFirmwareUpdateEnabled: 'IsFirmwareUpdateEnabled', + AreEthL2sEnabled: 'AreEthL2sEnabled', } as const; export type FeatureFlag = (typeof FeatureFlag)[keyof typeof FeatureFlag]; @@ -26,6 +27,7 @@ export const featureFlagsInitialState: FeatureFlagsState = { [FeatureFlag.IsSolanaEnabled]: false, [FeatureFlag.IsConnectPopupEnabled]: isDevelopOrDebugEnv(), [FeatureFlag.IsFirmwareUpdateEnabled]: isDevelopOrDebugEnv(), + [FeatureFlag.AreEthL2sEnabled]: isDevelopOrDebugEnv(), }; export const featureFlagsPersistedKeys: Array = [ @@ -35,6 +37,7 @@ export const featureFlagsPersistedKeys: Array = [ FeatureFlag.IsSolanaEnabled, FeatureFlag.IsConnectPopupEnabled, FeatureFlag.IsFirmwareUpdateEnabled, + FeatureFlag.AreEthL2sEnabled, ]; export const featureFlagsSlice = createSlice({ diff --git a/suite-native/module-dev-utils/src/components/FeatureFlags.tsx b/suite-native/module-dev-utils/src/components/FeatureFlags.tsx index d1a82a36da6..5ba33e910f3 100644 --- a/suite-native/module-dev-utils/src/components/FeatureFlags.tsx +++ b/suite-native/module-dev-utils/src/components/FeatureFlags.tsx @@ -8,6 +8,7 @@ const featureFlagsTitleMap = { [FeatureFlagEnum.IsSolanaEnabled]: 'Solana', [FeatureFlagEnum.IsConnectPopupEnabled]: 'Connect Popup', [FeatureFlagEnum.IsFirmwareUpdateEnabled]: 'Firmware update', + [FeatureFlagEnum.AreEthL2sEnabled]: 'Eth L2s', } as const satisfies Record; const FeatureFlag = ({ featureFlag }: { featureFlag: FeatureFlagEnum }) => { diff --git a/suite-native/tokens/src/utils.ts b/suite-native/tokens/src/utils.ts index bc7f9092a4c..9231e532ef0 100644 --- a/suite-native/tokens/src/utils.ts +++ b/suite-native/tokens/src/utils.ts @@ -14,6 +14,9 @@ export const NETWORK_SYMBOLS_WITH_TOKENS = [ 'pol', 'bsc', 'sol', + 'op', + 'base', + 'arb', ] satisfies Array; export type NetworkSymbolWithTokens = (typeof NETWORK_SYMBOLS_WITH_TOKENS)[number];