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) {
|
Widget _buildCancelButton(BuildContext context) {
|
||||||
if (_mailboxAction == MailboxActions.moveEmail ||
|
if (_mailboxAction == MailboxActions.moveEmail ||
|
||||||
_mailboxAction == MailboxActions.move ||
|
_mailboxAction == MailboxActions.move ||
|
||||||
_mailboxAction == MailboxActions.selectFromRuleFilter ||
|
_mailboxAction == MailboxActions.selectForRuleAction ||
|
||||||
_mailboxAction == MailboxActions.select) {
|
_mailboxAction == MailboxActions.select) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.only(right: 12),
|
padding: const EdgeInsets.only(right: 12),
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ enum MailboxActions {
|
|||||||
rename,
|
rename,
|
||||||
move,
|
move,
|
||||||
markAsRead,
|
markAsRead,
|
||||||
selectFromRuleFilter,
|
selectForRuleAction,
|
||||||
}
|
}
|
||||||
|
|
||||||
extension MailboxActionsExtension on MailboxActions {
|
extension MailboxActionsExtension on MailboxActions {
|
||||||
@@ -24,7 +24,7 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
case MailboxActions.move:
|
case MailboxActions.move:
|
||||||
return AppLocalizations.of(context).moveTo;
|
return AppLocalizations.of(context).moveTo;
|
||||||
case MailboxActions.select:
|
case MailboxActions.select:
|
||||||
case MailboxActions.selectFromRuleFilter:
|
case MailboxActions.selectForRuleAction:
|
||||||
return AppLocalizations.of(context).selectMailbox;
|
return AppLocalizations.of(context).selectMailbox;
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
@@ -84,7 +84,7 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
case MailboxActions.moveEmail:
|
case MailboxActions.moveEmail:
|
||||||
case MailboxActions.move:
|
case MailboxActions.move:
|
||||||
case MailboxActions.select:
|
case MailboxActions.select:
|
||||||
case MailboxActions.selectFromRuleFilter:
|
case MailboxActions.selectForRuleAction:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -107,7 +107,7 @@ extension MailboxActionsExtension on MailboxActions {
|
|||||||
case MailboxActions.moveEmail:
|
case MailboxActions.moveEmail:
|
||||||
case MailboxActions.move:
|
case MailboxActions.move:
|
||||||
case MailboxActions.select:
|
case MailboxActions.select:
|
||||||
case MailboxActions.selectFromRuleFilter:
|
case MailboxActions.selectForRuleAction:
|
||||||
return false;
|
return false;
|
||||||
default:
|
default:
|
||||||
return true;
|
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/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/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/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/domain/usecases/get_all_rules_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/email_rules_controller.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.lazyPut(() => EmailRulesController(
|
||||||
Get.find<GetAllRulesInteractor>(),
|
Get.find<GetAllRulesInteractor>(),
|
||||||
Get.find<DeleteEmailRuleInteractor>(),
|
Get.find<DeleteEmailRuleInteractor>(),
|
||||||
|
Get.find<CreateNewEmailRuleFilterInteractor>(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,6 +27,7 @@ class EmailRulesBindings extends BaseBindings {
|
|||||||
void bindingsInteractor() {
|
void bindingsInteractor() {
|
||||||
Get.lazyPut(() => GetAllRulesInteractor(Get.find<ManageAccountRepository>()));
|
Get.lazyPut(() => GetAllRulesInteractor(Get.find<ManageAccountRepository>()));
|
||||||
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<ManageAccountRepository>()));
|
Get.lazyPut(() => DeleteEmailRuleInteractor(Get.find<ManageAccountRepository>()));
|
||||||
|
Get.lazyPut(() => CreateNewEmailRuleFilterInteractor(Get.find<ManageAccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -3,27 +3,40 @@ import 'package:core/presentation/resources/image_paths.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:get/get.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:rule_filter/rule_filter/tmail_rule.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.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/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/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/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/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/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/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/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/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.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 {
|
class EmailRulesController extends BaseController {
|
||||||
final listEmailRule = <TMailRule>[].obs;
|
|
||||||
final _accountDashBoardController =
|
|
||||||
Get.find<ManageAccountDashBoardController>();
|
|
||||||
final GetAllRulesInteractor _getAllRulesInteractor;
|
final GetAllRulesInteractor _getAllRulesInteractor;
|
||||||
final DeleteEmailRuleInteractor _deleteEmailRuleInteractor;
|
final DeleteEmailRuleInteractor _deleteEmailRuleInteractor;
|
||||||
|
final CreateNewEmailRuleFilterInteractor _createNewEmailRuleFilterInteractor;
|
||||||
|
|
||||||
|
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
|
|
||||||
EmailRulesController(this._getAllRulesInteractor, this._deleteEmailRuleInteractor);
|
final listEmailRule = <TMailRule>[].obs;
|
||||||
|
|
||||||
|
EmailRulesController(
|
||||||
|
this._getAllRulesInteractor,
|
||||||
|
this._deleteEmailRuleInteractor,
|
||||||
|
this._createNewEmailRuleFilterInteractor
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onDone() {
|
void onDone() {
|
||||||
@@ -32,12 +45,13 @@ class EmailRulesController extends BaseController {
|
|||||||
if (success.rules?.isNotEmpty == true) {
|
if (success.rules?.isNotEmpty == true) {
|
||||||
listEmailRule.addAll(success.rules!);
|
listEmailRule.addAll(success.rules!);
|
||||||
}
|
}
|
||||||
}
|
} else if (success is DeleteEmailRuleSuccess) {
|
||||||
if (success is DeleteEmailRuleSuccess) {
|
|
||||||
if (success.rules?.isNotEmpty == true) {
|
if (success.rules?.isNotEmpty == true) {
|
||||||
listEmailRule.clear();
|
listEmailRule.clear();
|
||||||
listEmailRule.addAll(success.rules!);
|
listEmailRule.addAll(success.rules!);
|
||||||
}
|
}
|
||||||
|
} else if (success is CreateNewRuleFilterSuccess) {
|
||||||
|
_createNewRuleFilterSuccess(success);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -51,8 +65,38 @@ class EmailRulesController extends BaseController {
|
|||||||
super.onInit();
|
super.onInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void goToCreateNewRule() {
|
void goToCreateNewRule() async {
|
||||||
//TODO: goToCreateNewRule
|
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) {
|
void editEmailRule(TMailRule rule) {
|
||||||
|
|||||||
@@ -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": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -1844,7 +1844,7 @@
|
|||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"actionTitleRulesFilter": "Perform the following actions:",
|
"actionTitleRulesFilter": "Perform the following action:",
|
||||||
"@actionTitleRulesFilter": {
|
"@actionTitleRulesFilter": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
|
|||||||
@@ -1897,7 +1897,7 @@ class AppLocalizations {
|
|||||||
|
|
||||||
String get actionTitleRulesFilter {
|
String get actionTitleRulesFilter {
|
||||||
return Intl.message(
|
return Intl.message(
|
||||||
'Perform the following actions:',
|
'Perform the following action:',
|
||||||
name: 'actionTitleRulesFilter');
|
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/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_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/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_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/login_view.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;
|
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,
|
opaque: false,
|
||||||
page: () => DeferredWidget(identity_creator.loadLibrary, () => identity_creator.IdentityCreatorView()),
|
page: () => DeferredWidget(identity_creator.loadLibrary, () => identity_creator.IdentityCreatorView()),
|
||||||
binding: IdentityCreatorBindings()),
|
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 MAILBOX_CREATOR = '/mailboxCreator';
|
||||||
static const MANAGE_ACCOUNT = '$MAILBOX_DASHBOARD/manage_account';
|
static const MANAGE_ACCOUNT = '$MAILBOX_DASHBOARD/manage_account';
|
||||||
static const IDENTITY_CREATOR = '/identity_creator';
|
static const IDENTITY_CREATOR = '/identity_creator';
|
||||||
|
static const RULES_FILTER_CREATOR = '/rules_filter_creator';
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user