TF-1118 Auto inject forwarding when capability supported
This commit is contained in:
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<GetForwardInteractor>(),
|
||||
Get.find<DeleteRecipientInForwardingInteractor>(),
|
||||
Get.find<AddRecipientsInForwardingInteractor>(),
|
||||
Get.find<EditLocalCopyInForwardingInteractor>(),
|
||||
));
|
||||
Get.lazyPut(() => ForwardController());
|
||||
}
|
||||
}
|
||||
@@ -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<ManageAccountDashBoardController>();
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
@@ -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<GetForwardInteractor>();
|
||||
_deleteRecipientInForwardingInteractor = Get.find<DeleteRecipientInForwardingInteractor>();
|
||||
_addRecipientsInForwardingInteractor = Get.find<AddRecipientsInForwardingInteractor>();
|
||||
_editLocalCopyInForwardingInteractor = Get.find<EditLocalCopyInForwardingInteractor>();
|
||||
} 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<EmailAddress> 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!,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user