diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index b52ca73ec..d04396306 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -535,13 +535,22 @@ class ComposerController extends BaseController { void _initEmailAddress(ComposerArguments arguments) { final userProfile = mailboxDashBoardController.userProfile.value; if (arguments.presentationEmail != null && userProfile != null) { + final userEmailAddress = EmailAddress(null, userProfile.email); final recipients = arguments.presentationEmail!.generateRecipientsEmailAddressForComposer( - arguments.emailActionType, - arguments.mailboxRole); + arguments.emailActionType, + arguments.mailboxRole); - listToEmailAddress = List.from(recipients.value1); - listCcEmailAddress = List.from(recipients.value2); - listBccEmailAddress = List.from(recipients.value3); + final isSender = arguments.presentationEmail!.from.asList().every((element) => element.email == userEmailAddress.email); + + if (isSender) { + listToEmailAddress = List.from(recipients.value1); + listCcEmailAddress = List.from(recipients.value2); + listBccEmailAddress = List.from(recipients.value3); + } else { + listToEmailAddress = List.from(recipients.value1.toSet().filterEmailAddress(userEmailAddress)); + listCcEmailAddress = List.from(recipients.value2.toSet().filterEmailAddress(userEmailAddress)); + listBccEmailAddress = List.from(recipients.value3.toSet().filterEmailAddress(userEmailAddress)); + } if (listToEmailAddress.isNotEmpty || listCcEmailAddress.isNotEmpty || listBccEmailAddress.isNotEmpty) { isInitialRecipient.value = true; diff --git a/model/lib/extensions/list_email_address_extension.dart b/model/lib/extensions/list_email_address_extension.dart index f7b05807a..5018944c5 100644 --- a/model/lib/extensions/list_email_address_extension.dart +++ b/model/lib/extensions/list_email_address_extension.dart @@ -26,4 +26,10 @@ extension ListEmailAddressExtension on Set? { } int numberEmailAddress() => this != null ? this!.length : 0; + + List filterEmailAddress(EmailAddress emailAddressNotExist) { + return this != null + ? this!.where((emailAddress) => emailAddress.email != emailAddressNotExist.email).toList() + : List.empty(); + } } \ No newline at end of file diff --git a/model/lib/extensions/presentation_email_extension.dart b/model/lib/extensions/presentation_email_extension.dart index 39c075e38..44b77c7d1 100644 --- a/model/lib/extensions/presentation_email_extension.dart +++ b/model/lib/extensions/presentation_email_extension.dart @@ -112,7 +112,7 @@ extension PresentationEmailExtension on PresentationEmail { if (mailboxRole == PresentationMailbox.roleSent) { return Tuple3(to.asList(), [], []); } else { - final replyToAddress = replyTo.asList().isNotEmpty ? replyTo.asList() : from.asList(); + final replyToAddress = replyTo.asList().isNotEmpty ? to.asList() + replyTo.asList() : from.asList(); return Tuple3(replyToAddress, [], []); } case EmailActionType.replyAll: