From 6d5a58b1f8301ba0caa80071405198dd7feba581 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 17 Nov 2022 17:34:25 +0700 Subject: [PATCH] TF-1180 Reorganize inject and get interactor --- lib/features/base/base_controller.dart | 6 +-- .../controller/single_email_controller.dart | 45 +++++++++---------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index 2b945113a..07be00a38 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -119,7 +119,7 @@ abstract class BaseController extends GetxController requireCapability(session!, accountId!, [CapabilityIdentifier.jmapMdn]); MdnInteractorBindings().dependencies(); } catch(e) { - logError('ReloadableController::injectVacationBindings(): exception: $e'); + logError('BaseController::injectMdnBindings(): exception: $e'); } } @@ -128,7 +128,7 @@ abstract class BaseController extends GetxController requireCapability(session!, accountId!, [capabilityForward]); ForwardingInteractorsBindings().dependencies(); } catch(e) { - logError('ReloadableController::injectForwardBindings(): exception: $e'); + logError('BaseController::injectForwardBindings(): exception: $e'); } } @@ -137,7 +137,7 @@ abstract class BaseController extends GetxController requireCapability(session!, accountId!, [capabilityRuleFilter]); EmailRulesInteractorBindings().dependencies(); } catch(e) { - logError('ReloadableController::injectRuleFilterBindings(): exception: $e'); + logError('BaseController::injectRuleFilterBindings(): exception: $e'); } } } \ No newline at end of file diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index bd578c3d8..edb63f511 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -102,7 +102,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { EmailId? _currentEmailId; Identity? _identitySelected; List? initialEmailContents; - late Worker emailWorker; + late Worker emailWorker, accountIdWorker; final Debouncer _getEmailDeBouncer = Debouncer( const Duration(milliseconds: 800), initialValue: null, @@ -134,31 +134,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin { _initializeDebounceTimeIndexPageViewChange(); _registerListenerWorker(); _listenDownloadAttachmentProgressState(); - injectRuleFilterBindings( - emailSupervisorController.sessionCurrent, - emailSupervisorController.accountId); - try { - _createNewEmailRuleFilterInteractor = Get.find(); - } catch (e) { - logError('SingleEmailController::onInit(): ${e.toString()}'); - } super.onInit(); } - @override - void onReady() { - injectMdnBindings( - emailSupervisorController.sessionCurrent, - emailSupervisorController.accountId, - ); - try { - _sendReceiptToSenderInteractor = Get.find(); - } catch (e) { - logError('SingleEmailController::onReady(): SendReceiptToSenderInteractor not registered'); - } - super.onReady(); - } - @override void onClose() { _downloadProgressStateController.close(); @@ -176,6 +154,15 @@ class SingleEmailController extends BaseController with AppLoaderMixin { } void _registerListenerWorker() { + accountIdWorker = ever(mailboxDashBoardController.accountId, (accountId) { + if (accountId is AccountId) { + _injectAndGetInteractorBindings( + mailboxDashBoardController.sessionCurrent, + accountId + ); + } + }); + emailWorker = ever(emailSupervisorController.selectedEmail, (presentationEmail) { log('SingleEmailController::_initWorker(): $presentationEmail'); if (presentationEmail is PresentationEmail) { @@ -242,6 +229,18 @@ class SingleEmailController extends BaseController with AppLoaderMixin { }); } + void _injectAndGetInteractorBindings(Session? session, AccountId accountId) { + injectRuleFilterBindings(session, accountId); + injectMdnBindings(session, accountId); + + if (Get.isRegistered()) { + _createNewEmailRuleFilterInteractor = Get.find(); + } + if (Get.isRegistered()) { + _sendReceiptToSenderInteractor = Get.find(); + } + } + void _getAllIdentities() { final accountId = emailSupervisorController.accountId; if (accountId != null) {