diff --git a/src/libs/OptionsListUtils.js b/src/libs/OptionsListUtils.js index 23f477618d4c..c11f490559fe 100644 --- a/src/libs/OptionsListUtils.js +++ b/src/libs/OptionsListUtils.js @@ -253,7 +253,7 @@ function createOption(personalDetailList, report, { : {}; const lastActorDetails = report ? _.find(personalDetailList, {login: report.lastActorEmail}) : null; - const lastMessageTextFromReport = ReportUtils.isReportMessageAttachment(lodashGet(report, 'lastMessageText', '')) + const lastMessageTextFromReport = ReportUtils.isReportMessageAttachment({text: lodashGet(report, 'lastMessageText', ''), html: lodashGet(report, 'lastMessageHtml', '')}) ? `[${Localize.translateLocal('common.attachment')}]` : Str.htmlDecode(lodashGet(report, 'lastMessageText', '')); let lastMessageText = report && hasMultipleParticipants && lastActorDetails diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 4d379900e0f8..02c7251f1704 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -235,6 +235,7 @@ function getSimplifiedReportObject(report) { oldPolicyName, visibility, isOwnPolicyExpenseChat: lodashGet(report, ['isOwnPolicyExpenseChat'], false), + lastMessageHtml: lastActionMessage, }; } @@ -628,7 +629,7 @@ function updateReportWithNewAction( // Add the action into Onyx reportActionsToMerge[reportAction.sequenceNumber] = { ...reportAction, - isAttachment: ReportUtils.isReportMessageAttachment(messageText), + isAttachment: ReportUtils.isReportMessageAttachment(lodashGet(reportAction, ['message', 0], {})), loading: false, }; diff --git a/src/libs/reportUtils.js b/src/libs/reportUtils.js index 59f83ff1db9e..428eb0d75ac3 100644 --- a/src/libs/reportUtils.js +++ b/src/libs/reportUtils.js @@ -23,13 +23,14 @@ function getReportParticipantsTitle(logins) { } /** - * Check whether a report action is Attachment is not. + * Check whether a report action is Attachment or not. + * Ignore messages containing [Attachment] as the main content. Attachments are actions with only text as [Attachment]. * - * @param {Object} reportMessageText report action's message as text + * @param {Object} reportActionMessage report action's message as text and html * @returns {Boolean} */ -function isReportMessageAttachment(reportMessageText) { - return reportMessageText === '[Attachment]'; +function isReportMessageAttachment({text, html}) { + return text === '[Attachment]' && html !== '[Attachment]'; } /** @@ -60,7 +61,7 @@ function canEditReportAction(reportAction) { return reportAction.actorEmail === sessionEmail && reportAction.reportActionID && reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.ADDCOMMENT - && !isReportMessageAttachment(lodashGet(reportAction, ['message', 0, 'text'], '')); + && !isReportMessageAttachment(lodashGet(reportAction, ['message', 0], {})); } /** diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.js b/src/pages/home/report/ContextMenu/ContextMenuActions.js index 7d23894e613d..e4c474bee1f8 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.js +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.js @@ -48,7 +48,7 @@ export default [ // `ContextMenuItem` with `successText` and `successIcon` which will fallback to // the `text` and `icon` onPress: (closePopover, {reportAction, selection}) => { - const message = _.last(lodashGet(reportAction, 'message', null)); + const message = _.last(lodashGet(reportAction, 'message', [{}])); const html = lodashGet(message, 'html', ''); const parser = new ExpensiMark(); @@ -58,7 +58,7 @@ export default [ const isAttachment = _.has(reportAction, 'isAttachment') ? reportAction.isAttachment - : ReportUtils.isReportMessageAttachment(text); + : ReportUtils.isReportMessageAttachment(message); if (!isAttachment) { Clipboard.setString(text); } else {