From bdad9292ee26040ced9d3df1da5fe9c51227c06d Mon Sep 17 00:00:00 2001 From: Petr Knetl Date: Wed, 12 Feb 2025 05:22:31 +0100 Subject: [PATCH] fix(suite-native): fix device onboarding feature flag evaluation --- .../src/hooks/useHandleDeviceConnection.ts | 5 +++-- suite-native/device/src/selectors.ts | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/suite-native/device/src/hooks/useHandleDeviceConnection.ts b/suite-native/device/src/hooks/useHandleDeviceConnection.ts index edc38abe307..2107f3d52f6 100644 --- a/suite-native/device/src/hooks/useHandleDeviceConnection.ts +++ b/suite-native/device/src/hooks/useHandleDeviceConnection.ts @@ -128,13 +128,13 @@ export const useHandleDeviceConnection = () => { if (isFirmwareInstallationRunning || isSuspiciousDeviceScreenFocused(navigation)) return; if ( - isDeviceInitialized && isDeviceConnected && isOnboardingFinished && !isPortfolioTrackerDevice && !isDeviceConnectedAndAuthorized && !isBiometricsOverlayVisible && - !shouldNavigateToDeviceCompromisedModal + !shouldNavigateToDeviceCompromisedModal && + !isDeviceSetupSupported ) { requestPrioritizedDeviceAccess({ deviceCallback: () => dispatch(authorizeDeviceThunk()), @@ -165,6 +165,7 @@ export const useHandleDeviceConnection = () => { isFirmwareInstallationRunning, isDeviceInitialized, shouldNavigateToDeviceCompromisedModal, + isDeviceSetupSupported, ]); // In case that the physical device is disconnected, redirect to the home screen and diff --git a/suite-native/device/src/selectors.ts b/suite-native/device/src/selectors.ts index 3fdda972612..539cf1d6ec9 100644 --- a/suite-native/device/src/selectors.ts +++ b/suite-native/device/src/selectors.ts @@ -1,4 +1,4 @@ -import { A, pipe } from '@mobily/ts-belt'; +import { A, G, pipe } from '@mobily/ts-belt'; import { Feature, @@ -47,7 +47,8 @@ type NativeDeviceRootState = DeviceRootState & AccountsRootState & DiscoveryRootState & SettingsSliceRootState & - FiatRatesRootState; + FiatRatesRootState & + FeatureFlagsRootState; const createMemoizedSelector = createWeakMapSelector.withTypes(); @@ -199,6 +200,13 @@ export const selectHasFirmwareAuthenticityCheckHardFailed = (state: FwAuthentici }; export const selectIsDeviceSetupSupported = createMemoizedSelector( - [selectDeviceModel], - model => !!model && isDeviceSetupSupported(model), + [ + selectDeviceModel, + (state: NativeDeviceRootState) => + selectIsFeatureFlagEnabled(state, FeatureFlag.IsDeviceOnboardingEnabled), + ], + (model, isDeviceOnboardingFeatureFlagEnabled) => + isDeviceOnboardingFeatureFlagEnabled && + G.isNotNullable(model) && + isDeviceSetupSupported(model), );