diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts index bfc3ffd2ebd53..48bc86f7f0b47 100644 --- a/src/libs/ReportNameUtils.ts +++ b/src/libs/ReportNameUtils.ts @@ -32,6 +32,7 @@ import Parser from './Parser'; import {getDisplayNameOrDefault} from './PersonalDetailsUtils'; import {getCleanedTagName, isPolicyAdmin, isPolicyFieldListEmpty} from './PolicyUtils'; import { + getActionableCard3DSTransactionApprovalMessage, getActionableCardFraudAlertResolutionMessage, getAutoPayApprovedReportsEnabledMessage, getAutoReimbursementMessage, @@ -569,6 +570,10 @@ function computeReportNameBasedOnReportAction( return getActionableCardFraudAlertResolutionMessage(translate, parentReportAction); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) { + return getActionableCard3DSTransactionApprovalMessage(translate, parentReportAction); + } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ADDRESS)) { return getCompanyAddressUpdateMessage(translate, parentReportAction); } diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index f8ef10c1e9d45..fa6a0d220b705 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -36,6 +36,7 @@ import { import Parser from './Parser'; import {getCleanedTagName} from './PolicyUtils'; import { + getActionableCard3DSTransactionApprovalMessage, getActionableCardFraudAlertResolutionMessage, getAddedApprovalRuleMessage, getAddedBudgetMessage, @@ -873,6 +874,11 @@ function getOptionData({ // We need to remove sms domain in case the last message text has a phone number mention with sms domain. let lastMessageText = Str.removeSMSDomain(lastMessageTextFromReport); + // Specifically for concierge chats, which don't meet any of the conditions in the if statement below + if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) { + lastMessageText = getActionableCard3DSTransactionApprovalMessage(translate, lastAction) ?? lastMessageText; + } + const isGroupChat = isGroupChatUtil(report) || isDeprecatedGroupDM(report, isReportArchived); const isThreadMessage = isThread(report) && lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.ADD_COMMENT && lastAction?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; diff --git a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx index 11386fe6833f6..46202ff1547cf 100644 --- a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx @@ -25,6 +25,7 @@ import {getCleanedTagName, isPolicyAdmin} from '@libs/PolicyUtils'; import ReportActionComposeFocusManager from '@libs/ReportActionComposeFocusManager'; import stripFollowupListFromHtml from '@libs/ReportActionFollowupUtils/stripFollowupListFromHtml'; import { + getActionableCard3DSTransactionApprovalMessage, getActionableCardFraudAlertMessage, getActionableMentionWhisperMessage, getAddedApprovalRuleMessage, @@ -1090,6 +1091,8 @@ const ContextMenuActions: ContextMenuAction[] = [ setClipboardMessage(getMovedActionMessage(translate, reportAction, originalReport)); } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_FRAUD_ALERT)) { setClipboardMessage(getActionableCardFraudAlertMessage(translate, reportAction, getLocalDateFromDatetime)); + } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) { + setClipboardMessage(getActionableCard3DSTransactionApprovalMessage(translate, reportAction)); } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.CHANGE_POLICY) { const displayMessage = getPolicyChangeMessage(translate, reportAction); Clipboard.setString(displayMessage);