TF-3413 Support Reply to list for email

This commit is contained in:
dab246
2025-01-09 05:04:55 +07:00
committed by Dat H. Pham
parent 1689f709b5
commit 77b756cbb6
20 changed files with 277 additions and 32 deletions
@@ -74,6 +74,7 @@ import 'package:tmail_ui_user/features/email/domain/state/get_email_content_stat
import 'package:tmail_ui_user/features/email/domain/state/transform_html_email_content_state.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/transform_html_email_content_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
@@ -640,11 +641,15 @@ class ComposerController extends BaseController
_updateStatusEmailSendButton();
break;
case EmailActionType.reply:
case EmailActionType.replyToList:
case EmailActionType.replyAll:
log('ComposerController::_initEmail:listPost = ${arguments.listPost}');
_initEmailAddress(
presentationEmail: arguments.presentationEmail!,
actionType: arguments.emailActionType,
mailboxRole: arguments.presentationEmail!.mailboxContain?.role ?? mailboxDashBoardController.selectedMailbox.value?.role
mailboxRole: arguments.presentationEmail!.mailboxContain?.role
?? mailboxDashBoardController.selectedMailbox.value?.role,
listPost: arguments.listPost,
);
_initSubjectEmail(
presentationEmail: arguments.presentationEmail!,
@@ -798,12 +803,15 @@ class ComposerController extends BaseController
required PresentationEmail presentationEmail,
required EmailActionType actionType,
Role? mailboxRole,
String? listPost,
}) {
log('ComposerController::_initEmailAddress:listPost = $listPost');
final recipients = presentationEmail.generateRecipientsEmailAddressForComposer(
emailActionType: actionType,
mailboxRole: mailboxRole
mailboxRole: mailboxRole,
listPost: listPost,
);
final userName = mailboxDashBoardController.sessionCurrent?.username;
final userName = mailboxDashBoardController.sessionCurrent?.username;
if (userName != null) {
final isSender = presentationEmail.from.asList().every((element) => element.email == userName.value);
if (isSender) {
@@ -74,6 +74,7 @@ extension CreateEmailRequestExtension on CreateEmailRequest {
MessageIdsHeaderValue? createInReplyTo() {
if (emailActionType == EmailActionType.reply ||
emailActionType == EmailActionType.replyToList ||
emailActionType == EmailActionType.replyAll
) {
return messageId;
@@ -83,6 +84,7 @@ extension CreateEmailRequestExtension on CreateEmailRequest {
MessageIdsHeaderValue? createReferences() {
if (emailActionType == EmailActionType.reply ||
emailActionType == EmailActionType.replyToList ||
emailActionType == EmailActionType.replyAll ||
emailActionType == EmailActionType.forward
) {
@@ -12,6 +12,7 @@ extension EmailActionTypeExtension on EmailActionType {
String getSubjectComposer(BuildContext? context, String subject) {
switch(this) {
case EmailActionType.reply:
case EmailActionType.replyToList:
case EmailActionType.replyAll:
if (subject.toLowerCase().startsWith('re:')) {
return subject;
@@ -60,6 +61,7 @@ extension EmailActionTypeExtension on EmailActionType {
final languageTag = locale.toLanguageTag();
switch(this) {
case EmailActionType.reply:
case EmailActionType.replyToList:
case EmailActionType.replyAll:
final receivedAt = presentationEmail.receivedAt;
final emailAddress = presentationEmail.from.toEscapeHtmlStringUseCommaSeparator();
@@ -80,6 +80,7 @@ class MobileEditorView extends StatelessWidget with EditorViewMixin {
}
);
case EmailActionType.reply:
case EmailActionType.replyToList:
case EmailActionType.replyAll:
case EmailActionType.forward:
if (contentViewState == null) {
@@ -145,6 +145,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
}
);
case EmailActionType.reply:
case EmailActionType.replyToList:
case EmailActionType.replyAll:
case EmailActionType.forward:
if (contentViewState == null) {