From be47c37b69b46411009ef20974c1414b5c8b98c7 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Sun, 16 Mar 2025 03:48:49 +0530 Subject: [PATCH 1/3] fix: Refactor completeOnboarding to use a parameter object. Signed-off-by: krishna2323 --- src/libs/actions/IOU.ts | 16 +++++----- src/libs/actions/Report.ts | 31 +++++++++++++------ .../BaseOnboardingAccounting.tsx | 15 ++++----- .../BaseOnboardingEmployees.tsx | 13 +++----- .../BaseOnboardingPersonalDetails.tsx | 10 +++--- .../BaseOnboardingWorkspaces.tsx | 12 +++---- 6 files changed, 50 insertions(+), 47 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 2fbd6ecdde93..8aae899d3ae1 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -9014,18 +9014,16 @@ function completePaymentOnboarding(paymentSelected: ValueOf, full = true) { if (chatReport.policyID && shouldRestrictUserBillableActions(chatReport.policyID)) { diff --git a/src/libs/actions/Report.ts b/src/libs/actions/Report.ts index 660926815b25..d69faeb310f5 100644 --- a/src/libs/actions/Report.ts +++ b/src/libs/actions/Report.ts @@ -4348,18 +4348,29 @@ function prepareOnboardingOnyxData( return {optimisticData, successData, failureData, guidedSetupData, actorAccountID, selfDMParameters}; } -function completeOnboarding( - engagementChoice: OnboardingPurpose, - data: ValueOf, +function completeOnboarding({ + engagementChoice, + data, firstName = '', lastName = '', - adminsChatReportID?: string, - onboardingPolicyID?: string, - paymentSelected?: string, - companySize?: OnboardingCompanySize, - userReportedIntegration?: OnboardingAccounting, - wasInvited?: boolean, -) { + adminsChatReportID, + onboardingPolicyID, + paymentSelected, + companySize, + userReportedIntegration, + wasInvited, +}: { + engagementChoice: OnboardingPurpose; + data: ValueOf; + firstName?: string; + lastName?: string; + adminsChatReportID?: string; + onboardingPolicyID?: string; + paymentSelected?: string; + companySize?: OnboardingCompanySize; + userReportedIntegration?: OnboardingAccounting; + wasInvited?: boolean; +}) { const onboardingData = prepareOnboardingOnyxData(engagementChoice, data, adminsChatReportID, onboardingPolicyID, userReportedIntegration, wasInvited); if (!onboardingData) { return; diff --git a/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx b/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx index 785f4ca9f539..a5fe1dcfcf8a 100644 --- a/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx +++ b/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx @@ -172,17 +172,14 @@ function BaseOnboardingAccounting({shouldUseNativeStyles}: BaseOnboardingAccount return; } - completeOnboarding( - onboardingPurposeSelected, - CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], - undefined, - undefined, - onboardingAdminsChatReportID ?? undefined, + completeOnboarding({ + engagementChoice: onboardingPurposeSelected, + data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], + adminsChatReportID: onboardingAdminsChatReportID, onboardingPolicyID, - undefined, - onboardingCompanySize, + companySize: onboardingCompanySize, userReportedIntegration, - ); + }); // Avoid creating new WS because onboardingPolicyID is cleared before unmounting InteractionManager.runAfterInteractions(() => { setOnboardingAdminsChatReportID(); diff --git a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx index 79d090debe90..2fdbf0acc9ee 100644 --- a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx +++ b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx @@ -99,16 +99,13 @@ function BaseOnboardingEmployees({shouldUseNativeStyles, route}: BaseOnboardingE // For other company sizes we want to complete onboarding here. // At this point `onboardingPurposeSelected` should always exist as we set it in `BaseOnboardingPurpose`. if (onboardingPurposeSelected) { - completeOnboarding( - onboardingPurposeSelected, - CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], - undefined, - undefined, + completeOnboarding({ + engagementChoice: onboardingPurposeSelected, + data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], adminsChatReportID, onboardingPolicyID, - undefined, - onboardingCompanySize, - ); + companySize: onboardingCompanySize, + }); } if (CONFIG.IS_HYBRID_APP) { diff --git a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx index b2ccadf2da00..f663c037612b 100644 --- a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx +++ b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx @@ -58,14 +58,14 @@ function BaseOnboardingPersonalDetails({currentUserPersonalDetails, shouldUseNat return; } - completeOnboardingReport( - onboardingPurposeSelected, - CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], + completeOnboardingReport({ + engagementChoice: onboardingPurposeSelected, + data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], firstName, lastName, - onboardingAdminsChatReportID ?? undefined, + adminsChatReportID: onboardingAdminsChatReportID, onboardingPolicyID, - ); + }); setOnboardingAdminsChatReportID(); setOnboardingPolicyID(); diff --git a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx index c6d332f075ed..58f7b2b3b517 100644 --- a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx +++ b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx @@ -49,12 +49,12 @@ function BaseOnboardingWorkspaces({shouldUseNativeStyles, route}: BaseOnboarding const handleJoinWorkspace = useCallback( (policyID: string) => { MemberAction.joinAccessiblePolicy(policyID); - Report.completeOnboarding( - CONST.ONBOARDING_CHOICES.LOOKING_AROUND, - CONST.ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.LOOKING_AROUND], - onboardingPersonalDetails?.firstName ?? '', - onboardingPersonalDetails?.lastName ?? '', - ); + Report.completeOnboarding({ + engagementChoice: CONST.ONBOARDING_CHOICES.LOOKING_AROUND, + data: CONST.ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.LOOKING_AROUND], + firstName: onboardingPersonalDetails?.firstName, + lastName: onboardingPersonalDetails?.lastName, + }); Welcome.setOnboardingAdminsChatReportID(); Welcome.setOnboardingPolicyID(policyID); From 3dd6a22c6fec4679078c1fb3e79385fd4f02dda4 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Sun, 16 Mar 2025 03:59:28 +0530 Subject: [PATCH 2/3] fix ESLint. Signed-off-by: krishna2323 --- .../BaseOnboardingWorkspaces.tsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx index 58f7b2b3b517..cff3de7ec276 100644 --- a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx +++ b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx @@ -15,13 +15,13 @@ import useNetwork from '@hooks/useNetwork'; import usePermissions from '@hooks/usePermissions'; import useResponsiveLayout from '@hooks/useResponsiveLayout'; import useThemeStyles from '@hooks/useThemeStyles'; +import {joinAccessiblePolicy} from '@libs/actions/Policy/Member'; +import {completeOnboarding} from '@libs/actions/Report'; +import {setOnboardingAdminsChatReportID, setOnboardingPolicyID} from '@libs/actions/Welcome'; import navigateAfterOnboarding from '@libs/navigateAfterOnboarding'; import Navigation from '@libs/Navigation/Navigation'; -import * as ReportUtils from '@libs/ReportUtils'; -import * as UserUtils from '@libs/UserUtils'; -import * as MemberAction from '@userActions/Policy/Member'; -import * as Report from '@userActions/Report'; -import * as Welcome from '@userActions/Welcome'; +import {getDefaultWorkspaceAvatar} from '@libs/ReportUtils'; +import {isCurrentUserValidated} from '@libs/UserUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; @@ -41,22 +41,22 @@ function BaseOnboardingWorkspaces({shouldUseNativeStyles, route}: BaseOnboarding const [loginList] = useOnyx(ONYXKEYS.LOGIN_LIST); - const isValidated = UserUtils.isCurrentUserValidated(loginList); + const isValidated = isCurrentUserValidated(loginList); const {canUseDefaultRooms} = usePermissions(); const {activeWorkspaceID} = useActiveWorkspace(); const handleJoinWorkspace = useCallback( (policyID: string) => { - MemberAction.joinAccessiblePolicy(policyID); - Report.completeOnboarding({ + joinAccessiblePolicy(policyID); + completeOnboarding({ engagementChoice: CONST.ONBOARDING_CHOICES.LOOKING_AROUND, data: CONST.ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.LOOKING_AROUND], firstName: onboardingPersonalDetails?.firstName, lastName: onboardingPersonalDetails?.lastName, }); - Welcome.setOnboardingAdminsChatReportID(); - Welcome.setOnboardingPolicyID(policyID); + setOnboardingAdminsChatReportID(); + setOnboardingPolicyID(policyID); navigateAfterOnboarding(isSmallScreenWidth, canUseDefaultRooms, policyID, activeWorkspaceID); }, @@ -83,7 +83,7 @@ function BaseOnboardingWorkspaces({shouldUseNativeStyles, route}: BaseOnboarding icons: [ { id: policyInfo.policyID, - source: ReportUtils.getDefaultWorkspaceAvatar(policyInfo.policyName), + source: getDefaultWorkspaceAvatar(policyInfo.policyName), fallbackIcon: Expensicons.FallbackWorkspaceAvatar, name: policyInfo.policyName, type: CONST.ICON_TYPE_WORKSPACE, From f89d8113b897b10843d71b671bbd109fc8f5d971 Mon Sep 17 00:00:00 2001 From: krishna2323 Date: Wed, 26 Mar 2025 06:07:48 +0530 Subject: [PATCH 3/3] update argument for completeOnboarding. Signed-off-by: krishna2323 --- src/libs/actions/IOU.ts | 2 +- src/libs/actions/Report.ts | 16 ++++++++-------- .../BaseOnboardingAccounting.tsx | 2 +- .../BaseOnboardingEmployees.tsx | 2 +- .../BaseOnboardingPersonalDetails.tsx | 2 +- .../BaseOnboardingWorkspaces.tsx | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 1513aa0cbb2d..c8690019fe8a 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -9238,7 +9238,7 @@ function completePaymentOnboarding(paymentSelected: ValueOf, + onboardingMessage: ValueOf, adminsChatReportID?: string, onboardingPolicyID?: string, userReportedIntegration?: OnboardingAccounting, @@ -3848,12 +3848,12 @@ function prepareOnboardingOnyxData( ) { if (engagementChoice === CONST.ONBOARDING_CHOICES.PERSONAL_SPEND) { // eslint-disable-next-line no-param-reassign - data = CONST.CREATE_EXPENSE_ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.PERSONAL_SPEND]; + onboardingMessage = CONST.CREATE_EXPENSE_ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.PERSONAL_SPEND]; } if (engagementChoice === CONST.ONBOARDING_CHOICES.EMPLOYER || engagementChoice === CONST.ONBOARDING_CHOICES.SUBMIT) { // eslint-disable-next-line no-param-reassign - data = CONST.CREATE_EXPENSE_ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.SUBMIT]; + onboardingMessage = CONST.CREATE_EXPENSE_ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.SUBMIT]; } // 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 '+'. @@ -3891,7 +3891,7 @@ function prepareOnboardingOnyxData( const actorAccountID = shouldPostTasksInAdminsRoom ? assignedGuideAccountID : CONST.ACCOUNT_ID.CONCIERGE; // Text message - const textComment = buildOptimisticAddCommentReportAction(data.message, undefined, actorAccountID, 1); + const textComment = buildOptimisticAddCommentReportAction(onboardingMessage.message, undefined, actorAccountID, 1); const textCommentAction: OptimisticAddCommentReportAction = textComment.reportAction; const textMessage: AddCommentOrAttachementParams = { reportID: targetChatReportID, @@ -3910,7 +3910,7 @@ function prepareOnboardingOnyxData( }; let createWorkspaceTaskReportID; - const tasksData = data.tasks + const tasksData = onboardingMessage.tasks .filter((task) => { if (['setupCategories', 'setupTags'].includes(task.type) && userReportedIntegration) { return false; @@ -4378,7 +4378,7 @@ function prepareOnboardingOnyxData( function completeOnboarding({ engagementChoice, - data, + onboardingMessage, firstName = '', lastName = '', adminsChatReportID, @@ -4389,7 +4389,7 @@ function completeOnboarding({ wasInvited, }: { engagementChoice: OnboardingPurpose; - data: ValueOf; + onboardingMessage: ValueOf; firstName?: string; lastName?: string; adminsChatReportID?: string; @@ -4399,7 +4399,7 @@ function completeOnboarding({ userReportedIntegration?: OnboardingAccounting; wasInvited?: boolean; }) { - const onboardingData = prepareOnboardingOnyxData(engagementChoice, data, adminsChatReportID, onboardingPolicyID, userReportedIntegration, wasInvited); + const onboardingData = prepareOnboardingOnyxData(engagementChoice, onboardingMessage, adminsChatReportID, onboardingPolicyID, userReportedIntegration, wasInvited); if (!onboardingData) { return; } diff --git a/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx b/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx index f0805402055d..5987cf773727 100644 --- a/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx +++ b/src/pages/OnboardingAccounting/BaseOnboardingAccounting.tsx @@ -174,7 +174,7 @@ function BaseOnboardingAccounting({shouldUseNativeStyles}: BaseOnboardingAccount completeOnboarding({ engagementChoice: onboardingPurposeSelected, - data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], + onboardingMessage: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], adminsChatReportID: onboardingAdminsChatReportID, onboardingPolicyID, companySize: onboardingCompanySize, diff --git a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx index 2fdbf0acc9ee..d2a8da67da40 100644 --- a/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx +++ b/src/pages/OnboardingEmployees/BaseOnboardingEmployees.tsx @@ -101,7 +101,7 @@ function BaseOnboardingEmployees({shouldUseNativeStyles, route}: BaseOnboardingE if (onboardingPurposeSelected) { completeOnboarding({ engagementChoice: onboardingPurposeSelected, - data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], + onboardingMessage: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], adminsChatReportID, onboardingPolicyID, companySize: onboardingCompanySize, diff --git a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx index f663c037612b..88d65bf76efb 100644 --- a/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx +++ b/src/pages/OnboardingPersonalDetails/BaseOnboardingPersonalDetails.tsx @@ -60,7 +60,7 @@ function BaseOnboardingPersonalDetails({currentUserPersonalDetails, shouldUseNat completeOnboardingReport({ engagementChoice: onboardingPurposeSelected, - data: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], + onboardingMessage: CONST.ONBOARDING_MESSAGES[onboardingPurposeSelected], firstName, lastName, adminsChatReportID: onboardingAdminsChatReportID, diff --git a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx index cff3de7ec276..2137cccf9c86 100644 --- a/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx +++ b/src/pages/OnboardingWorkspaces/BaseOnboardingWorkspaces.tsx @@ -51,7 +51,7 @@ function BaseOnboardingWorkspaces({shouldUseNativeStyles, route}: BaseOnboarding joinAccessiblePolicy(policyID); completeOnboarding({ engagementChoice: CONST.ONBOARDING_CHOICES.LOOKING_AROUND, - data: CONST.ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.LOOKING_AROUND], + onboardingMessage: CONST.ONBOARDING_MESSAGES[CONST.ONBOARDING_CHOICES.LOOKING_AROUND], firstName: onboardingPersonalDetails?.firstName, lastName: onboardingPersonalDetails?.lastName, });