diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 16032d41b949e..f21dd187f4660 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1,4 +1,4 @@ -import {ExpensiMark, fastMerge} from 'expensify-common'; +import {fastMerge} from 'expensify-common'; import _ from 'lodash'; import lodashFindLast from 'lodash/findLast'; import type {OnyxCollection, OnyxCollectionInputValue, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; @@ -21,6 +21,7 @@ import isReportMessageAttachment from './isReportMessageAttachment'; import * as Localize from './Localize'; import Log from './Log'; import type {MessageElementBase, MessageTextElement} from './MessageElement'; +import {parseHtmlToText} from './OnyxAwareParser'; import * as PersonalDetailsUtils from './PersonalDetailsUtils'; import type {OptimisticIOUReportAction, PartialReportAction} from './ReportUtils'; import StringUtils from './StringUtils'; @@ -189,7 +190,7 @@ function getWhisperedTo(reportAction: OnyxInputOrEntry): number[] return []; } const originalMessage = getOriginalMessage(reportAction); - const message = reportAction?.message; + const message = getReportActionMessage(reportAction); if (!(originalMessage && 'whisperedTo' in originalMessage) && !(message && 'whisperedTo' in message)) { return []; @@ -1127,14 +1128,15 @@ function getReportActionHtml(reportAction: PartialReportAction): string { } function getReportActionText(reportAction: PartialReportAction): string { - const html = getReportActionHtml(reportAction); - const parser = new ExpensiMark(); - return html ? parser.htmlToText(html) : ''; + const message = getReportActionMessage(reportAction); + // Sometime html can be an empty string + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + const text = (message?.html || message?.text) ?? ''; + return text ? parseHtmlToText(text) : ''; } function getTextFromHtml(html?: string): string { - const parser = new ExpensiMark(); - return html ? parser.htmlToText(html) : ''; + return html ? parseHtmlToText(html) : ''; } function getMemberChangeMessageFragment(reportAction: OnyxEntry): Message { @@ -1200,7 +1202,9 @@ function getMessageOfOldDotReportAction(reportAction: OnyxEntry): if (!Array.isArray(reportAction?.message)) { return getReportActionText(reportAction); } - return reportAction?.message?.map((element) => getTextFromHtml(element?.html)).join('') ?? ''; + // Sometime html can be an empty string + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + return reportAction?.message?.map((element) => getTextFromHtml(element?.html || element?.text)).join('') ?? ''; } function getMemberChangeMessagePlainText(reportAction: OnyxEntry): string { @@ -1326,7 +1330,9 @@ function getReportActionMessageText(reportAction: OnyxEntry | Empt if (!Array.isArray(reportAction?.message)) { return getReportActionText(reportAction); } - return reportAction?.message?.reduce((acc, curr) => `${acc}${getTextFromHtml(curr?.html)}`, '') ?? ''; + // Sometime html can be an empty string + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + return reportAction?.message?.reduce((acc, curr) => `${acc}${getTextFromHtml(curr?.html || curr?.text)}`, '') ?? ''; } function getDismissedViolationMessageText(originalMessage: ReportAction['originalMessage']): string {