TF-1983 Perform create new rule from new folder
(cherry picked from commit 41279e19a05d2787e9ffd8618f832dab33c92f01)
This commit is contained in:
+20
-6
@@ -3,6 +3,7 @@ import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:rule_filter/rule_filter/tmail_rule.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/creator_action_type.dart';
|
||||
|
||||
@@ -12,13 +13,26 @@ class RulesFilterCreatorArguments with EquatableMixin {
|
||||
final CreatorActionType actionType;
|
||||
final TMailRule? tMailRule;
|
||||
final EmailAddress? emailAddress;
|
||||
final PresentationMailbox? mailboxDestination;
|
||||
|
||||
RulesFilterCreatorArguments(this.accountId, this.session, {
|
||||
this.actionType = CreatorActionType.create,
|
||||
this.tMailRule,
|
||||
this.emailAddress
|
||||
});
|
||||
RulesFilterCreatorArguments(
|
||||
this.accountId,
|
||||
this.session,
|
||||
{
|
||||
this.actionType = CreatorActionType.create,
|
||||
this.tMailRule,
|
||||
this.emailAddress,
|
||||
this.mailboxDestination,
|
||||
}
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [accountId, actionType, session, tMailRule, emailAddress];
|
||||
List<Object?> get props => [
|
||||
accountId,
|
||||
actionType,
|
||||
session,
|
||||
tMailRule,
|
||||
emailAddress,
|
||||
mailboxDestination,
|
||||
];
|
||||
}
|
||||
@@ -70,6 +70,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
TMailRule? _currentTMailRule;
|
||||
EmailAddress? _emailAddress;
|
||||
List<TMailRule>? _listEmailRule;
|
||||
PresentationMailbox? _mailboxDestination;
|
||||
|
||||
RulesFilterCreatorController(
|
||||
this._getAllMailboxInteractor,
|
||||
@@ -93,6 +94,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
_session = arguments!.session;
|
||||
_currentTMailRule = arguments!.tMailRule;
|
||||
_emailAddress = arguments!.emailAddress;
|
||||
_mailboxDestination = arguments!.mailboxDestination;
|
||||
actionType.value = arguments!.actionType;
|
||||
injectRuleFilterBindings(_session, _accountId);
|
||||
try {
|
||||
@@ -148,6 +150,9 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
_newRuleConditionValue = _emailAddress?.email;
|
||||
_setValueInputField(inputConditionValueController, _newRuleConditionValue ?? '');
|
||||
}
|
||||
if (_mailboxDestination != null) {
|
||||
mailboxSelected.value = _mailboxDestination;
|
||||
}
|
||||
break;
|
||||
case CreatorActionType.edit:
|
||||
if (_currentTMailRule != null) {
|
||||
|
||||
@@ -37,7 +37,11 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/das
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.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/usecases/create_new_email_rule_filter_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/network_connection/presentation/network_connection_controller.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/search/email/presentation/search_email_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
|
||||
@@ -67,7 +71,9 @@ import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_t
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/loading_more_status.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/search_status.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/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
@@ -88,6 +94,8 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
final SearchMoreEmailInteractor _searchMoreEmailInteractor;
|
||||
final GetEmailByIdInteractor _getEmailByIdInteractor;
|
||||
|
||||
CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
|
||||
|
||||
final listEmailDrag = <PresentationEmail>[].obs;
|
||||
bool _rangeSelectionMode = false;
|
||||
final openingEmail = RxBool(false);
|
||||
@@ -168,6 +176,8 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
} else if (success is GetEmailByIdSuccess) {
|
||||
openingEmail.value = false;
|
||||
_openEmailDetailView(success.email);
|
||||
} else if (success is CreateNewRuleFilterSuccess) {
|
||||
_createNewRuleFilterSuccess(success);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1011,5 +1021,47 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
!currentMailbox.isDefault;
|
||||
}
|
||||
|
||||
void goToCreateEmailRuleView() {}
|
||||
void goToCreateEmailRuleView() async {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
final session = mailboxDashBoardController.sessionCurrent;
|
||||
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
|
||||
if (accountId != null && session != null) {
|
||||
final arguments = RulesFilterCreatorArguments(
|
||||
accountId,
|
||||
session,
|
||||
mailboxDestination: currentMailbox
|
||||
);
|
||||
|
||||
final newRuleFilterRequest = PlatformInfo.isWeb
|
||||
? await DialogRouter.pushGeneralDialog(routeName: AppRoutes.rulesFilterCreator, arguments: arguments)
|
||||
: await push(AppRoutes.rulesFilterCreator, arguments: arguments);
|
||||
|
||||
if (newRuleFilterRequest is CreateNewEmailRuleFilterRequest) {
|
||||
_createNewRuleFilterAction(accountId, newRuleFilterRequest);
|
||||
}
|
||||
} else {
|
||||
logError('ThreadController::goToCreateEmailRuleView: Account or Session is NULL');
|
||||
}
|
||||
}
|
||||
|
||||
void _createNewRuleFilterAction(
|
||||
AccountId accountId,
|
||||
CreateNewEmailRuleFilterRequest ruleFilterRequest
|
||||
) async {
|
||||
_createNewEmailRuleFilterInteractor = getBinding<CreateNewEmailRuleFilterInteractor>();
|
||||
if (_createNewEmailRuleFilterInteractor != null) {
|
||||
consumeState(_createNewEmailRuleFilterInteractor!.execute(accountId, ruleFilterRequest));
|
||||
}
|
||||
}
|
||||
|
||||
void _createNewRuleFilterSuccess(CreateNewRuleFilterSuccess success) {
|
||||
if (success.newListRules.isNotEmpty == true &&
|
||||
currentOverlayContext != null &&
|
||||
currentContext != null) {
|
||||
_appToast.showToastSuccessMessage(
|
||||
currentOverlayContext!,
|
||||
AppLocalizations.of(currentContext!).newFilterWasCreated
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user