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:dartz/dartz.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:forward/forward/capability_forward.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.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/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/contact_autocomplete_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/tmail_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/error/capability_validator.dart';
|
||||||
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.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');
|
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: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';
|
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart';
|
||||||
|
|
||||||
class ForwardBindings extends Bindings {
|
class ForwardBindings extends Bindings {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dependencies() {
|
void dependencies() {
|
||||||
ForwardingInteractorsBindings().dependencies();
|
Get.lazyPut(() => ForwardController());
|
||||||
Get.lazyPut(() => ForwardController(
|
|
||||||
Get.find<GetForwardInteractor>(),
|
|
||||||
Get.find<DeleteRecipientInForwardingInteractor>(),
|
|
||||||
Get.find<AddRecipientsInForwardingInteractor>(),
|
|
||||||
Get.find<EditLocalCopyInForwardingInteractor>(),
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ import 'package:core/presentation/utils/app_toast.dart';
|
|||||||
import 'package:core/presentation/utils/responsive_utils.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/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
|
||||||
import 'package:core/presentation/views/dialog/confirmation_dialog_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:core/utils/build_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.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 {
|
class ForwardController extends BaseController {
|
||||||
|
|
||||||
final GetForwardInteractor _getForwardInteractor;
|
GetForwardInteractor? _getForwardInteractor;
|
||||||
final DeleteRecipientInForwardingInteractor _deleteRecipientInForwardingInteractor;
|
DeleteRecipientInForwardingInteractor? _deleteRecipientInForwardingInteractor;
|
||||||
final AddRecipientsInForwardingInteractor _addRecipientsInForwardingInteractor;
|
AddRecipientsInForwardingInteractor? _addRecipientsInForwardingInteractor;
|
||||||
final EditLocalCopyInForwardingInteractor _editLocalCopyInForwardingInteractor;
|
EditLocalCopyInForwardingInteractor? _editLocalCopyInForwardingInteractor;
|
||||||
|
|
||||||
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
@@ -54,12 +55,20 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false;
|
bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false;
|
||||||
|
|
||||||
ForwardController(
|
ForwardController();
|
||||||
this._getForwardInteractor,
|
|
||||||
this._deleteRecipientInForwardingInteractor,
|
@override
|
||||||
this._addRecipientsInForwardingInteractor,
|
void onInit() {
|
||||||
this._editLocalCopyInForwardingInteractor,
|
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
|
@override
|
||||||
void onDone() {
|
void onDone() {
|
||||||
@@ -84,13 +93,15 @@ class ForwardController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onReady() {
|
||||||
_getForward();
|
_getForward();
|
||||||
super.onInit();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _getForward() {
|
void _getForward() {
|
||||||
consumeState(_getForwardInteractor.execute(accountDashBoardController.accountId.value!));
|
if (_getForwardInteractor != null) {
|
||||||
|
consumeState(_getForwardInteractor!.execute(accountDashBoardController.accountId.value!));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteRecipients(BuildContext context, String emailAddress) {
|
void deleteRecipients(BuildContext context, String emailAddress) {
|
||||||
@@ -133,8 +144,10 @@ class ForwardController extends BaseController {
|
|||||||
popBack();
|
popBack();
|
||||||
|
|
||||||
final accountId = accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
if (accountId != null && currentForward.value != null) {
|
if (accountId != null &&
|
||||||
consumeState(_deleteRecipientInForwardingInteractor.execute(
|
currentForward.value != null &&
|
||||||
|
_deleteRecipientInForwardingInteractor != null) {
|
||||||
|
consumeState(_deleteRecipientInForwardingInteractor!.execute(
|
||||||
accountId,
|
accountId,
|
||||||
DeleteRecipientInForwardingRequest(
|
DeleteRecipientInForwardingRequest(
|
||||||
currentForward: currentForward.value!,
|
currentForward: currentForward.value!,
|
||||||
@@ -258,8 +271,8 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void _handleAddRecipients(AccountId accountId, List<EmailAddress> listEmailAddress) {
|
void _handleAddRecipients(AccountId accountId, List<EmailAddress> listEmailAddress) {
|
||||||
final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet();
|
final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet();
|
||||||
if (currentForward.value != null) {
|
if (currentForward.value != null && _addRecipientsInForwardingInteractor != null) {
|
||||||
consumeState(_addRecipientsInForwardingInteractor.execute(
|
consumeState(_addRecipientsInForwardingInteractor!.execute(
|
||||||
accountId,
|
accountId,
|
||||||
AddRecipientInForwardingRequest(
|
AddRecipientInForwardingRequest(
|
||||||
currentForward: currentForward.value!,
|
currentForward: currentForward.value!,
|
||||||
@@ -282,8 +295,10 @@ class ForwardController extends BaseController {
|
|||||||
|
|
||||||
void handleEditLocalCopy() {
|
void handleEditLocalCopy() {
|
||||||
final accountId = accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
if (accountId != null && currentForward.value != null) {
|
if (accountId != null &&
|
||||||
consumeState(_editLocalCopyInForwardingInteractor.execute(
|
currentForward.value != null &&
|
||||||
|
_editLocalCopyInForwardingInteractor != null) {
|
||||||
|
consumeState(_editLocalCopyInForwardingInteractor!.execute(
|
||||||
accountId,
|
accountId,
|
||||||
EditLocalCopyInForwardingRequest(
|
EditLocalCopyInForwardingRequest(
|
||||||
currentForward: currentForward.value!,
|
currentForward: currentForward.value!,
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
sessionCurrent.value = session;
|
sessionCurrent.value = session;
|
||||||
_getUserProfile();
|
_getUserProfile();
|
||||||
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
||||||
|
injectForwardBindings(sessionCurrent.value, accountId.value);
|
||||||
injectVacationBindings(sessionCurrent.value, accountId.value);
|
injectVacationBindings(sessionCurrent.value, accountId.value);
|
||||||
_getVacationResponse();
|
_getVacationResponse();
|
||||||
}
|
}
|
||||||
@@ -102,6 +103,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
|||||||
sessionCurrent.value = arguments.session;
|
sessionCurrent.value = arguments.session;
|
||||||
_getUserProfile();
|
_getUserProfile();
|
||||||
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
||||||
|
injectForwardBindings(sessionCurrent.value, accountId.value);
|
||||||
injectVacationBindings(sessionCurrent.value, accountId.value);
|
injectVacationBindings(sessionCurrent.value, accountId.value);
|
||||||
_getVacationResponse();
|
_getVacationResponse();
|
||||||
if (arguments.menuSettingCurrent != null) {
|
if (arguments.menuSettingCurrent != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user