diff --git a/core/lib/presentation/utils/html_transformer/transform_configuration.dart b/core/lib/presentation/utils/html_transformer/transform_configuration.dart
index 17fdea07e..45a009175 100644
--- a/core/lib/presentation/utils/html_transformer/transform_configuration.dart
+++ b/core/lib/presentation/utils/html_transformer/transform_configuration.dart
@@ -46,7 +46,7 @@ class TransformConfiguration {
const RemoveCollapsedSignatureButtonTransformer(),
]);
- factory TransformConfiguration.forDraftsEmail() => TransformConfiguration.empty();
+ factory TransformConfiguration.forDraftsEmail() => TransformConfiguration.fromDomTransformers([const ImageTransformer()]);
factory TransformConfiguration.forPreviewEmailOnWeb() => TransformConfiguration.create(
customDomTransformers: [
diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart
index 11f087024..8f8f50312 100644
--- a/lib/features/composer/presentation/composer_controller.dart
+++ b/lib/features/composer/presentation/composer_controller.dart
@@ -326,9 +326,7 @@ class ComposerController extends BaseController with DragDropFileMixin implement
void _updateEditorContent(RestoreEmailInlineImagesSuccess success) {
richTextWebController?.editorController.setText(success.emailContent);
- consumeState(Stream.value(Right(GetEmailContentSuccess(
- htmlEmailContent: success.emailContent,
- attachments: []))));
+ consumeState(Stream.value(Right(GetEmailContentSuccess(htmlEmailContent: success.emailContent))));
}
@override
@@ -582,6 +580,12 @@ class ComposerController extends BaseController with DragDropFileMixin implement
presentationEmail: arguments.sendingEmail!.presentationEmail,
actionType: EmailActionType.editSendingEmail
);
+ final allAttachments = arguments.sendingEmail!.email.allAttachments;
+ _initAttachmentsAndInlineImages(
+ attachments: allAttachments.getListAttachmentsDisplayedOutside(
+ arguments.sendingEmail!.email.htmlBodyAttachments),
+ inlineImages: allAttachments.listAttachmentsDisplayedInContent);
+
_getEmailContentFromSendingEmail(arguments.sendingEmail!);
_emailIdEditing = arguments.sendingEmail!.presentationEmail.id!;
break;
@@ -628,7 +632,9 @@ class ComposerController extends BaseController with DragDropFileMixin implement
presentationEmail: arguments.presentationEmail!,
actionType: arguments.emailActionType
);
- _initAttachments(arguments.attachments ?? []);
+ _initAttachmentsAndInlineImages(
+ attachments: arguments.attachments,
+ inlineImages: arguments.inlineImages);
_transformHtmlEmailContent(arguments.emailContents);
break;
case EmailActionType.reopenComposerBrowser:
@@ -644,9 +650,9 @@ class ComposerController extends BaseController with DragDropFileMixin implement
presentationEmail: arguments.presentationEmail!,
actionType: EmailActionType.reopenComposerBrowser
);
- _initAttachments(
- arguments.attachments ?? [],
- inlineAttachments: arguments.inlineImages);
+ _initAttachmentsAndInlineImages(
+ attachments: arguments.attachments,
+ inlineImages: arguments.inlineImages);
final accountId = mailboxDashBoardController.accountId.value;
final downloadUrl = mailboxDashBoardController.sessionCurrent
@@ -690,13 +696,16 @@ class ComposerController extends BaseController with DragDropFileMixin implement
subjectEmailInputController.text = newSubject;
}
- void _initAttachments(List attachments, {List? inlineAttachments}) {
- if (attachments.isNotEmpty) {
- initialAttachments = attachments;
+ void _initAttachmentsAndInlineImages({
+ List? attachments,
+ List? inlineImages
+ }) {
+ if (attachments?.isNotEmpty == true) {
+ initialAttachments = attachments!;
uploadController.initializeUploadAttachments(attachments);
}
- if (inlineAttachments != null) {
- uploadController.initializeUploadInlineAttachments(inlineAttachments);
+ if (inlineImages?.isNotEmpty == true) {
+ uploadController.initializeUploadInlineAttachments(inlineImages!);
}
}
@@ -1323,7 +1332,6 @@ class ComposerController extends BaseController with DragDropFileMixin implement
consumeState(Stream.value(
Right(GetEmailContentSuccess(
htmlEmailContent: sendingEmail.presentationEmail.emailContentList.asHtmlString,
- attachments: sendingEmail.email.allAttachments,
emailCurrent: sendingEmail.email
))
));
@@ -1346,32 +1354,17 @@ class ComposerController extends BaseController with DragDropFileMixin implement
}
void _getEmailContentFromContentShared(String content) {
- consumeState(Stream.value(
- Right(GetEmailContentSuccess(
- htmlEmailContent: content,
- attachments: [],
- ))
- ));
+ consumeState(Stream.value(Right(GetEmailContentSuccess(htmlEmailContent: content))));
}
void _getEmailContentFromMailtoUri(String content) {
log('ComposerController::_getEmailContentFromMailtoUri:content: $content');
- consumeState(Stream.value(
- Right(GetEmailContentSuccess(
- htmlEmailContent: content,
- attachments: [],
- ))
- ));
+ consumeState(Stream.value(Right(GetEmailContentSuccess(htmlEmailContent: content))));
}
void _getEmailContentFromUnsubscribeMailtoLink(String content) {
log('ComposerController::_getEmailContentFromUnsubscribeMailtoLink:content: $content');
- consumeState(Stream.value(
- Right(GetEmailContentSuccess(
- htmlEmailContent: content,
- attachments: [],
- ))
- ));
+ consumeState(Stream.value(Right(GetEmailContentSuccess(htmlEmailContent: content))));
}
void _getEmailContentFromEmailId({required EmailId emailId, bool isDraftEmail = false}) {
@@ -1389,12 +1382,16 @@ class ComposerController extends BaseController with DragDropFileMixin implement
}
void _getEmailContentOffLineSuccess(GetEmailContentFromCacheSuccess success) {
- _initAttachments(success.attachments);
+ _initAttachmentsAndInlineImages(
+ attachments: success.attachments,
+ inlineImages: success.inlineImages);
emailContentsViewState.value = Right(success);
}
void _getEmailContentSuccess(GetEmailContentSuccess success) {
- _initAttachments(success.attachments);
+ _initAttachmentsAndInlineImages(
+ attachments: success.attachments,
+ inlineImages: success.inlineImages);
emailContentsViewState.value = Right(success);
}
diff --git a/lib/features/email/domain/extensions/detailed_email_extension.dart b/lib/features/email/domain/extensions/detailed_email_extension.dart
index c7b9396db..80180121b 100644
--- a/lib/features/email/domain/extensions/detailed_email_extension.dart
+++ b/lib/features/email/domain/extensions/detailed_email_extension.dart
@@ -18,6 +18,7 @@ extension DetailedEmailExtension on DetailedEmail {
emailContentPath: emailContentPath,
messageId: messageId?.ids.toList(),
references: references?.ids.toList(),
+ inlineImages: inlineImages?.toHiveCache(),
);
}
@@ -36,6 +37,7 @@ extension DetailedEmailExtension on DetailedEmail {
emailContentPath: path,
messageId: messageId,
references: references,
+ inlineImages: inlineImages,
);
}
}
\ No newline at end of file
diff --git a/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart b/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart
index 1a3280305..78b1c7dae 100644
--- a/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart
+++ b/lib/features/email/domain/extensions/detailed_email_hive_cache_extension.dart
@@ -22,7 +22,8 @@ extension DetailedEmailHiveCacheExtension on DetailedEmailHiveCache {
: null,
references: references != null
? MessageIdsHeaderValue(references!.toSet())
- : null
+ : null,
+ inlineImages: inlineImages?.toAttachment(),
);
}
}
\ No newline at end of file
diff --git a/lib/features/email/domain/extensions/email_extension.dart b/lib/features/email/domain/extensions/email_extension.dart
index 782e169e6..957f3736e 100644
--- a/lib/features/email/domain/extensions/email_extension.dart
+++ b/lib/features/email/domain/extensions/email_extension.dart
@@ -14,7 +14,8 @@ extension EmailExtension on Email {
keywords: keywords,
htmlEmailContent: htmlEmailContent,
messageId: messageId,
- references: references
+ references: references,
+ inlineImages: allAttachments.listAttachmentsDisplayedInContent,
);
}
}
\ No newline at end of file
diff --git a/lib/features/email/domain/model/detailed_email.dart b/lib/features/email/domain/model/detailed_email.dart
index 008e19df7..cbfa6f26c 100644
--- a/lib/features/email/domain/model/detailed_email.dart
+++ b/lib/features/email/domain/model/detailed_email.dart
@@ -14,6 +14,7 @@ class DetailedEmail with EquatableMixin {
final DateTime createdTime;
final MessageIdsHeaderValue? messageId;
final MessageIdsHeaderValue? references;
+ final List? inlineImages;
DetailedEmail({
required this.emailId,
@@ -25,6 +26,7 @@ class DetailedEmail with EquatableMixin {
this.emailContentPath,
this.messageId,
this.references,
+ this.inlineImages,
});
@override
@@ -38,5 +40,6 @@ class DetailedEmail with EquatableMixin {
emailContentPath,
messageId,
references,
+ inlineImages,
];
}
\ No newline at end of file
diff --git a/lib/features/email/domain/state/get_email_content_state.dart b/lib/features/email/domain/state/get_email_content_state.dart
index 9742216d9..57250a68f 100644
--- a/lib/features/email/domain/state/get_email_content_state.dart
+++ b/lib/features/email/domain/state/get_email_content_state.dart
@@ -7,12 +7,14 @@ class GetEmailContentLoading extends LoadingState {}
class GetEmailContentSuccess extends UIState {
final String htmlEmailContent;
- final List attachments;
+ final List? attachments;
+ final List? inlineImages;
final Email? emailCurrent;
GetEmailContentSuccess({
required this.htmlEmailContent,
- required this.attachments,
+ this.attachments,
+ this.inlineImages,
this.emailCurrent
});
@@ -20,18 +22,21 @@ class GetEmailContentSuccess extends UIState {
List