From 9c409e0f946fac5afb1123056044960aee9cb053 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Tue, 11 Feb 2025 14:19:11 +0700 Subject: [PATCH 1/2] fix create expense flow regression --- src/ROUTES.ts | 2 +- .../MoneyRequestConfirmationList.tsx | 28 ++++++------------- src/libs/OptionsListUtils.ts | 2 ++ .../request/step/IOURequestStepDistance.tsx | 3 ++ 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 61f2054c57e3..ca4f2ac30396 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -692,7 +692,7 @@ const ROUTES = { }, MONEY_REQUEST_STEP_PARTICIPANTS: { route: ':action/:iouType/participants/:transactionID/:reportID', - getRoute: (iouType: IOUType, transactionID: string | undefined, reportID: string, backTo = '', action: IOUAction = 'create') => + getRoute: (iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '', action: IOUAction = 'create') => getUrlWithBackToParam(`${action as string}/${iouType as string}/participants/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_SPLIT_PAYER: { diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 56d0b2e03772..8f196bf480e7 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -33,7 +33,6 @@ import {validateAmount} from '@libs/MoneyRequestUtils'; import Navigation from '@libs/Navigation/Navigation'; import {getIOUConfirmationOptionsFromPayeePersonalDetail, hasEnabledOptions} from '@libs/OptionsListUtils'; import {getDistanceRateCustomUnitRate, getTagLists, isTaxTrackingEnabled} from '@libs/PolicyUtils'; -import {isDraftReport, isOptimisticPersonalDetail} from '@libs/ReportUtils'; import type {OptionData} from '@libs/ReportUtils'; import playSound, {SOUNDS} from '@libs/Sound'; import { @@ -230,6 +229,7 @@ function MoneyRequestConfirmationList({ const isTypeTrackExpense = iouType === CONST.IOU.TYPE.TRACK; const isTypeInvoice = iouType === CONST.IOU.TYPE.INVOICE; const isScanRequest = useMemo(() => isScanRequestUtil(transaction), [transaction]); + const isCreateExpenseFlow = transaction?.isFromGlobalCreate && iouType === CONST.IOU.TYPE.CREATE && !isPerDiemRequest; const transactionID = transaction?.transactionID; const customUnitRateID = getRateID(transaction); @@ -339,18 +339,6 @@ function MoneyRequestConfirmationList({ const isCategoryRequired = !!policy?.requiresCategory; - const shouldDisableParticipant = (participant: Participant): boolean => { - if (isDraftReport(participant.reportID)) { - return true; - } - - if (!participant.isInvoiceRoom && !participant.isPolicyExpenseChat && !participant.isSelfDM && isOptimisticPersonalDetail(participant.accountID ?? CONST.DEFAULT_NUMBER_ID)) { - return true; - } - - return false; - }; - useEffect(() => { if (shouldDisplayFieldError && didConfirmSplit) { setFormError('iou.error.genericSmartscanFailureMessage'); @@ -596,7 +584,7 @@ function MoneyRequestConfirmationList({ return { ...participantOption, isSelected: false, - isInteractive: !shouldDisableParticipant(participantOption), + isInteractive: false, rightElement: ( {amount ? convertToDisplayString(amount, iouCurrencyCode) : ''} @@ -613,7 +601,7 @@ function MoneyRequestConfirmationList({ ...participantOption, tabIndex: -1, isSelected: false, - isInteractive: !shouldDisableParticipant(participantOption), + isInteractive: false, rightElement: ( ({ ...participant, isSelected: false, - isInteractive: transaction?.isFromGlobalCreate, - shouldShowRightIcon: transaction?.isFromGlobalCreate, + isInteractive: isCreateExpenseFlow, + shouldShowRightIcon: isCreateExpenseFlow, })); options.push({ title: translate('common.to'), @@ -730,7 +718,7 @@ function MoneyRequestConfirmationList({ } return options; - }, [isTypeSplit, translate, payeePersonalDetails, getSplitSectionHeader, splitParticipants, selectedParticipants, transaction?.isFromGlobalCreate]); + }, [isTypeSplit, translate, payeePersonalDetails, getSplitSectionHeader, splitParticipants, selectedParticipants, isCreateExpenseFlow]); useEffect(() => { if (!isDistanceRequest || (isMovingTransactionFromTrackExpense && !isPolicyExpenseChat) || !transactionID) { @@ -805,11 +793,11 @@ function MoneyRequestConfirmationList({ * Navigate to the participant step */ const navigateToParticipantPage = () => { - if (!transaction?.isFromGlobalCreate) { + if (!isCreateExpenseFlow) { return; } - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID)); + Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, transaction.reportID)); }; /** diff --git a/src/libs/OptionsListUtils.ts b/src/libs/OptionsListUtils.ts index f11ab21a053c..6dbccd59d45b 100644 --- a/src/libs/OptionsListUtils.ts +++ b/src/libs/OptionsListUtils.ts @@ -163,6 +163,7 @@ type PayeePersonalDetails = { login: string; accountID: number; keyForList: string; + isInteractive: boolean; }; type SectionBase = { @@ -1627,6 +1628,7 @@ function getIOUConfirmationOptionsFromPayeePersonalDetail(personalDetail: OnyxEn login: personalDetail?.login ?? '', accountID: personalDetail?.accountID ?? CONST.DEFAULT_NUMBER_ID, keyForList: String(personalDetail?.accountID ?? CONST.DEFAULT_NUMBER_ID), + isInteractive: false, }; } diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx index 1156a4ebee91..2ff6258842c3 100644 --- a/src/pages/iou/request/step/IOURequestStepDistance.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx @@ -24,6 +24,7 @@ import { createDistanceRequest, getIOURequestPolicyID, resetSplitShares, + setCustomUnitRateID, setMoneyRequestAmount, setMoneyRequestMerchant, setMoneyRequestParticipantsFromReport, @@ -379,6 +380,8 @@ function IOURequestStepDistance({ if (iouType === CONST.IOU.TYPE.CREATE && isPaidGroupPolicy(activePolicy) && activePolicy?.isPolicyExpenseChatEnabled) { const activePolicyExpenseChat = getPolicyExpenseChat(currentUserPersonalDetails.accountID, activePolicy?.id); setMoneyRequestParticipantsFromReport(transactionID, activePolicyExpenseChat); + const rateID = DistanceRequestUtils.getCustomUnitRateID(activePolicyExpenseChat?.reportID); + setCustomUnitRateID(transactionID, rateID); Navigation.navigate( ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute( CONST.IOU.ACTION.CREATE, From 3ab70e70aa08427d4507939a217b7449829961a4 Mon Sep 17 00:00:00 2001 From: nkdengineer Date: Tue, 11 Feb 2025 17:59:29 +0700 Subject: [PATCH 2/2] fix bug global create --- src/components/MoneyRequestConfirmationList.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 8f196bf480e7..47cbca0d2f08 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -229,7 +229,7 @@ function MoneyRequestConfirmationList({ const isTypeTrackExpense = iouType === CONST.IOU.TYPE.TRACK; const isTypeInvoice = iouType === CONST.IOU.TYPE.INVOICE; const isScanRequest = useMemo(() => isScanRequestUtil(transaction), [transaction]); - const isCreateExpenseFlow = transaction?.isFromGlobalCreate && iouType === CONST.IOU.TYPE.CREATE && !isPerDiemRequest; + const isCreateExpenseFlow = transaction?.isFromGlobalCreate && !isPerDiemRequest; const transactionID = transaction?.transactionID; const customUnitRateID = getRateID(transaction); @@ -797,7 +797,7 @@ function MoneyRequestConfirmationList({ return; } - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, transaction.reportID)); + Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.CREATE, transactionID, transaction.reportID)); }; /**