diff --git a/app/builders/messages/message_builder.rb b/app/builders/messages/message_builder.rb index 2f95615e9..86bcee54e 100644 --- a/app/builders/messages/message_builder.rb +++ b/app/builders/messages/message_builder.rb @@ -7,6 +7,7 @@ class Messages::MessageBuilder @private = params[:private] || false @conversation = conversation @user = user + @account = conversation.account @message_type = params[:message_type] || 'outgoing' @attachments = params[:attachments] @automation_rule = content_attributes&.dig(:automation_rule_id) @@ -20,7 +21,9 @@ class Messages::MessageBuilder @message = @conversation.messages.build(message_params) process_attachments process_emails - process_email_content + # When the message has no quoted content, it will just be rendered as a regular message + # The frontend is equipped to handle this case + process_email_content if @account.feature_enabled?(:quoted_email_reply) @message.save! @message end diff --git a/app/javascript/dashboard/components-next/message/bubbles/Email/Index.vue b/app/javascript/dashboard/components-next/message/bubbles/Email/Index.vue index 1eb3cda10..7a4164ded 100644 --- a/app/javascript/dashboard/components-next/message/bubbles/Email/Index.vue +++ b/app/javascript/dashboard/components-next/message/bubbles/Email/Index.vue @@ -6,6 +6,7 @@ import { allowedCssProperties } from 'lettersanitizer'; import Icon from 'next/icon/Icon.vue'; import { EmailQuoteExtractor } from 'dashboard/helper/emailQuoteExtractor.js'; +import FormattedContent from 'next/message/bubbles/Text/FormattedContent.vue'; import BaseBubble from 'next/message/bubbles/Base.vue'; import AttachmentChips from 'next/message/chips/AttachmentChips.vue'; import EmailMeta from './EmailMeta.vue'; @@ -46,6 +47,22 @@ const originalEmailHtml = computed( originalEmailText.value ); +const hasEmailContent = computed(() => { + return ( + contentAttributes?.value?.email?.textContent?.full || + contentAttributes?.value?.email?.htmlContent?.full + ); +}); + +const messageContent = computed(() => { + // If translations exist and we're showing translations (not original) + if (hasTranslations.value && !renderOriginal.value) { + return translationContent.value; + } + // Otherwise show original content + return content.value; +}); + const textToShow = computed(() => { // If translations exist and we're showing translations (not original) if (hasTranslations.value && !renderOriginal.value) { @@ -126,30 +143,37 @@ const handleSeeOriginal = () => { {{ $t('EMAIL_HEADER.EXPAND') }} - - +