From d73e0068c4464fbb12d070f1613d90b03e4a9e93 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 23 Apr 2024 23:53:58 +0700 Subject: [PATCH] Avoid fetching again identity lists in SingleEmailController --- .../controller/single_email_controller.dart | 26 ++++++++++++------- .../mailbox_dashboard_controller.dart | 2 ++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index f7516f01b..e4d843a99 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -327,8 +327,10 @@ class SingleEmailController extends BaseController with AppLoaderMixin { markAsEmailRead(selectedEmail, ReadActions.markAsRead, MarkReadAction.tap); } - if (_identitySelected == null) { + if (mailboxDashBoardController.listIdentities.isEmpty) { _getAllIdentities(); + } else { + _initializeSelectedIdentity(mailboxDashBoardController.listIdentities); } } @@ -418,17 +420,20 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _getAllIdentitiesSuccess(GetAllIdentitiesSuccess success) { if (success.identities?.isNotEmpty == true) { - if (currentEmail != null) { - final currentMailbox = getMailboxContain(currentEmail!); - log('SingleEmailController::_getAllIdentitiesSuccess():currentMailbox: $currentMailbox'); - if (_isBelongToTeamMailboxes(currentMailbox)) { - _setUpDefaultIdentityForTeamMailbox(success.identities!, currentMailbox!); - } else { - _setUpDefaultIdentity(success.identities!); - } + _initializeSelectedIdentity(success.identities!); + } + } + + void _initializeSelectedIdentity(List identities) { + if (currentEmail != null) { + final currentMailbox = getMailboxContain(currentEmail!); + if (_isBelongToTeamMailboxes(currentMailbox)) { + _setUpDefaultIdentityForTeamMailbox(identities, currentMailbox!); } else { - _setUpDefaultIdentity(success.identities!); + _setUpDefaultIdentity(identities); } + } else { + _setUpDefaultIdentity(identities); } } @@ -621,6 +626,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { blobCalendarEvent.value = null; emailUnsubscribe.value = null; _printEmailAction = null; + _identitySelected = null; if (isEmailClosing) { emailLoadedViewState.value = Right(UIState.idle); viewState.value = Right(UIState.idle); diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 124537725..20af0cc91 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -2523,6 +2523,8 @@ class MailboxDashBoardController extends ReloadableController { log('MailboxDashBoardController::_handleGetAllIdentitiesSuccess: IDENTITIES_SIZE = ${_identities?.length}'); } + List get listIdentities => _identities ?? []; + @override void onClose() { _emailReceiveManager.closeEmailReceiveManagerStream();