From e9ad784d354df53145b40cada9e6afbd952ed06e Mon Sep 17 00:00:00 2001 From: John Lee Date: Tue, 1 Oct 2024 16:42:22 -0400 Subject: [PATCH] Merge pull request #50015 from software-mansion-labs/fix/onboarding-android [CP Staging] Fix that user was able to dismiss the onboarding modal on android (cherry picked from commit 6daf561e69f14689a4fc3cfb169870efa52ceeaa) (CP triggered by jasperhuangg) --- src/hooks/useOnboardingFlow.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/hooks/useOnboardingFlow.ts b/src/hooks/useOnboardingFlow.ts index 4b797d05115..5ccd3bab937 100644 --- a/src/hooks/useOnboardingFlow.ts +++ b/src/hooks/useOnboardingFlow.ts @@ -6,6 +6,7 @@ import {hasCompletedGuidedSetupFlowSelector, hasCompletedHybridAppOnboardingFlow import * as OnboardingFlow from '@userActions/Welcome/OnboardingFlow'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue'; /** * Hook to handle redirection to the onboarding flow based on the user's onboarding status @@ -13,14 +14,18 @@ import ROUTES from '@src/ROUTES'; * Warning: This hook should be used only once in the app */ function useOnboardingFlowRouter() { - const [isOnboardingCompleted] = useOnyx(ONYXKEYS.NVP_ONBOARDING, { + const [isOnboardingCompleted, isOnboardingCompletedMetadata] = useOnyx(ONYXKEYS.NVP_ONBOARDING, { selector: hasCompletedGuidedSetupFlowSelector, }); - const [isHybridAppOnboardingCompleted] = useOnyx(ONYXKEYS.NVP_TRYNEWDOT, { + const [isHybridAppOnboardingCompleted, isHybridAppOnboardingCompletedMetadata] = useOnyx(ONYXKEYS.NVP_TRYNEWDOT, { selector: hasCompletedHybridAppOnboardingFlowSelector, }); useEffect(() => { + if (isLoadingOnyxValue(isOnboardingCompletedMetadata, isHybridAppOnboardingCompletedMetadata)) { + return; + } + if (NativeModules.HybridAppModule) { // When user is transitioning from OldDot to NewDot, we usually show the explanation modal if (isHybridAppOnboardingCompleted === false) { @@ -38,7 +43,7 @@ function useOnboardingFlowRouter() { if (!NativeModules.HybridAppModule && isOnboardingCompleted === false) { OnboardingFlow.startOnboardingFlow(); } - }, [isOnboardingCompleted, isHybridAppOnboardingCompleted]); + }, [isOnboardingCompleted, isHybridAppOnboardingCompleted, isOnboardingCompletedMetadata, isHybridAppOnboardingCompletedMetadata]); return {isOnboardingCompleted, isHybridAppOnboardingCompleted}; }