add delete_email_rule feature

This commit is contained in:
ManhNTX
2022-08-10 11:08:22 +07:00
committed by Dat H. Pham
parent a5658a6779
commit d6430bda3d
17 changed files with 187 additions and 28 deletions
@@ -1,6 +1,7 @@
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/get_all_rules_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_controller.dart';
@@ -10,6 +11,7 @@ class EmailRulesBindings extends BaseBindings {
void bindingsController() {
Get.lazyPut(() => EmailRulesController(
Get.find<GetAllRulesInteractor>(),
Get.find<DeleteEmailRuleInteractor>(),
));
}
@@ -22,6 +24,7 @@ class EmailRulesBindings extends BaseBindings {
@override
void bindingsInteractor() {
Get.lazyPut(() => GetAllRulesInteractor(Get.find<ManageAccountRepository>()));
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<ManageAccountRepository>()));
}
@override
@@ -3,23 +3,27 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:rule_filter/rule_filter/tmail_rule.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_email_rule_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_rules_state.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/get_all_rules_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class EmailRulesController extends BaseController {
final listEmailRule = <TMailRule>[].obs;
final _accountDashBoardController =
Get.find<ManageAccountDashBoardController>();
final GetAllRulesInteractor _getAllRulesInteractor;
final DeleteEmailRuleInteractor _deleteEmailRuleInteractor;
final _imagePaths = Get.find<ImagePaths>();
EmailRulesController(this._getAllRulesInteractor);
EmailRulesController(this._getAllRulesInteractor, this._deleteEmailRuleInteractor);
@override
void onDone() {
@@ -29,6 +33,12 @@ class EmailRulesController extends BaseController {
listEmailRule.addAll(success.rules!);
}
}
if (success is DeleteEmailRuleSuccess) {
if (success.rules?.isNotEmpty == true) {
listEmailRule.clear();
listEmailRule.addAll(success.rules!);
}
}
});
}
@@ -37,7 +47,7 @@ class EmailRulesController extends BaseController {
@override
void onInit() {
_getAllRules(_accountDashBoardController.accountId.value!);
_getAllRules();
super.onInit();
}
@@ -49,12 +59,16 @@ class EmailRulesController extends BaseController {
//TODO: editEmailRule
}
void deleteEmailRule(TMailRule rule) {
//TODO: deleteEmailRule
void deleteEmailRule(TMailRule emailRule) {
final deleteEmailRuleRequest = DeleteEmailRuleRequest(
emailRuleDelete : emailRule,
currentEmailRules: listEmailRule,
);
consumeState(_deleteEmailRuleInteractor.execute(_accountDashBoardController.accountId.value!, deleteEmailRuleRequest));
}
void _getAllRules(AccountId accountId) {
consumeState(_getAllRulesInteractor.execute(accountId));
void _getAllRules() {
consumeState(_getAllRulesInteractor.execute(_accountDashBoardController.accountId.value!));
}
void openEditRuleMenuAction(BuildContext context, TMailRule rule) {
@@ -78,8 +92,10 @@ class EmailRulesController extends BaseController {
iconRightPadding: const EdgeInsets.only(right: 12),
textStyleAction: const TextStyle(
fontSize: 17, color: AppColor.colorActionDeleteConfirmDialog),
)..onActionClick((rule) => deleteEmailRule(rule)))
.build();
)..onActionClick((rule) {
deleteEmailRule(rule);
popBack();
})).build();
}
Widget _editEmailRuleActionTile(BuildContext context, TMailRule rule) {
@@ -42,9 +42,7 @@ class ListEmailRulesWidget extends GetWidget<EmailRulesController> {
itemCount: controller.listEmailRule.length,
itemBuilder: (context, index) {
final rule = controller.listEmailRule[index];
return EmailRulesItemWidget(
rule: rule,
);
return EmailRulesItemWidget(rule: rule);
},
separatorBuilder: (BuildContext context, int index) =>
const Divider(