From 0e92dd1b075265e1384bed4c8cfaef6b15c478cb Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Sat, 21 Feb 2026 21:19:02 +0530 Subject: [PATCH 1/6] Part 3 - Update to accept betas. Signed-off-by: krishna2323 --- src/libs/ReportUtils.ts | 4 +++- src/libs/actions/IOU/index.ts | 7 +++++-- src/libs/actions/Report/index.ts | 3 +++ .../BaseOnboardingInterestedFeatures.tsx | 3 +++ .../BaseOnboardingPersonalDetails.tsx | 2 ++ src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx | 2 ++ .../BaseOnboardingWorkspaceInvite.tsx | 2 ++ .../BaseOnboardingWorkspaceOptional.tsx | 3 +++ .../OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx | 4 ++++ 9 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 3741dc7f8a461..0d234da1c38dd 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -11371,6 +11371,7 @@ type PrepareOnboardingOnyxDataParams = { isInvitedAccountant?: boolean; onboardingPurposeSelected?: OnboardingPurpose; isSelfTourViewed?: boolean; + betas?: OnyxEntry; }; function prepareOnboardingOnyxData({ @@ -11386,6 +11387,7 @@ function prepareOnboardingOnyxData({ isInvitedAccountant, onboardingPurposeSelected, isSelfTourViewed, + betas, }: PrepareOnboardingOnyxDataParams) { if (engagementChoice === CONST.ONBOARDING_CHOICES.PERSONAL_SPEND) { // eslint-disable-next-line no-param-reassign @@ -11400,7 +11402,7 @@ function prepareOnboardingOnyxData({ // Guides are assigned and tasks are posted in the #admins room for the MANAGE_TEAM and TRACK_WORKSPACE onboarding actions, except for emails that have a '+'. const shouldPostTasksInAdminsRoom = isPostingTasksInAdminsRoom(engagementChoice); // When posting to admins room and the user is in the suggestedFollowups beta, we skip tasks in favor of backend-generated followups. - const shouldUseFollowupsInsteadOfTasks = shouldPostTasksInAdminsRoom && Permissions.isBetaEnabled(CONST.BETAS.SUGGESTED_FOLLOWUPS, allBetas, betaConfiguration); + const shouldUseFollowupsInsteadOfTasks = shouldPostTasksInAdminsRoom && Permissions.isBetaEnabled(CONST.BETAS.SUGGESTED_FOLLOWUPS, betas ?? allBetas, betaConfiguration); const adminsChatReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${adminsChatReportID}`]; const targetChatReport = shouldPostTasksInAdminsRoom ? (adminsChatReport ?? {reportID: adminsChatReportID, policyID: onboardingPolicyID}) diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index d37630cc1b57b..483f2764481fd 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -6730,6 +6730,7 @@ function requestMoney(requestMoneyInformation: RequestMoneyInformation): {iouRep onboardingMessage: getOnboardingMessages().onboardingMessages[CONST.ONBOARDING_CHOICES.TEST_DRIVE_RECEIVER], companySize: undefined, isSelfTourViewed, + betas, })?.guidedSetupData : undefined; @@ -11895,6 +11896,7 @@ function completePaymentOnboarding( introSelected: OnyxEntry, adminsChatReportID?: string, onboardingPolicyID?: string, + betas?: OnyxEntry, ) { const isInviteOnboardingComplete = introSelected?.isInviteOnboardingComplete ?? false; @@ -11927,6 +11929,7 @@ function completePaymentOnboarding( shouldSkipTestDriveModal: true, companySize: introSelected?.companySize as OnboardingCompanySize, introSelected, + betas, }); } @@ -11938,7 +11941,7 @@ function payMoneyRequest(params: PayMoneyRequestFunctionParams) { } const paymentSelected = paymentType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected); + completePaymentOnboarding(paymentSelected, introSelected, undefined, undefined, betas); const recipient = {accountID: iouReport?.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID}; const {params: payMoneyRequestParams, onyxData} = getPayMoneyRequestParams({ @@ -12013,7 +12016,7 @@ function payInvoice({ }); const paymentSelected = paymentMethodType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected); + completePaymentOnboarding(paymentSelected, introSelected, undefined, undefined, betas); let params: PayInvoiceParams = { reportID: invoiceReport?.reportID, diff --git a/src/libs/actions/Report/index.ts b/src/libs/actions/Report/index.ts index d57d5bb495419..8e8c501e98a1b 100644 --- a/src/libs/actions/Report/index.ts +++ b/src/libs/actions/Report/index.ts @@ -4498,6 +4498,7 @@ type CompleteOnboardingProps = { onboardingPurposeSelected?: OnboardingPurpose; shouldWaitForRHPVariantInitialization?: boolean; introSelected: OnyxEntry; + betas?: OnyxEntry; }; async function completeOnboarding({ @@ -4517,6 +4518,7 @@ async function completeOnboarding({ onboardingPurposeSelected, shouldWaitForRHPVariantInitialization = false, introSelected, + betas, }: CompleteOnboardingProps) { const onboardingData = prepareOnboardingOnyxData({ introSelected, @@ -4530,6 +4532,7 @@ async function completeOnboarding({ selectedInterestedFeatures, isInvitedAccountant, onboardingPurposeSelected, + betas, }); if (!onboardingData) { return; diff --git a/src/pages/OnboardingInterestedFeatures/BaseOnboardingInterestedFeatures.tsx b/src/pages/OnboardingInterestedFeatures/BaseOnboardingInterestedFeatures.tsx index 9df0d9ac60dd6..102291dedf0ac 100644 --- a/src/pages/OnboardingInterestedFeatures/BaseOnboardingInterestedFeatures.tsx +++ b/src/pages/OnboardingInterestedFeatures/BaseOnboardingInterestedFeatures.tsx @@ -51,6 +51,7 @@ function BaseOnboardingInterestedFeatures({shouldUseNativeStyles}: BaseOnboardin const [onboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true}); const [userReportedIntegration] = useOnyx(ONYXKEYS.ONBOARDING_USER_REPORTED_INTEGRATION, {canBeMissing: true}); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const [activePolicyID] = useOnyx(ONYXKEYS.NVP_ACTIVE_POLICY_ID, {canBeMissing: true}); const {isBetaEnabled} = usePermissions(); const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: false}); @@ -220,6 +221,7 @@ function BaseOnboardingInterestedFeatures({shouldUseNativeStyles}: BaseOnboardin shouldSkipTestDriveModal: !!policyID && !adminsChatReportID, shouldWaitForRHPVariantInitialization: isSidePanelReportSupported, introSelected, + betas, }); // Avoid creating new WS because onboardingPolicyID is cleared before unmounting @@ -268,6 +270,7 @@ function BaseOnboardingInterestedFeatures({shouldUseNativeStyles}: BaseOnboardin currentUserPersonalDetails.email, introSelected, conciergeReportID, + betas, ]); // Create items for enabled features diff --git a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx index 3509c47206f8d..5529328085fe6 100644 --- a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx +++ b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx @@ -40,6 +40,7 @@ function BaseOnboardingPersonalDetails({currentUserPersonalDetails, shouldUseNat const [onboardingAdminsChatReportID] = useOnyx(ONYXKEYS.ONBOARDING_ADMINS_CHAT_REPORT_ID, {canBeMissing: true}); const [account] = useOnyx(ONYXKEYS.ACCOUNT, {canBeMissing: true}); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const archivedReportsIdSet = useArchivedReportsIdSet(); const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST, {canBeMissing: true}); const [onboardingValues] = useOnyx(ONYXKEYS.NVP_ONBOARDING, {canBeMissing: true}); @@ -82,6 +83,7 @@ function BaseOnboardingPersonalDetails({currentUserPersonalDetails, shouldUseNat onboardingPolicyID, shouldSkipTestDriveModal: !!onboardingPolicyID && !mergedAccountConciergeReportID, introSelected, + betas, }); setOnboardingAdminsChatReportID(); diff --git a/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx b/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx index b1d74d6e94c8c..af6600b4a3004 100644 --- a/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx +++ b/src/pages/OnboardingPurpose/BaseOnboardingPurpose.tsx @@ -67,6 +67,7 @@ function BaseOnboardingPurpose({shouldUseNativeStyles, shouldEnableMaxHeight, ro const [personalDetailsForm] = useOnyx(ONYXKEYS.FORMS.ONBOARDING_PERSONAL_DETAILS_FORM, {canBeMissing: true}); const [onboardingCompanySize] = useOnyx(ONYXKEYS.ONBOARDING_COMPANY_SIZE, {canBeMissing: true}); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const paddingHorizontal = onboardingIsMediumOrLargerScreenWidth ? styles.ph8 : styles.ph5; const [customChoices = getEmptyArray()] = useOnyx(ONYXKEYS.ONBOARDING_CUSTOM_CHOICES, {canBeMissing: true}); @@ -108,6 +109,7 @@ function BaseOnboardingPurpose({shouldUseNativeStyles, shouldEnableMaxHeight, ro onboardingPolicyID, companySize: onboardingCompanySize, introSelected, + betas, }); return; diff --git a/src/pages/OnboardingWorkspaceInvite/BaseOnboardingWorkspaceInvite.tsx b/src/pages/OnboardingWorkspaceInvite/BaseOnboardingWorkspaceInvite.tsx index cabb804a8400a..435c0b538222e 100644 --- a/src/pages/OnboardingWorkspaceInvite/BaseOnboardingWorkspaceInvite.tsx +++ b/src/pages/OnboardingWorkspaceInvite/BaseOnboardingWorkspaceInvite.tsx @@ -45,6 +45,7 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo const [onboardingAdminsChatReportID] = useOnyx(ONYXKEYS.ONBOARDING_ADMINS_CHAT_REPORT_ID, {canBeMissing: true}); const [onboardingPurposeSelected] = useOnyx(ONYXKEYS.ONBOARDING_PURPOSE_SELECTED, {canBeMissing: true}); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const policy = usePolicy(onboardingPolicyID); const {onboardingMessages} = useOnboardingMessages(); // We need to use isSmallScreenWidth, see navigateAfterOnboarding function comment @@ -128,6 +129,7 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo isInvitedAccountant, onboardingPurposeSelected, introSelected, + betas, }); setOnboardingAdminsChatReportID(); diff --git a/src/pages/OnboardingWorkspaceOptional/BaseOnboardingWorkspaceOptional.tsx b/src/pages/OnboardingWorkspaceOptional/BaseOnboardingWorkspaceOptional.tsx index 89651adec04f3..5a6d0ffc8ac10 100644 --- a/src/pages/OnboardingWorkspaceOptional/BaseOnboardingWorkspaceOptional.tsx +++ b/src/pages/OnboardingWorkspaceOptional/BaseOnboardingWorkspaceOptional.tsx @@ -43,6 +43,7 @@ function BaseOnboardingWorkspaceOptional({shouldUseNativeStyles}: BaseOnboarding const archivedReportsIdSet = useArchivedReportsIdSet(); const {onboardingMessages} = useOnboardingMessages(); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const {isRestrictedPolicyCreation} = usePreferredPolicy(); // When we merge public email with work email, we now want to navigate to the // concierge chat report of the new work email and not the last accessed report. @@ -90,6 +91,7 @@ function BaseOnboardingWorkspaceOptional({shouldUseNativeStyles}: BaseOnboarding onboardingPolicyID, shouldSkipTestDriveModal: (!!onboardingPolicyID && !onboardingAdminsChatReportID) || onboardingPurposeSelected === CONST.ONBOARDING_CHOICES.PERSONAL_SPEND, introSelected, + betas, }); setOnboardingAdminsChatReportID(); @@ -117,6 +119,7 @@ function BaseOnboardingWorkspaceOptional({shouldUseNativeStyles}: BaseOnboarding mergedAccountConciergeReportID, introSelected, conciergeChatReportID, + betas, ]); return ( diff --git a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx index 8cfb13d01e554..8e2934c5f5830 100644 --- a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx +++ b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx @@ -51,6 +51,7 @@ function BaseOnboardingWorkspaces({route, shouldUseNativeStyles}: BaseOnboarding const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST, {canBeMissing: true}); const [session] = useOnyx(ONYXKEYS.SESSION, {canBeMissing: true}); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED, {canBeMissing: true}); + const [betas] = useOnyx(ONYXKEYS.BETAS, {canBeMissing: true}); const archivedReportsIdSet = useArchivedReportsIdSet(); const isValidated = isCurrentUserValidated(loginList, session?.email); @@ -77,6 +78,7 @@ function BaseOnboardingWorkspaces({route, shouldUseNativeStyles}: BaseOnboarding shouldSkipTestDriveModal: !!(policy.automaticJoiningEnabled ? policy.policyID : undefined), companySize: onboardingCompanySize, introSelected, + betas, }); setOnboardingAdminsChatReportID(); setOnboardingPolicyID(policy.policyID); @@ -100,6 +102,8 @@ function BaseOnboardingWorkspaces({route, shouldUseNativeStyles}: BaseOnboarding onboardingCompanySize, archivedReportsIdSet, introSelected, + betas, + conciergeReportID, ], ); From a2b43c32e1d0bb4ad7023fdc4ea541a72d8195cf Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Sat, 21 Feb 2026 21:30:16 +0530 Subject: [PATCH 2/6] minor fix. Signed-off-by: krishna2323 --- .../OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx index 5529328085fe6..91ebd9f52a70b 100644 --- a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx +++ b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx @@ -110,6 +110,7 @@ function BaseOnboardingPersonalDetails({currentUserPersonalDetails, shouldUseNat mergedAccountConciergeReportID, conciergeChatReportID, introSelected, + betas, ], ); From bfda979443818c19db577e7fb78031877a5ed487 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Wed, 25 Feb 2026 12:38:06 +0530 Subject: [PATCH 3/6] minor fix. Signed-off-by: krishna2323 --- src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx index 009c536c862fc..968ec8fc4c99b 100644 --- a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx +++ b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx @@ -87,7 +87,6 @@ function BaseOnboardingWorkspaces({route, shouldUseNativeStyles}: BaseOnboarding isBetaEnabled(CONST.BETAS.DEFAULT_ROOMS), conciergeReportID, archivedReportsIdSet, - betas, policy.automaticJoiningEnabled ? policy.policyID : undefined, undefined, false, From a4ec46d32d47ce10d6bc68255d28f2717e0b6525 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Wed, 25 Feb 2026 13:10:16 +0530 Subject: [PATCH 4/6] update external callers. Signed-off-by: krishna2323 --- src/components/AddPaymentMethodMenu.tsx | 7 ++++--- src/components/KYCWall/BaseKYCWall.tsx | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/AddPaymentMethodMenu.tsx b/src/components/AddPaymentMethodMenu.tsx index c4b60bd1eaf55..65df5b9978dc3 100644 --- a/src/components/AddPaymentMethodMenu.tsx +++ b/src/components/AddPaymentMethodMenu.tsx @@ -62,6 +62,7 @@ function AddPaymentMethodMenu({ const [restoreFocusType, setRestoreFocusType] = useState(); const [session] = useOnyx(ONYXKEYS.SESSION); const [introSelected, introSelectedStatus] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED); + const [betas] = useOnyx(ONYXKEYS.BETAS); // Users can choose to pay with business bank account in case of Expense reports or in case of P2P IOU report // which then starts a bottom up flow and creates a Collect workspace where the payer is an admin and payee is an employee. @@ -78,9 +79,9 @@ function AddPaymentMethodMenu({ return; } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, undefined, undefined, betas); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); - }, [introSelected, introSelectedStatus, introSelectedStatus.status, isPersonalOnlyOption, isVisible, onItemSelected]); + }, [betas, introSelected, introSelectedStatus, introSelectedStatus.status, isPersonalOnlyOption, isVisible, onItemSelected]); if (isPersonalOnlyOption) { return null; @@ -107,7 +108,7 @@ function AddPaymentMethodMenu({ text: translate('common.personalBankAccount'), icon: icons.Bank, onSelected: () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, undefined, undefined, betas); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); }, }, diff --git a/src/components/KYCWall/BaseKYCWall.tsx b/src/components/KYCWall/BaseKYCWall.tsx index c7440389198fc..aa4f6097b7740 100644 --- a/src/components/KYCWall/BaseKYCWall.tsx +++ b/src/components/KYCWall/BaseKYCWall.tsx @@ -62,6 +62,7 @@ function KYCWall({ const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${chatReportID}`); const [policies] = useOnyx(ONYXKEYS.COLLECTION.POLICY); const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED); + const [betas] = useOnyx(ONYXKEYS.BETAS); const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT); const {formatPhoneNumber} = useLocalize(); @@ -167,7 +168,7 @@ function KYCWall({ if (policyID && iouReport?.policyID) { savePreferredPaymentMethod(iouReport.policyID, policyID, CONST.LAST_PAYMENT_METHOD.IOU, lastPaymentMethod?.[iouReport?.policyID]); } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, adminsChatReportID, policyID); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, adminsChatReportID, policyID, betas); if (workspaceChatReportID) { Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(workspaceChatReportID, reportPreviewReportActionID)); } @@ -212,6 +213,7 @@ function KYCWall({ introSelected, formatPhoneNumber, lastPaymentMethod, + betas, ], ); From 9f21ef60e4e37fdda92660ee86e98df3d11cfd00 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Fri, 27 Feb 2026 03:14:13 +0530 Subject: [PATCH 5/6] make betas param required. Signed-off-by: krishna2323 --- src/components/AddPaymentMethodMenu.tsx | 4 +-- src/components/KYCWall/BaseKYCWall.tsx | 2 +- src/libs/actions/IOU/index.ts | 6 ++-- src/libs/actions/Report/index.ts | 2 +- tests/actions/IOUTest.ts | 46 ++++++++++++++++--------- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/components/AddPaymentMethodMenu.tsx b/src/components/AddPaymentMethodMenu.tsx index 65df5b9978dc3..f9479fff03b57 100644 --- a/src/components/AddPaymentMethodMenu.tsx +++ b/src/components/AddPaymentMethodMenu.tsx @@ -79,7 +79,7 @@ function AddPaymentMethodMenu({ return; } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, undefined, undefined, betas); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, betas); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); }, [betas, introSelected, introSelectedStatus, introSelectedStatus.status, isPersonalOnlyOption, isVisible, onItemSelected]); @@ -108,7 +108,7 @@ function AddPaymentMethodMenu({ text: translate('common.personalBankAccount'), icon: icons.Bank, onSelected: () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, undefined, undefined, betas); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, betas); onItemSelected(CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT); }, }, diff --git a/src/components/KYCWall/BaseKYCWall.tsx b/src/components/KYCWall/BaseKYCWall.tsx index aa4f6097b7740..690ebaaa3e6cc 100644 --- a/src/components/KYCWall/BaseKYCWall.tsx +++ b/src/components/KYCWall/BaseKYCWall.tsx @@ -168,7 +168,7 @@ function KYCWall({ if (policyID && iouReport?.policyID) { savePreferredPaymentMethod(iouReport.policyID, policyID, CONST.LAST_PAYMENT_METHOD.IOU, lastPaymentMethod?.[iouReport?.policyID]); } - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, adminsChatReportID, policyID, betas); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, betas, adminsChatReportID, policyID); if (workspaceChatReportID) { Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(workspaceChatReportID, reportPreviewReportActionID)); } diff --git a/src/libs/actions/IOU/index.ts b/src/libs/actions/IOU/index.ts index 4f6f03174643f..97bc2f39d2331 100644 --- a/src/libs/actions/IOU/index.ts +++ b/src/libs/actions/IOU/index.ts @@ -11921,9 +11921,9 @@ function cancelPayment( function completePaymentOnboarding( paymentSelected: ValueOf, introSelected: OnyxEntry, + betas: OnyxEntry, adminsChatReportID?: string, onboardingPolicyID?: string, - betas?: OnyxEntry, ) { const isInviteOnboardingComplete = introSelected?.isInviteOnboardingComplete ?? false; @@ -11968,7 +11968,7 @@ function payMoneyRequest(params: PayMoneyRequestFunctionParams) { } const paymentSelected = paymentType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected, undefined, undefined, betas); + completePaymentOnboarding(paymentSelected, introSelected, betas); const recipient = {accountID: iouReport?.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID}; const {params: payMoneyRequestParams, onyxData} = getPayMoneyRequestParams({ @@ -12043,7 +12043,7 @@ function payInvoice({ }); const paymentSelected = paymentMethodType === CONST.IOU.PAYMENT_TYPE.VBBA ? CONST.IOU.PAYMENT_SELECTED.BBA : CONST.IOU.PAYMENT_SELECTED.PBA; - completePaymentOnboarding(paymentSelected, introSelected, undefined, undefined, betas); + completePaymentOnboarding(paymentSelected, introSelected, betas); let params: PayInvoiceParams = { reportID: invoiceReport?.reportID, diff --git a/src/libs/actions/Report/index.ts b/src/libs/actions/Report/index.ts index 7716cbb105e02..2483f99940dc2 100644 --- a/src/libs/actions/Report/index.ts +++ b/src/libs/actions/Report/index.ts @@ -4499,7 +4499,7 @@ type CompleteOnboardingProps = { onboardingPurposeSelected?: OnboardingPurpose; shouldWaitForRHPVariantInitialization?: boolean; introSelected: OnyxEntry; - betas?: OnyxEntry; + betas: OnyxEntry; }; async function completeOnboarding({ diff --git a/tests/actions/IOUTest.ts b/tests/actions/IOUTest.ts index 92a3c04f51cc5..fc9d4c5ea102f 100644 --- a/tests/actions/IOUTest.ts +++ b/tests/actions/IOUTest.ts @@ -14612,30 +14612,42 @@ describe('actions/IOU', () => { }); it('should not call completeOnboarding when introSelected is undefined', () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, undefined); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, undefined, [CONST.BETAS.ALL]); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); it('should not call completeOnboarding when isInviteOnboardingComplete is true', () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, { - choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, - inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, - isInviteOnboardingComplete: true, - }); + completePaymentOnboarding( + CONST.PAYMENT_SELECTED.BBA, + { + choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, + inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, + isInviteOnboardingComplete: true, + }, + [CONST.BETAS.ALL], + ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); it('should not call completeOnboarding when choice is missing', () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, { - inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, - }); + completePaymentOnboarding( + CONST.PAYMENT_SELECTED.BBA, + { + inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, + }, + [CONST.BETAS.ALL], + ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); it('should not call completeOnboarding when inviteType is missing', () => { - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, { - choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, - }); + completePaymentOnboarding( + CONST.PAYMENT_SELECTED.BBA, + { + choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, + }, + [CONST.BETAS.ALL], + ); expect(completeOnboardingSpy).not.toHaveBeenCalled(); }); @@ -14645,7 +14657,7 @@ describe('actions/IOU', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, companySize: CONST.ONBOARDING_COMPANY_SIZE.MICRO, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, [CONST.BETAS.ALL]); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -14665,7 +14677,7 @@ describe('actions/IOU', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.INVOICE, companySize: CONST.ONBOARDING_COMPANY_SIZE.SMALL, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, [CONST.BETAS.ALL]); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -14684,7 +14696,7 @@ describe('actions/IOU', () => { choice: CONST.ONBOARDING_CHOICES.MANAGE_TEAM, inviteType: CONST.ONBOARDING_INVITE_TYPES.INVOICE, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.BBA, introSelected, [CONST.BETAS.ALL]); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -14699,7 +14711,7 @@ describe('actions/IOU', () => { choice: CONST.ONBOARDING_CHOICES.SUBMIT, inviteType: CONST.ONBOARDING_INVITE_TYPES.IOU, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, [CONST.BETAS.ALL]); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ @@ -14715,7 +14727,7 @@ describe('actions/IOU', () => { inviteType: CONST.ONBOARDING_INVITE_TYPES.CHAT, companySize: CONST.ONBOARDING_COMPANY_SIZE.MEDIUM, }; - completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, 'adminsChatReport123', 'policyID456'); + completePaymentOnboarding(CONST.PAYMENT_SELECTED.PBA, introSelected, [CONST.BETAS.ALL], 'adminsChatReport123', 'policyID456'); expect(completeOnboardingSpy).toHaveBeenCalledWith( expect.objectContaining({ From 550d4f8bb2de771e7f5176becde4b421b93cc4e8 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Fri, 27 Feb 2026 03:23:33 +0530 Subject: [PATCH 6/6] fix tests. Signed-off-by: krishna2323 --- tests/actions/ReportTest.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/actions/ReportTest.ts b/tests/actions/ReportTest.ts index 3a6edbf75ecde..67e701f6a799c 100644 --- a/tests/actions/ReportTest.ts +++ b/tests/actions/ReportTest.ts @@ -2341,6 +2341,7 @@ describe('actions/Report', () => { companySize: CONST.ONBOARDING_COMPANY_SIZE.MICRO, userReportedIntegration: null, introSelected: {choice: engagementChoice}, + betas: [CONST.BETAS.ALL], }); await waitForBatchedUpdates(); @@ -3521,6 +3522,7 @@ describe('actions/Report', () => { companySize: CONST.ONBOARDING_COMPANY_SIZE.MICRO, userReportedIntegration: null, introSelected: {choice: engagementChoice}, + betas: [CONST.BETAS.ALL], }); await waitForBatchedUpdates();