diff --git a/src/pages/ReportDetailsPage.tsx b/src/pages/ReportDetailsPage.tsx index 9ec3691f49a8..9e438f0549e2 100644 --- a/src/pages/ReportDetailsPage.tsx +++ b/src/pages/ReportDetailsPage.tsx @@ -298,6 +298,10 @@ function ReportDetailsPage({policies, report, route}: ReportDetailsPageProps) { const shouldShowCancelPaymentButton = caseID === CASES.MONEY_REPORT && isPayer && isSettled && ReportUtils.isExpenseReport(moneyRequestReport); const [chatReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${moneyRequestReport?.chatReportID ?? '-1'}`); + const iouTransactionID = ReportActionsUtils.isMoneyRequestAction(requestParentReportAction) + ? ReportActionsUtils.getOriginalMessage(requestParentReportAction)?.IOUTransactionID ?? '' + : ''; + const cancelPayment = useCallback(() => { if (!chatReport) { return; @@ -371,6 +375,42 @@ function ReportDetailsPage({policies, report, route}: ReportDetailsPageProps) { }); } + if (isTrackExpenseReport) { + const actionReportID = ReportUtils.getOriginalReportID(report.reportID, parentReportAction) ?? '0'; + const whisperAction = ReportActionsUtils.getTrackExpenseActionableWhisper(iouTransactionID, moneyRequestReport?.reportID ?? '0'); + const actionableWhisperReportActionID = whisperAction?.reportActionID ?? '0'; + items.push({ + key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS, + translationKey: 'actionableMentionTrackExpense.submit', + icon: Expensicons.Send, + isAnonymousAction: false, + shouldShowRightIcon: true, + action: () => { + ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(iouTransactionID, actionReportID, CONST.IOU.ACTION.SUBMIT, actionableWhisperReportActionID); + }, + }); + items.push({ + key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS, + translationKey: 'actionableMentionTrackExpense.categorize', + icon: Expensicons.Folder, + isAnonymousAction: false, + shouldShowRightIcon: true, + action: () => { + ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(iouTransactionID, actionReportID, CONST.IOU.ACTION.CATEGORIZE, actionableWhisperReportActionID); + }, + }); + items.push({ + key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS, + translationKey: 'actionableMentionTrackExpense.share', + icon: Expensicons.UserPlus, + isAnonymousAction: false, + shouldShowRightIcon: true, + action: () => { + ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(iouTransactionID, actionReportID, CONST.IOU.ACTION.SHARE, actionableWhisperReportActionID); + }, + }); + } + // Prevent displaying private notes option for threads and task reports if (!isChatThread && !isMoneyRequestReport && !isInvoiceReport && !isTaskReport) { items.push({ @@ -517,6 +557,10 @@ function ReportDetailsPage({policies, report, route}: ReportDetailsPageProps) { isExpenseReport, backTo, canActionTask, + isTrackExpenseReport, + iouTransactionID, + parentReportAction, + moneyRequestReport?.reportID, ]); const displayNamesWithTooltips = useMemo(() => { @@ -590,10 +634,6 @@ function ReportDetailsPage({policies, report, route}: ReportDetailsPageProps) { ); }, [report, icons, isMoneyRequestReport, isInvoiceReport, isGroupChat, isThread, styles]); - const iouTransactionID = ReportActionsUtils.isMoneyRequestAction(requestParentReportAction) - ? ReportActionsUtils.getOriginalMessage(requestParentReportAction)?.IOUTransactionID ?? '' - : ''; - const canHoldUnholdReportAction = ReportUtils.canHoldUnholdReportAction(moneyRequestAction); const shouldShowHoldAction = caseID !== CASES.DEFAULT &&