diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 2c4beee07940..a01c4c3c7f0c 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -2062,6 +2062,7 @@ function isOldDotLegacyAction(action: OldDotReportAction | PartialReportAction): CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_QUICK_BOOKS, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_REQUESTED, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_SETUP, + CONST.REPORT.ACTIONS.TYPE.REIMBURSED, ].some((oldDotActionName) => oldDotActionName === action?.actionName); } @@ -2092,6 +2093,7 @@ function isOldDotReportAction(action: ReportAction | OldDotReportAction) { CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_QUICK_BOOKS, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_REQUESTED, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_SETUP, + CONST.REPORT.ACTIONS.TYPE.REIMBURSED, ].some((oldDotActionName) => oldDotActionName === action.actionName); } @@ -2360,11 +2362,6 @@ function getReportActionMessageFragments(translate: LocalizedTranslate, action: return [{text: message, html: `${message}`, type: 'COMMENT'}]; } - if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REIMBURSED)) { - const message = getReportActionMessageText(action); - return [{text: message, html: `${message}`, type: 'COMMENT'}]; - } - if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RETRACTED)) { const message = translate('iou.retracted'); return [{text: message, html: `${message}`, type: 'COMMENT'}]; diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts index 4554b19656dc..58c7af67f25b 100644 --- a/src/libs/ReportNameUtils.ts +++ b/src/libs/ReportNameUtils.ts @@ -49,6 +49,7 @@ import { getDismissedViolationMessageText, getDynamicExternalWorkflowApproveFailedActionMessage, getDynamicExternalWorkflowSubmitFailedActionMessage, + getExportIntegrationLastMessageText, getForeignCurrencyDefaultTaxUpdateMessage, getForwardsToUpdateMessage, getIntegrationSyncFailedMessage, @@ -105,6 +106,8 @@ import { isMovedAction, isOldDotReportAction, isOriginalReportDeleted, + isReimbursementDeQueuedOrCanceledAction, + isReimbursementQueuedAction, isRejectedAction, isRenamedAction, isReportActionAttachment, @@ -122,6 +125,8 @@ import { getParentReport, getPolicyChangeMessage, getPolicyName, + getReimbursementDeQueuedOrCanceledActionMessage, + getReimbursementQueuedActionMessage, getReportMetadata, getReportOrDraftReport, getTransactionReportName, @@ -411,10 +416,12 @@ function getMoneyRequestReportName({report, policy, invoiceReceiverPolicy}: {rep function computeReportNameBasedOnReportAction( translate: LocalizedTranslate, + formatPhoneNumber: LocaleContextProps['formatPhoneNumber'], parentReportAction: ReportAction | undefined, report: Report | undefined, reportPolicy: Policy | undefined, parentReport: Report | undefined, + personalDetailsList: OnyxEntry, // TODO: Make this required when https://github.com/Expensify/App/issues/66411 is done conciergeReportID?: string, ): string | undefined { @@ -443,9 +450,35 @@ function computeReportNameBasedOnReportAction( if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.HOLD) { return translate('iou.heldExpense'); } + if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { + return getExportIntegrationLastMessageText(translate, parentReportAction); + } if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.UNHOLD) { return translate('iou.unheldExpense'); } + if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTEDTRANSACTION_THREAD) { + return translate('iou.reject.reportActions.rejectedExpense'); + } + if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTED_TRANSACTION_MARKASRESOLVED) { + return translate('iou.reject.reportActions.markedAsResolved'); + } + if (isReimbursementQueuedAction(parentReportAction)) { + return getReimbursementQueuedActionMessage({ + reportAction: parentReportAction, + report: parentReport, + translate, + formatPhoneNumber, + shouldUseShortDisplayName: false, + personalDetails: personalDetailsList, + }); + } + if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED) { + return translate('iou.receiptScanningFailed'); + } + + if (isReimbursementDeQueuedOrCanceledAction(parentReportAction)) { + return getReimbursementDeQueuedOrCanceledActionMessage(translate, parentReportAction, parentReport); + } if (isRejectedAction(parentReportAction)) { return translate('iou.rejectedThisReport'); } @@ -699,6 +732,21 @@ function computeReportNameBasedOnReportAction( return Parser.htmlToText(getSettlementAccountLockedMessage(translate, parentReportAction)); } + if (isOldDotReportAction(parentReportAction)) { + return getMessageOfOldDotReportAction(translate, parentReportAction); + } + + if (isRenamedAction(parentReportAction)) { + return getRenamedAction(translate, parentReportAction, isExpenseReport(parentReport)); + } + + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES)) { + return translate('violations.resolvedDuplicates'); + } + + if (isCardIssuedAction(parentReportAction)) { + return getCardIssuedMessage({reportAction: parentReportAction, translate}); + } if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_CARD_FEED)) { return getAddedCardFeedMessage(translate, parentReportAction); } @@ -759,23 +807,10 @@ function computeChatThreadReportName( return formatReportLastMessageText(formattedName); } - if (!isEmptyObject(parentReportAction) && isOldDotReportAction(parentReportAction)) { - return getMessageOfOldDotReportAction(translate, parentReportAction); - } - - if (isRenamedAction(parentReportAction)) { - const parent = reports?.[`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`]; - return getRenamedAction(translate, parentReportAction, isExpenseReport(parent)); - } - if (parentReportActionMessage?.isDeletedParentAction) { return translate('parentReportAction.deletedMessage'); } - if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES) { - return translate('violations.resolvedDuplicates'); - } - const isAttachment = isReportActionAttachment(!isEmptyObject(parentReportAction) ? parentReportAction : undefined); const reportActionMessage = getReportActionText(parentReportAction).replaceAll(/(\n+|\r\n|\n|\r)/gm, ' '); if (isAttachment && reportActionMessage) { @@ -814,9 +849,6 @@ function computeChatThreadReportName( if (isTripRoom(report) && report?.reportName !== CONST.REPORT.DEFAULT_REPORT_NAME) { return report?.reportName ?? ''; } - if (isCardIssuedAction(parentReportAction)) { - return getCardIssuedMessage({reportAction: parentReportAction, translate}); - } return reportActionMessage; } @@ -845,8 +877,17 @@ function computeReportName({ const parentReport = reports?.[`${ONYXKEYS.COLLECTION.REPORT}${report?.parentReportID}`]; const parentReportAction = isThread(report) ? reportActions?.[`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${report?.parentReportID}`]?.[report.parentReportActionID] : undefined; - // eslint-disable-next-line @typescript-eslint/no-deprecated - const parentReportActionBasedName = computeReportNameBasedOnReportAction(translateLocal, parentReportAction, report, reportPolicy, parentReport, conciergeReportID); + const parentReportActionBasedName = computeReportNameBasedOnReportAction( + // eslint-disable-next-line @typescript-eslint/no-deprecated + translateLocal, + formatPhoneNumberPhoneUtils, + parentReportAction, + report, + reportPolicy, + parentReport, + personalDetailsList, + conciergeReportID, + ); if (parentReportActionBasedName) { return parentReportActionBasedName; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index e3df7b05fffd..143c2da363c5 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -182,28 +182,23 @@ import { formatLastMessageText, getActionableJoinRequestPendingReportAction, getAllReportActions, - getCardIssuedMessage, getCreatedReportForUnapprovedTransactionsMessage, - getExportIntegrationLastMessageText, getIOUActionForTransactionID, getIOUReportIDFromReportActionPreview, getLastVisibleAction, getLastVisibleAction as getLastVisibleActionReportActionsUtils, getLastVisibleMessage as getLastVisibleMessageActionUtils, getLastVisibleMessage as getLastVisibleMessageReportActionsUtils, - getMessageOfOldDotReportAction, getMostRecentActiveDEWApproveFailedAction, getMostRecentActiveDEWSubmitFailedAction, getNumberOfMoneyRequests, getOneTransactionThreadReportAction, getOneTransactionThreadReportID, getOriginalMessage, - getRenamedAction, getReportAction, getReportActionActorAccountID, getReportActionHtml, getReportActionMessage as getReportActionMessageReportUtils, - getReportActionMessageText, getReportActionText, getSortedReportActions, isActionableCardFraudAlert, @@ -211,8 +206,6 @@ import { isActionableTrackExpense, isActionOfType, isApprovedAction, - isApprovedOrSubmittedReportAction, - isCardIssuedAction, isCreatedTaskReportAction, isCurrentActionUnread, isDeletedAction, @@ -224,12 +217,9 @@ import { isModifiedExpenseAction, isMoneyRequestAction, isMovedAction, - isOldDotReportAction, isPendingRemove, isPolicyChangeLogAction, - isReimbursementDeQueuedOrCanceledAction, isReimbursementQueuedAction, - isRenamedAction, isReopenedAction, isReportActionAttachment, isReportActionVisible, @@ -5784,75 +5774,6 @@ function parseReportActionHtmlToText(reportAction: OnyxEntry, repo return textMessage; } -/** - * Get the report action message for a report action. - */ -function getReportActionMessage({ - reportAction, - translate, - formatPhoneNumber, - reportID, - childReportID, - reports, - personalDetails, - conciergeReportID, -}: { - reportAction: OnyxEntry; - translate: LocalizedTranslate; - formatPhoneNumber: LocaleContextProps['formatPhoneNumber']; - reportID?: string; - childReportID?: string; - reports?: Report[]; - personalDetails?: Partial; - conciergeReportID: string | undefined; -}) { - if (isEmptyObject(reportAction)) { - return ''; - } - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.HOLD) { - return translate('iou.heldExpense'); - } - - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION) { - return getExportIntegrationLastMessageText(translate, reportAction); - } - - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.UNHOLD) { - return translate('iou.unheldExpense'); - } - - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTEDTRANSACTION_THREAD) { - return translate('iou.reject.reportActions.rejectedExpense'); - } - - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTED_TRANSACTION_MARKASRESOLVED) { - return translate('iou.reject.reportActions.markedAsResolved'); - } - - if (isApprovedOrSubmittedReportAction(reportAction) || isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.REIMBURSED)) { - return getReportActionMessageText(reportAction); - } - if (isReimbursementQueuedAction(reportAction)) { - return getReimbursementQueuedActionMessage({ - reportAction, - report: getReportOrDraftReport(reportID, reports), - translate, - formatPhoneNumber, - shouldUseShortDisplayName: false, - personalDetails, - }); - } - if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED) { - return translate('iou.receiptScanningFailed'); - } - - if (isReimbursementDeQueuedOrCanceledAction(reportAction)) { - return getReimbursementDeQueuedOrCanceledActionMessage(translate, reportAction, getReportOrDraftReport(reportID, reports)); - } - - return parseReportActionHtmlToText(reportAction, reportID, conciergeReportID, childReportID); -} - /** * Get the title for a report. * @deprecated Moved to src/libs/ReportNameUtils.ts. @@ -5882,8 +5803,17 @@ function getReportName(reportNameInformation: GetReportNameParams): string { const reportPolicy = policy ?? allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${report?.policyID}`]; - // eslint-disable-next-line @typescript-eslint/no-deprecated - const parentReportActionBasedName = computeReportNameBasedOnReportAction(translateLocal, parentReportAction, report, reportPolicy, parentReport, conciergeReportID); + const parentReportActionBasedName = computeReportNameBasedOnReportAction( + // eslint-disable-next-line @typescript-eslint/no-deprecated + translateLocal, + formatPhoneNumberPhoneUtils, + parentReportAction, + report, + reportPolicy, + parentReport, + personalDetails as PersonalDetailsList, + conciergeReportID, + ); if (parentReportActionBasedName) { return parentReportActionBasedName; @@ -5914,38 +5844,13 @@ function getReportName(reportNameInformation: GetReportNameParams): string { return formatReportLastMessageText(formattedName); } - if (!isEmptyObject(parentReportAction) && isOldDotReportAction(parentReportAction)) { - // eslint-disable-next-line @typescript-eslint/no-deprecated - return getMessageOfOldDotReportAction(translateLocal, parentReportAction); - } - - if (isRenamedAction(parentReportAction)) { - // eslint-disable-next-line @typescript-eslint/no-deprecated - return getRenamedAction(translateLocal, parentReportAction, isExpenseReport(getReport(report.parentReportID, allReports))); - } - if (parentReportActionMessage?.isDeletedParentAction) { // eslint-disable-next-line @typescript-eslint/no-deprecated return translateLocal('parentReportAction.deletedMessage'); } - if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES) { - // eslint-disable-next-line @typescript-eslint/no-deprecated - return translateLocal('violations.resolvedDuplicates'); - } - const isAttachment = isReportActionAttachment(!isEmptyObject(parentReportAction) ? parentReportAction : undefined); - const reportActionMessage = getReportActionMessage({ - reportAction: parentReportAction, - // eslint-disable-next-line @typescript-eslint/no-deprecated - translate: translateLocal, - formatPhoneNumber: formatPhoneNumberPhoneUtils, - reportID: report?.parentReportID, - childReportID: report?.reportID, - reports, - personalDetails, - conciergeReportID, - }).replaceAll(/(\n+|\r\n|\n|\r)/gm, ' '); + const reportActionMessage = parseReportActionHtmlToText(parentReportAction, report?.parentReportID, conciergeReportID, report?.reportID).replaceAll(/(\n+|\r\n|\n|\r)/gm, ' '); if (isAttachment && reportActionMessage) { // eslint-disable-next-line @typescript-eslint/no-deprecated return `[${translateLocal('common.attachment')}]`; @@ -5986,10 +5891,6 @@ function getReportName(reportNameInformation: GetReportNameParams): string { if (isTripRoom(report) && report?.reportName !== CONST.REPORT.DEFAULT_REPORT_NAME) { return report?.reportName ?? ''; } - if (isCardIssuedAction(parentReportAction)) { - // eslint-disable-next-line @typescript-eslint/no-deprecated - return getCardIssuedMessage({reportAction: parentReportAction, translate: translateLocal}); - } return reportActionMessage; } diff --git a/tests/utils/collections/reportActions.ts b/tests/utils/collections/reportActions.ts index 4c10dc00056e..e39eafa38040 100644 --- a/tests/utils/collections/reportActions.ts +++ b/tests/utils/collections/reportActions.ts @@ -31,6 +31,7 @@ const deprecatedReportActions: ReportActionName[] = [ CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_REQUESTED, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_SETUP_REQUESTED, CONST.REPORT.ACTIONS.TYPE.DONATION, + CONST.REPORT.ACTIONS.TYPE.REIMBURSED, ] as const; export default function createRandomReportAction(index: number): ReportAction {