From 11f9a38966bc80f840f9d693de06b2ab1d6495ab Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Thu, 7 Nov 2024 12:43:47 +0100 Subject: [PATCH 1/3] Check for empty object for the onboarding flow too --- src/libs/actions/Welcome/index.ts | 3 ++- src/libs/onboardingSelectors.ts | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/libs/actions/Welcome/index.ts b/src/libs/actions/Welcome/index.ts index 19a570ab610f..eb9953a15504 100644 --- a/src/libs/actions/Welcome/index.ts +++ b/src/libs/actions/Welcome/index.ts @@ -9,6 +9,7 @@ import ONYXKEYS from '@src/ONYXKEYS'; import type Onboarding from '@src/types/onyx/Onboarding'; import type TryNewDot from '@src/types/onyx/TryNewDot'; import * as OnboardingFlow from './OnboardingFlow'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; type OnboardingData = Onboarding | [] | undefined; @@ -41,7 +42,7 @@ function onServerDataReady(): Promise { let isOnboardingInProgress = false; function isOnboardingFlowCompleted({onCompleted, onNotCompleted, onCanceled}: HasCompletedOnboardingFlowProps) { isOnboardingFlowStatusKnownPromise.then(() => { - if (Array.isArray(onboarding) || onboarding?.hasCompletedGuidedSetupFlow === undefined) { + if (Array.isArray(onboarding) || isEmptyObject(onboarding) || onboarding?.hasCompletedGuidedSetupFlow === undefined) { onCanceled?.(); return; } diff --git a/src/libs/onboardingSelectors.ts b/src/libs/onboardingSelectors.ts index c1e7d0ed0778..bdbb3ff142f4 100644 --- a/src/libs/onboardingSelectors.ts +++ b/src/libs/onboardingSelectors.ts @@ -1,5 +1,6 @@ import type {OnyxValue} from 'react-native-onyx'; import type ONYXKEYS from '@src/ONYXKEYS'; +import {isEmptyObject} from '@src/types/utils/EmptyObject'; /** * Selector to get the value of hasCompletedGuidedSetupFlow from the Onyx store @@ -9,8 +10,8 @@ import type ONYXKEYS from '@src/ONYXKEYS'; * `false` means the user has not completed the NewDot onboarding flow */ function hasCompletedGuidedSetupFlowSelector(onboarding: OnyxValue): boolean | undefined { - // Onboarding is an array for old accounts and accounts created from OldDot - if (Array.isArray(onboarding)) { + // Onboarding is an array or an empty object for old accounts and accounts created from OldDot + if (Array.isArray(onboarding) || isEmptyObject(onboarding)) { return true; } @@ -43,11 +44,11 @@ function hasCompletedHybridAppOnboardingFlowSelector(tryNewDotData: OnyxValue): boolean | undefined { - if (Array.isArray(onboarding)) { + if (Array.isArray(onboarding) || isEmptyObject(onboarding)) { return false; } - return onboarding?.selfTourViewed; + return !!onboarding?.selfTourViewed; } export {hasCompletedGuidedSetupFlowSelector, hasCompletedHybridAppOnboardingFlowSelector, hasSeenTourSelector}; From 4554b5664560f5f785a1158226dc893cd4a0c7bb Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Thu, 7 Nov 2024 12:48:38 +0100 Subject: [PATCH 2/3] Prettier --- src/libs/actions/Welcome/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Welcome/index.ts b/src/libs/actions/Welcome/index.ts index eb9953a15504..5a92ff5e5435 100644 --- a/src/libs/actions/Welcome/index.ts +++ b/src/libs/actions/Welcome/index.ts @@ -8,8 +8,8 @@ import type {OnboardingCompanySizeType, OnboardingPurposeType} from '@src/CONST' import ONYXKEYS from '@src/ONYXKEYS'; import type Onboarding from '@src/types/onyx/Onboarding'; import type TryNewDot from '@src/types/onyx/TryNewDot'; -import * as OnboardingFlow from './OnboardingFlow'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; +import * as OnboardingFlow from './OnboardingFlow'; type OnboardingData = Onboarding | [] | undefined; From d59910b0260c53f565e4076d8bc290e144a7cb82 Mon Sep 17 00:00:00 2001 From: Vit Horacek Date: Thu, 7 Nov 2024 13:26:41 +0100 Subject: [PATCH 3/3] Update one more place --- src/libs/ReportUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index a62716975c01..fa91ca1235cf 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -8244,8 +8244,8 @@ function shouldShowMerchantColumn(transactions: Transaction[]) { * only use the Concierge chat. */ function isChatUsedForOnboarding(optionOrReport: OnyxEntry | OptionData): boolean { - // onboarding can be an array for old accounts and accounts created from olddot - if (onboarding && !Array.isArray(onboarding) && onboarding.chatReportID) { + // onboarding can be an array or an empty object for old accounts and accounts created from olddot + if (onboarding && !Array.isArray(onboarding) && !isEmptyObject(onboarding) && onboarding.chatReportID) { return onboarding.chatReportID === optionOrReport?.reportID; }