TF-3479 Add OpenAndCloseComposerExtension to handle open & close composer

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-02-12 12:07:07 +07:00
committed by Dat H. Pham
parent fc37b5f647
commit 78d40f7be5
14 changed files with 167 additions and 136 deletions
@@ -119,6 +119,7 @@ import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/open_and_close_composer_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
@@ -1462,7 +1463,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void composeEmailFromEmailAddress(EmailAddress emailAddress) {
popBack();
mailboxDashBoardController.goToComposer(ComposerArguments.fromEmailAddress(emailAddress));
mailboxDashBoardController.openComposer(ComposerArguments.fromEmailAddress(emailAddress));
}
Future<void> openMailToLink(Uri? uri) async {
@@ -1472,7 +1473,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
log('SingleEmailController::openMailToLink(): ${uri.toString()}');
if (!RouteUtils.canOpenComposerFromNavigationRouter(navigationRouter)) return;
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.fromMailtoUri(
listEmailAddress: navigationRouter.listEmailAddress,
cc: navigationRouter.cc,
@@ -1657,10 +1658,10 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
) {
switch(emailActionType) {
case EmailActionType.compose:
mailboxDashBoardController.goToComposer(ComposerArguments());
mailboxDashBoardController.openComposer(ComposerArguments());
break;
case EmailActionType.reply:
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.replyEmail(
presentationEmail: presentationEmail,
content: currentEmailLoaded.value?.htmlContent ?? '',
@@ -1674,7 +1675,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
break;
case EmailActionType.replyToList:
log('SingleEmailController::pressEmailAction:replyToList');
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.replyToListEmail(
presentationEmail: presentationEmail,
content: currentEmailLoaded.value?.htmlContent ?? '',
@@ -1687,7 +1688,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
);
break;
case EmailActionType.replyAll:
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.replyAllEmail(
presentationEmail: presentationEmail,
content: currentEmailLoaded.value?.htmlContent ?? '',
@@ -1700,7 +1701,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
);
break;
case EmailActionType.forward:
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.forwardEmail(
presentationEmail: presentationEmail,
content: currentEmailLoaded.value?.htmlContent ?? '',
@@ -1832,7 +1833,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void openNewComposerAction(String mailTo) {
final emailAddress = EmailAddress(mailTo, mailTo);
mailboxDashBoardController.goToComposer(ComposerArguments.fromEmailAddress(emailAddress));
mailboxDashBoardController.openComposer(ComposerArguments.fromEmailAddress(emailAddress));
}
void openAttachmentList(BuildContext context, List<Attachment> attachments) {
@@ -1923,7 +1924,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
}) {
log('SingleEmailController::_handleUnsubscribeMailByMailtoLink:mailtoLinks: $mailtoLinks');
final navigationRouter = RouteUtils.generateNavigationRouterFromMailtoLink(mailtoLinks.first);
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.fromUnsubscribeMailtoLink(
listEmailAddress: navigationRouter.listEmailAddress,
subject: navigationRouter.subject,
@@ -2148,7 +2149,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void _editAsNewEmail(PresentationEmail presentationEmail) {
if (accountId == null || session == null) return;
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.editAsNewEmail(presentationEmail),
);
}
@@ -2436,7 +2437,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
final currentUserEmail = mailboxDashBoardController.getOwnEmailAddress();
final listEmailAddressMailTo = listEmailAddressAttendees.removeInvalidEmails(currentUserEmail);
log('SingleEmailController::handleMailToAttendees: listEmailAddressMailTo = $listEmailAddressMailTo');
mailboxDashBoardController.goToComposer(
mailboxDashBoardController.openComposer(
ComposerArguments.fromMailtoUri(listEmailAddress: listEmailAddressMailTo)
);
}