TF-898 Implement quick creating rule in email view
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_controller.dart';
|
||||
|
||||
class EmailRulesBindings extends Bindings {
|
||||
|
||||
@override
|
||||
void dependencies() {
|
||||
Get.lazyPut(() => EmailRulesController());
|
||||
}
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource/rule_filter_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/rule_filter_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/network/rule_filter_api.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/repository/rule_filter_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/rule_filter_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_email_rule_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_rules_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||
|
||||
class EmailRulesInteractorBindings extends InteractorsBindings {
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<RuleFilterDataSource>(() => Get.find<RuleFilterDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
Get.lazyPut(() => RuleFilterDataSourceImpl(
|
||||
Get.find<RuleFilterAPI>(),
|
||||
Get.find<RemoteExceptionThrower>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => GetAllRulesInteractor(Get.find<RuleFilterRepository>()));
|
||||
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<RuleFilterRepository>()));
|
||||
Get.lazyPut(() => CreateNewEmailRuleFilterInteractor(Get.find<RuleFilterRepository>()));
|
||||
Get.lazyPut(() => EditEmailRuleFilterInteractor(Get.find<RuleFilterRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<RuleFilterRepository>(() => Get.find<RuleFilterRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(() => RuleFilterRepositoryImpl(Get.find<RuleFilterDataSource>()));
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_email_rule_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_rules_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_controller.dart';
|
||||
|
||||
class EmailRulesBindings extends BaseBindings {
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => EmailRulesController(
|
||||
Get.find<GetAllRulesInteractor>(),
|
||||
Get.find<DeleteEmailRuleInteractor>(),
|
||||
Get.find<CreateNewEmailRuleFilterInteractor>(),
|
||||
Get.find<EditEmailRuleFilterInteractor>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => GetAllRulesInteractor(Get.find<ManageAccountRepository>()));
|
||||
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<ManageAccountRepository>()));
|
||||
Get.lazyPut(() => CreateNewEmailRuleFilterInteractor(Get.find<ManageAccountRepository>()));
|
||||
Get.lazyPut(() => EditEmailRuleFilterInteractor(Get.find<ManageAccountRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {}
|
||||
}
|
||||
@@ -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';
|
||||
@@ -33,10 +34,10 @@ import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
|
||||
class EmailRulesController extends BaseController {
|
||||
|
||||
final GetAllRulesInteractor _getAllRulesInteractor;
|
||||
final DeleteEmailRuleInteractor _deleteEmailRuleInteractor;
|
||||
final CreateNewEmailRuleFilterInteractor _createNewEmailRuleFilterInteractor;
|
||||
final EditEmailRuleFilterInteractor _editEmailRuleFilterInteractor;
|
||||
GetAllRulesInteractor? _getAllRulesInteractor;
|
||||
DeleteEmailRuleInteractor? _deleteEmailRuleInteractor;
|
||||
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
||||
EditEmailRuleFilterInteractor? _editEmailRuleFilterInteractor;
|
||||
|
||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
@@ -45,12 +46,7 @@ class EmailRulesController extends BaseController {
|
||||
|
||||
final listEmailRule = <TMailRule>[].obs;
|
||||
|
||||
EmailRulesController(
|
||||
this._getAllRulesInteractor,
|
||||
this._deleteEmailRuleInteractor,
|
||||
this._createNewEmailRuleFilterInteractor,
|
||||
this._editEmailRuleFilterInteractor,
|
||||
);
|
||||
EmailRulesController();
|
||||
|
||||
@override
|
||||
void onDone() {
|
||||
@@ -71,16 +67,28 @@ class EmailRulesController extends BaseController {
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_getAllRules();
|
||||
super.onInit();
|
||||
try {
|
||||
_getAllRulesInteractor = Get.find<GetAllRulesInteractor>();
|
||||
_deleteEmailRuleInteractor = Get.find<DeleteEmailRuleInteractor>();
|
||||
_createNewEmailRuleFilterInteractor = Get.find<CreateNewEmailRuleFilterInteractor>();
|
||||
_editEmailRuleFilterInteractor = Get.find<EditEmailRuleFilterInteractor>();
|
||||
} catch (e) {
|
||||
logError('EmailRulesController::onInit(): ${e.toString()}');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
_getAllRules();
|
||||
super.onReady();
|
||||
}
|
||||
|
||||
void goToCreateNewRule(BuildContext context) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final arguments = RulesFilterCreatorArguments(
|
||||
accountId,
|
||||
listEmailRule: listEmailRule);
|
||||
final session = _accountDashBoardController.sessionCurrent.value;
|
||||
if (accountId != null && session != null) {
|
||||
final arguments = RulesFilterCreatorArguments(accountId, session);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogRuleFilterCreator(
|
||||
@@ -107,9 +115,9 @@ class EmailRulesController extends BaseController {
|
||||
AccountId accountId,
|
||||
CreateNewEmailRuleFilterRequest ruleFilterRequest
|
||||
) async {
|
||||
consumeState(_createNewEmailRuleFilterInteractor.execute(
|
||||
accountId,
|
||||
ruleFilterRequest));
|
||||
if (_createNewEmailRuleFilterInteractor != null) {
|
||||
consumeState(_createNewEmailRuleFilterInteractor!.execute(accountId, ruleFilterRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||
@@ -127,12 +135,13 @@ class EmailRulesController extends BaseController {
|
||||
|
||||
void editEmailRule(BuildContext context, TMailRule rule) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final session = _accountDashBoardController.sessionCurrent.value;
|
||||
if (accountId != null && session != null) {
|
||||
final arguments = RulesFilterCreatorArguments(
|
||||
accountId,
|
||||
session,
|
||||
actionType: CreatorActionType.edit,
|
||||
tMailRule: rule,
|
||||
listEmailRule: listEmailRule);
|
||||
tMailRule: rule);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogRuleFilterCreator(
|
||||
@@ -159,7 +168,9 @@ class EmailRulesController extends BaseController {
|
||||
AccountId accountId,
|
||||
EditEmailRuleFilterRequest ruleFilterRequest
|
||||
) {
|
||||
consumeState(_editEmailRuleFilterInteractor.execute(accountId, ruleFilterRequest));
|
||||
if (_editEmailRuleFilterInteractor != null) {
|
||||
consumeState(_editEmailRuleFilterInteractor!.execute(accountId, ruleFilterRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void _editEmailRuleFilterSuccess(EditEmailRuleFilterSuccess success) {
|
||||
@@ -214,13 +225,16 @@ class EmailRulesController extends BaseController {
|
||||
void _handleDeleteEmailRuleAction(TMailRule emailRule) {
|
||||
popBack();
|
||||
|
||||
final deleteEmailRuleRequest = DeleteEmailRuleRequest(
|
||||
emailRuleDelete : emailRule,
|
||||
currentEmailRules: listEmailRule,
|
||||
);
|
||||
consumeState(_deleteEmailRuleInteractor.execute(
|
||||
if (_deleteEmailRuleInteractor != null) {
|
||||
final deleteEmailRuleRequest = DeleteEmailRuleRequest(
|
||||
emailRuleDelete : emailRule,
|
||||
currentEmailRules: listEmailRule,
|
||||
);
|
||||
|
||||
consumeState(_deleteEmailRuleInteractor!.execute(
|
||||
_accountDashBoardController.accountId.value!,
|
||||
deleteEmailRuleRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void _handleDeleteEmailRuleSuccess(DeleteEmailRuleSuccess success) {
|
||||
@@ -239,7 +253,9 @@ class EmailRulesController extends BaseController {
|
||||
}
|
||||
|
||||
void _getAllRules() {
|
||||
consumeState(_getAllRulesInteractor.execute(_accountDashBoardController.accountId.value!));
|
||||
if (_getAllRulesInteractor != null) {
|
||||
consumeState(_getAllRulesInteractor!.execute(_accountDashBoardController.accountId.value!));
|
||||
}
|
||||
}
|
||||
|
||||
void openEditRuleMenuAction(BuildContext context, TMailRule rule) {
|
||||
|
||||
@@ -21,7 +21,6 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oi
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/data/repository/manage_account_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
@@ -73,7 +72,6 @@ class ManageAccountDashBoardBindings extends BaseBindings {
|
||||
Get.find<RemoteExceptionThrower>()
|
||||
));
|
||||
Get.lazyPut(() => ManageAccountDataSourceImpl(
|
||||
Get.find<ManageAccountAPI>(),
|
||||
Get.find<LanguageCacheManager>(),
|
||||
Get.find<RemoteExceptionThrower>()));
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_va
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/update_vacation_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/action/dashboard_setting_action.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/bindings/email_rules_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/bindings/forward_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||
@@ -95,6 +95,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
_getUserProfile();
|
||||
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
||||
injectForwardBindings(sessionCurrent.value, accountId.value);
|
||||
injectRuleFilterBindings(sessionCurrent.value, accountId.value);
|
||||
injectVacationBindings(sessionCurrent.value, accountId.value);
|
||||
_getVacationResponse();
|
||||
}
|
||||
@@ -108,6 +109,7 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
_getUserProfile();
|
||||
injectAutoCompleteBindings(sessionCurrent.value, accountId.value);
|
||||
injectForwardBindings(sessionCurrent.value, accountId.value);
|
||||
injectRuleFilterBindings(sessionCurrent.value, accountId.value);
|
||||
injectVacationBindings(sessionCurrent.value, accountId.value);
|
||||
_getVacationResponse();
|
||||
if (arguments.menuSettingCurrent != null) {
|
||||
|
||||
Reference in New Issue
Block a user