From bce3f0a27af2f9da605e40a05defa815609e6b1d Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 11 Jul 2022 12:31:52 +0700 Subject: [PATCH] TF-332 Get original email content as html --- .../extensions/html_extension.dart | 15 +++++----- model/lib/email/email_content.dart | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/core/lib/presentation/extensions/html_extension.dart b/core/lib/presentation/extensions/html_extension.dart index 92f655d38..266eb9cc6 100644 --- a/core/lib/presentation/extensions/html_extension.dart +++ b/core/lib/presentation/extensions/html_extension.dart @@ -1,6 +1,8 @@ extension HtmlExtension on String { + static const String editorStartTags = '


'; + String removeFontSizeZeroPixel() => replaceAll(RegExp('font-size:0px;'), ''); String removeHeightZeroPixel() => replaceAll(RegExp('height:0px;'), ''); @@ -38,11 +40,10 @@ extension HtmlExtension on String { String toSignatureBlock() => '
${asSignatureHtml()}

'; - String removeEditorDefaultSpace() { - return replaceAll('




', ''); + String removeEditorStartTag() { + if (trim() == editorStartTags) { + return ''; + } + return this; } - - String addEditorDefaultSpace() { - return '




'; - } -} +} \ No newline at end of file diff --git a/model/lib/email/email_content.dart b/model/lib/email/email_content.dart index b146bf58a..7afd10a26 100644 --- a/model/lib/email/email_content.dart +++ b/model/lib/email/email_content.dart @@ -1,10 +1,13 @@ +import 'package:core/utils/app_logger.dart'; import 'package:equatable/equatable.dart'; import 'package:model/email/email_content_type.dart'; import 'package:model/model.dart'; class EmailContent with EquatableMixin { + static const defaultHtmlTagsWrapContent = ''; + final String content; final EmailContentType type; @@ -23,6 +26,31 @@ extension EmailContentExtension on EmailContent { .replaceAll('\n', '
') .replaceAll('\n\n', '
'); } + final newContent = _getContentOriginal(content); + return newContent; + } + + String _getContentOriginal(String content) { + if (content == EmailContent.defaultHtmlTagsWrapContent || + content.trim().isEmpty) { + return ''; + } + + final firstTags = ''; + final latestTags = ''; + if (content.startsWith(firstTags) && content.endsWith(latestTags)) { + final firstIndex = firstTags.length; + final latestIndex = content.length - latestTags.length; + log('EmailContentExtension::_getContentOriginal(): firstIndex: $firstIndex'); + log('EmailContentExtension::_getContentOriginal(): latestIndex: $latestIndex'); + + if (latestIndex > firstIndex) { + final contentOriginal = content.substring(firstIndex, latestIndex); + log('EmailContentExtension::_getContentOriginal(): contentOriginal: $contentOriginal'); + return contentOriginal; + } + } + return content; } } \ No newline at end of file