From bd78732fe9d70a6d72b6a8b9b7d14a65f1311c52 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 3 Nov 2022 13:18:39 +0700 Subject: [PATCH] TF-1118 Auto inject forwarding when capability supported --- lib/features/base/base_controller.dart | 11 ++++ .../forward/bindings/forward_bindings.dart | 13 +---- .../forward/forward_controller.dart | 53 ++++++++++++------- .../manage_account_dashboard_controller.dart | 2 + 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index cb361f087..d280a04ea 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -3,6 +3,7 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:forward/forward/capability_forward.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; @@ -13,6 +14,7 @@ import 'package:tmail_ui_user/features/base/mixin/view_as_dialog_action_mixin.da import 'package:tmail_ui_user/features/email/presentation/mdn_interactor_bindings.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_autocomplete_bindings.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart'; import 'package:tmail_ui_user/main/error/capability_validator.dart'; import 'package:tmail_ui_user/main/exceptions/remote_exception.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -118,4 +120,13 @@ abstract class BaseController extends GetxController logError('ReloadableController::injectVacationBindings(): exception: $e'); } } + + void injectForwardBindings(Session? session, AccountId? accountId) { + try { + requireCapability(session!, accountId!, [capabilityForward]); + ForwardingInteractorsBindings().dependencies(); + } catch(e) { + logError('ReloadableController::injectForwardBindings(): exception: $e'); + } + } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart b/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart index b683a4dd5..c110c80d0 100644 --- a/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart +++ b/lib/features/manage_account/presentation/forward/bindings/forward_bindings.dart @@ -1,21 +1,10 @@ import 'package:get/get.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forwarding_interactors_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; class ForwardBindings extends Bindings { @override void dependencies() { - ForwardingInteractorsBindings().dependencies(); - Get.lazyPut(() => ForwardController( - Get.find(), - Get.find(), - Get.find(), - Get.find(), - )); + Get.lazyPut(() => ForwardController()); } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index af81185b0..445e0d79c 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -4,6 +4,7 @@ import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; +import 'package:core/utils/app_logger.dart'; import 'package:core/utils/build_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -36,10 +37,10 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ForwardController extends BaseController { - final GetForwardInteractor _getForwardInteractor; - final DeleteRecipientInForwardingInteractor _deleteRecipientInForwardingInteractor; - final AddRecipientsInForwardingInteractor _addRecipientsInForwardingInteractor; - final EditLocalCopyInForwardingInteractor _editLocalCopyInForwardingInteractor; + GetForwardInteractor? _getForwardInteractor; + DeleteRecipientInForwardingInteractor? _deleteRecipientInForwardingInteractor; + AddRecipientsInForwardingInteractor? _addRecipientsInForwardingInteractor; + EditLocalCopyInForwardingInteractor? _editLocalCopyInForwardingInteractor; final accountDashBoardController = Get.find(); final _responsiveUtils = Get.find(); @@ -54,12 +55,20 @@ class ForwardController extends BaseController { bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false; - ForwardController( - this._getForwardInteractor, - this._deleteRecipientInForwardingInteractor, - this._addRecipientsInForwardingInteractor, - this._editLocalCopyInForwardingInteractor, - ); + ForwardController(); + + @override + void onInit() { + super.onInit(); + try { + _getForwardInteractor = Get.find(); + _deleteRecipientInForwardingInteractor = Get.find(); + _addRecipientsInForwardingInteractor = Get.find(); + _editLocalCopyInForwardingInteractor = Get.find(); + } catch (e) { + logError('ForwardController::onInit(): ${e.toString()}'); + } + } @override void onDone() { @@ -84,13 +93,15 @@ class ForwardController extends BaseController { } @override - void onInit() { + void onReady() { _getForward(); - super.onInit(); + super.onReady(); } void _getForward() { - consumeState(_getForwardInteractor.execute(accountDashBoardController.accountId.value!)); + if (_getForwardInteractor != null) { + consumeState(_getForwardInteractor!.execute(accountDashBoardController.accountId.value!)); + } } void deleteRecipients(BuildContext context, String emailAddress) { @@ -133,8 +144,10 @@ class ForwardController extends BaseController { popBack(); final accountId = accountDashBoardController.accountId.value; - if (accountId != null && currentForward.value != null) { - consumeState(_deleteRecipientInForwardingInteractor.execute( + if (accountId != null && + currentForward.value != null && + _deleteRecipientInForwardingInteractor != null) { + consumeState(_deleteRecipientInForwardingInteractor!.execute( accountId, DeleteRecipientInForwardingRequest( currentForward: currentForward.value!, @@ -258,8 +271,8 @@ class ForwardController extends BaseController { void _handleAddRecipients(AccountId accountId, List listEmailAddress) { final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet(); - if (currentForward.value != null) { - consumeState(_addRecipientsInForwardingInteractor.execute( + if (currentForward.value != null && _addRecipientsInForwardingInteractor != null) { + consumeState(_addRecipientsInForwardingInteractor!.execute( accountId, AddRecipientInForwardingRequest( currentForward: currentForward.value!, @@ -282,8 +295,10 @@ class ForwardController extends BaseController { void handleEditLocalCopy() { final accountId = accountDashBoardController.accountId.value; - if (accountId != null && currentForward.value != null) { - consumeState(_editLocalCopyInForwardingInteractor.execute( + if (accountId != null && + currentForward.value != null && + _editLocalCopyInForwardingInteractor != null) { + consumeState(_editLocalCopyInForwardingInteractor!.execute( accountId, EditLocalCopyInForwardingRequest( currentForward: currentForward.value!, diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index 6eaf8be1c..613d1a9da 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -90,6 +90,7 @@ class ManageAccountDashBoardController extends ReloadableController { sessionCurrent.value = session; _getUserProfile(); injectAutoCompleteBindings(sessionCurrent.value, accountId.value); + injectForwardBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent.value, accountId.value); _getVacationResponse(); } @@ -102,6 +103,7 @@ class ManageAccountDashBoardController extends ReloadableController { sessionCurrent.value = arguments.session; _getUserProfile(); injectAutoCompleteBindings(sessionCurrent.value, accountId.value); + injectForwardBindings(sessionCurrent.value, accountId.value); injectVacationBindings(sessionCurrent.value, accountId.value); _getVacationResponse(); if (arguments.menuSettingCurrent != null) {