TF-611 Handle create new email rule filter
This commit is contained in:
+1
-1
@@ -54,7 +54,7 @@ class AppBarDestinationPickerBuilder extends StatelessWidget {
|
||||
Widget _buildCancelButton(BuildContext context) {
|
||||
if (_mailboxAction == MailboxActions.moveEmail ||
|
||||
_mailboxAction == MailboxActions.move ||
|
||||
_mailboxAction == MailboxActions.selectFromRuleFilter ||
|
||||
_mailboxAction == MailboxActions.selectForRuleAction ||
|
||||
_mailboxAction == MailboxActions.select) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(right: 12),
|
||||
|
||||
@@ -11,7 +11,7 @@ enum MailboxActions {
|
||||
rename,
|
||||
move,
|
||||
markAsRead,
|
||||
selectFromRuleFilter,
|
||||
selectForRuleAction,
|
||||
}
|
||||
|
||||
extension MailboxActionsExtension on MailboxActions {
|
||||
@@ -24,7 +24,7 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
case MailboxActions.move:
|
||||
return AppLocalizations.of(context).moveTo;
|
||||
case MailboxActions.select:
|
||||
case MailboxActions.selectFromRuleFilter:
|
||||
case MailboxActions.selectForRuleAction:
|
||||
return AppLocalizations.of(context).selectMailbox;
|
||||
default:
|
||||
return '';
|
||||
@@ -84,7 +84,7 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
case MailboxActions.moveEmail:
|
||||
case MailboxActions.move:
|
||||
case MailboxActions.select:
|
||||
case MailboxActions.selectFromRuleFilter:
|
||||
case MailboxActions.selectForRuleAction:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -107,7 +107,7 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
case MailboxActions.moveEmail:
|
||||
case MailboxActions.move:
|
||||
case MailboxActions.select:
|
||||
case MailboxActions.selectFromRuleFilter:
|
||||
case MailboxActions.selectForRuleAction:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
|
||||
@@ -2,6 +2,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/create_new_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';
|
||||
|
||||
@@ -12,6 +13,7 @@ class EmailRulesBindings extends BaseBindings {
|
||||
Get.lazyPut(() => EmailRulesController(
|
||||
Get.find<GetAllRulesInteractor>(),
|
||||
Get.find<DeleteEmailRuleInteractor>(),
|
||||
Get.find<CreateNewEmailRuleFilterInteractor>(),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -25,6 +27,7 @@ class EmailRulesBindings extends BaseBindings {
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => GetAllRulesInteractor(Get.find<ManageAccountRepository>()));
|
||||
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<ManageAccountRepository>()));
|
||||
Get.lazyPut(() => CreateNewEmailRuleFilterInteractor(Get.find<ManageAccountRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -3,27 +3,40 @@ 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/model/create_new_email_rule_filter_request.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_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/create_new_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/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/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
|
||||
class EmailRulesController extends BaseController {
|
||||
final listEmailRule = <TMailRule>[].obs;
|
||||
final _accountDashBoardController =
|
||||
Get.find<ManageAccountDashBoardController>();
|
||||
|
||||
final GetAllRulesInteractor _getAllRulesInteractor;
|
||||
final DeleteEmailRuleInteractor _deleteEmailRuleInteractor;
|
||||
final CreateNewEmailRuleFilterInteractor _createNewEmailRuleFilterInteractor;
|
||||
|
||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
EmailRulesController(this._getAllRulesInteractor, this._deleteEmailRuleInteractor);
|
||||
final listEmailRule = <TMailRule>[].obs;
|
||||
|
||||
EmailRulesController(
|
||||
this._getAllRulesInteractor,
|
||||
this._deleteEmailRuleInteractor,
|
||||
this._createNewEmailRuleFilterInteractor
|
||||
);
|
||||
|
||||
@override
|
||||
void onDone() {
|
||||
@@ -32,12 +45,13 @@ class EmailRulesController extends BaseController {
|
||||
if (success.rules?.isNotEmpty == true) {
|
||||
listEmailRule.addAll(success.rules!);
|
||||
}
|
||||
}
|
||||
if (success is DeleteEmailRuleSuccess) {
|
||||
} else if (success is DeleteEmailRuleSuccess) {
|
||||
if (success.rules?.isNotEmpty == true) {
|
||||
listEmailRule.clear();
|
||||
listEmailRule.addAll(success.rules!);
|
||||
}
|
||||
} else if (success is CreateNewRuleFilterSuccess) {
|
||||
_createNewRuleFilterSuccess(success);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -51,8 +65,38 @@ class EmailRulesController extends BaseController {
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
void goToCreateNewRule() {
|
||||
//TODO: goToCreateNewRule
|
||||
void goToCreateNewRule() async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
final newEmailRuleFilter = await push(
|
||||
AppRoutes.RULES_FILTER_CREATOR,
|
||||
arguments: RulesFilterCreatorArguments(accountId));
|
||||
|
||||
if (newEmailRuleFilter is TMailRule) {
|
||||
_createNewRuleFilterAction(
|
||||
accountId,
|
||||
CreateNewEmailRuleFilterRequest(
|
||||
listEmailRule,
|
||||
newEmailRuleFilter)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _createNewRuleFilterAction(
|
||||
AccountId accountId,
|
||||
CreateNewEmailRuleFilterRequest ruleFilterRequest
|
||||
) async {
|
||||
consumeState(_createNewEmailRuleFilterInteractor.execute(
|
||||
accountId,
|
||||
ruleFilterRequest));
|
||||
}
|
||||
|
||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||
if (success.newListRules.isNotEmpty == true) {
|
||||
listEmailRule.clear();
|
||||
listEmailRule.addAll(success.newListRules);
|
||||
}
|
||||
}
|
||||
|
||||
void editEmailRule(TMailRule rule) {
|
||||
@@ -109,4 +153,4 @@ class EmailRulesController extends BaseController {
|
||||
)..onActionClick((rule) => editEmailRule(rule)))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"@@last_modified": "2022-08-10T18:05:32.066682",
|
||||
"@@last_modified": "2022-08-11T11:23:27.430951",
|
||||
"initializing_data": "Initializing data...",
|
||||
"@initializing_data": {
|
||||
"type": "text",
|
||||
@@ -1844,7 +1844,7 @@
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
},
|
||||
"actionTitleRulesFilter": "Perform the following actions:",
|
||||
"actionTitleRulesFilter": "Perform the following action:",
|
||||
"@actionTitleRulesFilter": {
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
|
||||
@@ -1897,7 +1897,7 @@ class AppLocalizations {
|
||||
|
||||
String get actionTitleRulesFilter {
|
||||
return Intl.message(
|
||||
'Perform the following actions:',
|
||||
'Perform the following action:',
|
||||
name: 'actionTitleRulesFilter');
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import 'package:tmail_ui_user/features/home/presentation/home_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/home/presentation/home_view.dart';
|
||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart' deferred as identity_creator;
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_view.dart' deferred as rules_filter_creator;
|
||||
import 'package:tmail_ui_user/features/login/presentation/login_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/login_view.dart'
|
||||
if (dart.library.html) 'package:tmail_ui_user/features/login/presentation/login_view_web.dart' deferred as login;
|
||||
@@ -71,5 +73,12 @@ class AppPages {
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(identity_creator.loadLibrary, () => identity_creator.IdentityCreatorView()),
|
||||
binding: IdentityCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.RULES_FILTER_CREATOR,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(
|
||||
rules_filter_creator.loadLibrary,
|
||||
() => rules_filter_creator.RuleFilterCreatorView()),
|
||||
binding: RulesFilterCreatorBindings()),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ abstract class AppRoutes {
|
||||
static const MAILBOX_CREATOR = '/mailboxCreator';
|
||||
static const MANAGE_ACCOUNT = '$MAILBOX_DASHBOARD/manage_account';
|
||||
static const IDENTITY_CREATOR = '/identity_creator';
|
||||
static const RULES_FILTER_CREATOR = '/rules_filter_creator';
|
||||
}
|
||||
Reference in New Issue
Block a user