TF-1074 Handle go to path /rules_filter_creator
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
@@ -16,6 +15,9 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_crea
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_view.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/mailbox_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/model/new_mailbox_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||
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';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin ViewAsDialogActionMixin {
|
||||
@@ -113,7 +115,6 @@ mixin ViewAsDialogActionMixin {
|
||||
required IdentityCreatorArguments arguments,
|
||||
required Function(dynamic) onCreatedIdentity
|
||||
}) {
|
||||
log('ViewAsDialogActionMixin::showDialogIdentityCreator(): ');
|
||||
IdentityCreatorBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
@@ -136,4 +137,32 @@ mixin ViewAsDialogActionMixin {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void showDialogRuleFilterCreator({
|
||||
required BuildContext context,
|
||||
required RulesFilterCreatorArguments arguments,
|
||||
required Function(dynamic) onCreatedRuleFilter
|
||||
}) {
|
||||
RulesFilterCreatorBindings().dependencies();
|
||||
|
||||
showGeneralDialog(
|
||||
context: context,
|
||||
barrierDismissible: true,
|
||||
barrierLabel: '',
|
||||
barrierColor: Colors.black.withAlpha(24),
|
||||
pageBuilder: (context, animation, secondaryAnimation) {
|
||||
return RuleFilterCreatorView.fromArguments(
|
||||
arguments,
|
||||
onDismissCallback: () {
|
||||
RulesFilterCreatorBindings().dispose();
|
||||
popBack();
|
||||
},
|
||||
onCreatedRuleFilterCallback: (args) {
|
||||
RulesFilterCreatorBindings().dispose();
|
||||
popBack();
|
||||
|
||||
onCreatedRuleFilter.call(args);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -4,8 +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:flutter/foundation.dart';
|
||||
import 'package:core/utils/build_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -28,7 +27,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/w
|
||||
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/creator_action_type.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_bindings.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';
|
||||
@@ -47,8 +45,6 @@ class EmailRulesController extends BaseController {
|
||||
|
||||
final listEmailRule = <TMailRule>[].obs;
|
||||
|
||||
final rulesFilterCreatorArguments = Rxn<RulesFilterCreatorArguments>();
|
||||
|
||||
EmailRulesController(
|
||||
this._getAllRulesInteractor,
|
||||
this._deleteEmailRuleInteractor,
|
||||
@@ -82,21 +78,35 @@ class EmailRulesController extends BaseController {
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
void goToCreateNewRule() async {
|
||||
void goToCreateNewRule(BuildContext context) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
rulesFilterCreatorArguments.value = RulesFilterCreatorArguments(accountId);
|
||||
if(kIsWeb) {
|
||||
_openRulesFilterCreatorOverlay();
|
||||
final arguments = RulesFilterCreatorArguments(
|
||||
accountId,
|
||||
listEmailRule: listEmailRule);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogRuleFilterCreator(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onCreatedRuleFilter: (arguments) {
|
||||
if (arguments is CreateNewEmailRuleFilterRequest) {
|
||||
_createNewRuleFilterAction(accountId, arguments);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
push(
|
||||
AppRoutes.rulesFilterCreator,
|
||||
);
|
||||
final newRuleFilterRequest = await push(
|
||||
AppRoutes.rulesFilterCreator,
|
||||
arguments: arguments);
|
||||
|
||||
if (newRuleFilterRequest is CreateNewEmailRuleFilterRequest) {
|
||||
_createNewRuleFilterAction(accountId, newRuleFilterRequest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void createNewRuleFilterAction(
|
||||
void _createNewRuleFilterAction(
|
||||
AccountId accountId,
|
||||
CreateNewEmailRuleFilterRequest ruleFilterRequest
|
||||
) async {
|
||||
@@ -113,31 +123,42 @@ class EmailRulesController extends BaseController {
|
||||
message: AppLocalizations.of(currentContext!).newFilterWasCreated,
|
||||
icon: _imagePaths.icSelected);
|
||||
}
|
||||
log('EmailRulesController::_createNewRuleFilterSuccess(): ${success.newListRules}');
|
||||
listEmailRule.value = success.newListRules;
|
||||
listEmailRule.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void editEmailRule(TMailRule rule) async {
|
||||
void editEmailRule(BuildContext context, TMailRule rule) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
if (accountId != null) {
|
||||
rulesFilterCreatorArguments.value = RulesFilterCreatorArguments(
|
||||
final arguments = RulesFilterCreatorArguments(
|
||||
accountId,
|
||||
actionType: CreatorActionType.edit,
|
||||
tMailRule: rule,
|
||||
);
|
||||
if(kIsWeb) {
|
||||
_openRulesFilterCreatorOverlay();
|
||||
listEmailRule: listEmailRule);
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
showDialogRuleFilterCreator(
|
||||
context: context,
|
||||
arguments: arguments,
|
||||
onCreatedRuleFilter: (arguments) {
|
||||
if (arguments is EditEmailRuleFilterRequest) {
|
||||
_editEmailRuleFilterAction(accountId, arguments);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
push(
|
||||
AppRoutes.rulesFilterCreator,
|
||||
);
|
||||
final newRuleFilterRequest = await push(
|
||||
AppRoutes.rulesFilterCreator,
|
||||
arguments: arguments);
|
||||
|
||||
if (newRuleFilterRequest is EditEmailRuleFilterRequest) {
|
||||
_editEmailRuleFilterAction(accountId, newRuleFilterRequest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void editEmailRuleFilterAction(
|
||||
void _editEmailRuleFilterAction(
|
||||
AccountId accountId,
|
||||
EditEmailRuleFilterRequest ruleFilterRequest
|
||||
) {
|
||||
@@ -152,7 +173,6 @@ class EmailRulesController extends BaseController {
|
||||
message: AppLocalizations.of(currentContext!).yourFilterHasBeenUpdated,
|
||||
icon: _imagePaths.icSelected);
|
||||
}
|
||||
log('EmailRulesController::_editEmailRuleFilterSuccess(): ${success.listRulesUpdated}');
|
||||
listEmailRule.value = success.listRulesUpdated;
|
||||
listEmailRule.refresh();
|
||||
}
|
||||
@@ -225,11 +245,6 @@ class EmailRulesController extends BaseController {
|
||||
consumeState(_getAllRulesInteractor.execute(_accountDashBoardController.accountId.value!));
|
||||
}
|
||||
|
||||
void _openRulesFilterCreatorOverlay() {
|
||||
RulesFilterCreatorBindings().dependencies();
|
||||
_accountDashBoardController.rulesFilterCreatorIsActive.toggle();
|
||||
}
|
||||
|
||||
void openEditRuleMenuAction(BuildContext context, TMailRule rule) {
|
||||
openContextMenuAction(
|
||||
context,
|
||||
@@ -267,7 +282,7 @@ class EmailRulesController extends BaseController {
|
||||
iconRightPadding: const EdgeInsets.only(right: 12))
|
||||
..onActionClick((rule) {
|
||||
popBack();
|
||||
editEmailRule(rule);
|
||||
editEmailRule(context, rule);
|
||||
}))
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class EmailRulesView extends GetWidget<EmailRulesController> with AppLoaderMixin
|
||||
EmailRulesHeaderWidget(
|
||||
imagePaths: _imagePaths,
|
||||
responsiveUtils: _responsiveUtils,
|
||||
createRule: () => controller.goToCreateNewRule(),
|
||||
createRule: () => controller.goToCreateNewRule(context),
|
||||
),
|
||||
SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16),
|
||||
_buildLoadingView(),
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ class EmailRulesItemWidget extends StatelessWidget {
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
onTap: () {
|
||||
_emailRuleController.editEmailRule(rule);
|
||||
_emailRuleController.editEmailRule(context, rule);
|
||||
}),
|
||||
if (!_responsiveUtils.isMobile(context))
|
||||
buildIconWeb(
|
||||
|
||||
@@ -53,7 +53,6 @@ class ManageAccountDashBoardController extends ReloadableController {
|
||||
final vacationResponse = Rxn<VacationResponse>();
|
||||
|
||||
final emailsForwardCreatorIsActive = false.obs;
|
||||
final rulesFilterCreatorIsActive = false.obs;
|
||||
|
||||
ManageAccountDashBoardController(
|
||||
LogoutOidcInteractor logoutOidcInteractor,
|
||||
|
||||
@@ -15,7 +15,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/profiles_view.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_view.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_view.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
@@ -128,8 +127,6 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
|
||||
),
|
||||
if(controller.emailsForwardCreatorIsActive.isTrue)
|
||||
EmailsForwardCreatorView(),
|
||||
if(controller.rulesFilterCreatorIsActive.isTrue)
|
||||
RuleFilterCreatorView(),
|
||||
]
|
||||
));
|
||||
}
|
||||
|
||||
+3
-1
@@ -8,10 +8,12 @@ class RulesFilterCreatorArguments with EquatableMixin {
|
||||
final AccountId accountId;
|
||||
final CreatorActionType actionType;
|
||||
final TMailRule? tMailRule;
|
||||
final List<TMailRule>? listEmailRule;
|
||||
|
||||
RulesFilterCreatorArguments(this.accountId, {
|
||||
this.actionType = CreatorActionType.create,
|
||||
this.tMailRule
|
||||
this.tMailRule,
|
||||
this.listEmailRule
|
||||
});
|
||||
|
||||
@override
|
||||
|
||||
@@ -72,4 +72,8 @@ class RulesFilterCreatorBindings extends BaseBindings {
|
||||
Get.find<StateDataSource>(),
|
||||
));
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
Get.delete<RulesFilterCreatorController>();
|
||||
}
|
||||
}
|
||||
+80
-69
@@ -1,10 +1,14 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/presentation/utils/app_toast.dart';
|
||||
import 'package:core/utils/build_utils.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:rule_filter/rule_filter/rule_action.dart';
|
||||
import 'package:rule_filter/rule_filter/rule_append_in.dart';
|
||||
import 'package:rule_filter/rule_filter/rule_condition.dart' as rule_condition;
|
||||
@@ -21,14 +25,15 @@ import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/v
|
||||
import 'package:tmail_ui_user/features/manage_account/data/extensions/list_tmail_rule_extensions.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/model/edit_email_rule_filter_request.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/manage_account_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/creator_action_type.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/email_rule_filter_action.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/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
typedef OnCreatedRuleFilterCallback = Function(dynamic arguments);
|
||||
|
||||
class RulesFilterCreatorController extends BaseMailboxController {
|
||||
|
||||
final _appToast = Get.find<AppToast>();
|
||||
@@ -43,54 +48,53 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
final ruleConditionComparatorSelected = Rxn<rule_condition.Comparator>();
|
||||
final emailRuleFilterActionSelected = Rxn<EmailRuleFilterAction>();
|
||||
final mailboxSelected = Rxn<PresentationMailbox>();
|
||||
final actionType = CreatorActionType.create.obs;
|
||||
|
||||
final inputRuleNameController = TextEditingController();
|
||||
final inputConditionValueController = TextEditingController();
|
||||
final inputRuleNameFocusNode = FocusNode();
|
||||
final inputRuleConditionFocusNode = FocusNode();
|
||||
|
||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
final _emailRulesController = Get.find<EmailRulesController>();
|
||||
|
||||
late Worker rulesFilterCreatorIsActiveWorker;
|
||||
|
||||
get actionType => _emailRulesController.rulesFilterCreatorArguments.value!.actionType;
|
||||
|
||||
get _accountId => _emailRulesController.rulesFilterCreatorArguments.value!.accountId;
|
||||
|
||||
get _currentTMailRule => _emailRulesController.rulesFilterCreatorArguments.value!.tMailRule;
|
||||
TextEditingController? inputRuleNameController;
|
||||
TextEditingController? inputConditionValueController;
|
||||
FocusNode? inputRuleNameFocusNode;
|
||||
FocusNode? inputRuleConditionFocusNode;
|
||||
|
||||
String? _newRuleName;
|
||||
String? _newRuleConditionValue;
|
||||
|
||||
RulesFilterCreatorArguments? arguments;
|
||||
OnCreatedRuleFilterCallback? onCreatedRuleFilterCallback;
|
||||
VoidCallback? onDismissRuleFilterCreator;
|
||||
AccountId? _accountId;
|
||||
TMailRule? _currentTMailRule;
|
||||
List<TMailRule>? _listEmailRule;
|
||||
|
||||
RulesFilterCreatorController(
|
||||
this._verifyNameInteractor,
|
||||
this._getAllMailboxInteractor,
|
||||
treeBuilder
|
||||
) : super(treeBuilder);
|
||||
|
||||
void _initWorker() {
|
||||
rulesFilterCreatorIsActiveWorker = ever(_accountDashBoardController.rulesFilterCreatorIsActive, (rulesFilterCreatorIsActive) {
|
||||
if (rulesFilterCreatorIsActive == true) {
|
||||
_setUpDefaultValueRuleFilter();
|
||||
}
|
||||
});
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
inputRuleNameController = TextEditingController();
|
||||
inputConditionValueController = TextEditingController();
|
||||
inputRuleNameFocusNode = FocusNode();
|
||||
inputRuleConditionFocusNode = FocusNode();
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
_initWorker();
|
||||
_setUpDefaultValueRuleFilter();
|
||||
super.onReady();
|
||||
if (arguments != null) {
|
||||
_accountId = arguments!.accountId;
|
||||
_currentTMailRule = arguments!.tMailRule;
|
||||
_listEmailRule = arguments!.listEmailRule;
|
||||
actionType.value = arguments!.actionType;
|
||||
_setUpDefaultValueRuleFilter();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
inputRuleNameFocusNode.dispose();
|
||||
inputRuleConditionFocusNode.dispose();
|
||||
inputRuleNameController.dispose();
|
||||
inputConditionValueController.dispose();
|
||||
rulesFilterCreatorIsActiveWorker.dispose();
|
||||
_disposeWidget();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@@ -114,7 +118,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
void onError(error) {}
|
||||
|
||||
void _setUpDefaultValueRuleFilter() {
|
||||
switch(actionType) {
|
||||
switch(actionType.value) {
|
||||
case CreatorActionType.create:
|
||||
ruleConditionFieldSelected.value = rule_condition.Field.from;
|
||||
ruleConditionComparatorSelected.value = rule_condition.Comparator.contains;
|
||||
@@ -133,11 +137,11 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
}
|
||||
break;
|
||||
}
|
||||
inputRuleNameFocusNode.requestFocus();
|
||||
inputRuleNameFocusNode?.requestFocus();
|
||||
}
|
||||
|
||||
void _setValueInputField(TextEditingController controller, String value) {
|
||||
controller.value = controller.value.copyWith(
|
||||
void _setValueInputField(TextEditingController? controller, String value) {
|
||||
controller?.value = controller.value.copyWith(
|
||||
text: value,
|
||||
selection: TextSelection.collapsed(offset: value.length));
|
||||
}
|
||||
@@ -227,23 +231,20 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
|
||||
final errorName = _getErrorStringByInputValue(context, _newRuleName);
|
||||
if (errorName?.isNotEmpty == true) {
|
||||
log('RulesFilterCreatorController::createNewRuleFilter(): errorName: $errorName');
|
||||
errorRuleName.value = errorName;
|
||||
inputRuleNameFocusNode.requestFocus();
|
||||
inputRuleNameFocusNode?.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
final errorCondition = _getErrorStringByInputValue(context, _newRuleConditionValue);
|
||||
if (errorCondition?.isNotEmpty == true) {
|
||||
log('RulesFilterCreatorController::createNewRuleFilter(): errorCondition: $errorCondition');
|
||||
errorRuleConditionValue.value = errorCondition;
|
||||
inputRuleConditionFocusNode.requestFocus();
|
||||
inputRuleConditionFocusNode?.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
final errorAction = _getErrorStringByInputValue(context, mailboxSelected.value?.name?.name);
|
||||
if (errorAction?.isNotEmpty == true) {
|
||||
log('RulesFilterCreatorController::createNewRuleFilter(): errorAction: $errorAction');
|
||||
errorRuleActionValue.value = errorAction;
|
||||
_appToast.showToastWithIcon(
|
||||
currentOverlayContext!,
|
||||
@@ -276,44 +277,54 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
||||
value: _newRuleConditionValue!
|
||||
));
|
||||
|
||||
log('RulesFilterCreatorController::newTMailRule(): $newTMailRule');
|
||||
if (actionType.value == CreatorActionType.create) {
|
||||
final ruleFilterRequest = CreateNewEmailRuleFilterRequest(
|
||||
_listEmailRule ?? [],
|
||||
newTMailRule);
|
||||
|
||||
if(actionType == CreatorActionType.create) {
|
||||
_emailRulesController.createNewRuleFilterAction(
|
||||
_accountId,
|
||||
CreateNewEmailRuleFilterRequest(
|
||||
_emailRulesController.listEmailRule,
|
||||
newTMailRule,
|
||||
),
|
||||
);
|
||||
if (BuildUtils.isWeb) {
|
||||
_disposeWidget();
|
||||
onCreatedRuleFilterCallback?.call(ruleFilterRequest);
|
||||
} else {
|
||||
popBack(result: ruleFilterRequest);
|
||||
}
|
||||
} else {
|
||||
_emailRulesController.editEmailRuleFilterAction(
|
||||
_accountId,
|
||||
EditEmailRuleFilterRequest(
|
||||
_emailRulesController.listEmailRule.withIds,
|
||||
newTMailRule,
|
||||
),
|
||||
);
|
||||
}
|
||||
final ruleFilterRequest = EditEmailRuleFilterRequest(
|
||||
_listEmailRule?.withIds ?? [],
|
||||
newTMailRule);
|
||||
|
||||
_clearAll();
|
||||
if(kIsWeb) {
|
||||
_accountDashBoardController.rulesFilterCreatorIsActive.toggle();
|
||||
} else {
|
||||
popBack();
|
||||
if (BuildUtils.isWeb) {
|
||||
_disposeWidget();
|
||||
onCreatedRuleFilterCallback?.call(ruleFilterRequest);
|
||||
} else {
|
||||
popBack(result: ruleFilterRequest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _clearAll() {
|
||||
inputRuleNameController.clear();
|
||||
inputConditionValueController.clear();
|
||||
inputRuleNameController?.clear();
|
||||
inputConditionValueController?.clear();
|
||||
}
|
||||
|
||||
void _disposeWidget() {
|
||||
inputRuleNameFocusNode?.dispose();
|
||||
inputRuleNameFocusNode = null;
|
||||
inputRuleConditionFocusNode?.dispose();
|
||||
inputRuleConditionFocusNode = null;
|
||||
inputRuleNameController?.dispose();
|
||||
inputRuleNameController = null;
|
||||
inputConditionValueController?.dispose();
|
||||
inputConditionValueController = null;
|
||||
}
|
||||
|
||||
void closeView(BuildContext context) {
|
||||
_clearAll();
|
||||
FocusScope.of(context).unfocus();
|
||||
if(kIsWeb) {
|
||||
_clearAll();
|
||||
_accountDashBoardController.rulesFilterCreatorIsActive.toggle();
|
||||
|
||||
if (BuildUtils.isWeb) {
|
||||
_disposeWidget();
|
||||
onDismissRuleFilterCreator?.call();
|
||||
} else {
|
||||
popBack();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:rule_filter/rule_filter/rule_condition.dart' as rule_condition;
|
||||
import 'package:tmail_ui_user/features/base/widget/drop_down_button_widget.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/extensions/rule_condition_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/email_rule_filter_action.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/widgets/rule_action_bottom_sheet_action_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/widgets/rule_condition_comparator_bottom_sheet_action_tile_builder.dart';
|
||||
@@ -21,14 +22,32 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
RuleFilterCreatorView({Key? key}) : super(key: key);
|
||||
@override
|
||||
final controller = Get.find<RulesFilterCreatorController>();
|
||||
|
||||
RuleFilterCreatorView({Key? key}) : super(key: key) {
|
||||
controller.arguments = Get.arguments;
|
||||
}
|
||||
|
||||
RuleFilterCreatorView.fromArguments(
|
||||
RulesFilterCreatorArguments arguments, {
|
||||
Key? key,
|
||||
OnCreatedRuleFilterCallback? onCreatedRuleFilterCallback,
|
||||
VoidCallback? onDismissCallback
|
||||
}) : super(key: key) {
|
||||
controller.arguments = arguments;
|
||||
controller.onCreatedRuleFilterCallback = onCreatedRuleFilterCallback;
|
||||
controller.onDismissRuleFilterCreator = onDismissCallback;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ResponsiveWidget(
|
||||
responsiveUtils: _responsiveUtils,
|
||||
mobile: Scaffold(
|
||||
backgroundColor: Colors.black38,
|
||||
backgroundColor: BuildUtils.isWeb
|
||||
? Colors.black.withAlpha(24)
|
||||
: Colors.black38,
|
||||
body: GestureDetector(
|
||||
onTap: () => FocusScope.of(context).unfocus(),
|
||||
child: SafeArea(
|
||||
@@ -53,7 +72,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
)
|
||||
),
|
||||
tablet: Scaffold(
|
||||
backgroundColor: Colors.black38,
|
||||
backgroundColor: Colors.black.withAlpha(24),
|
||||
body: GestureDetector(
|
||||
onTap: () => FocusScope.of(context).unfocus(),
|
||||
child: Align(alignment: Alignment.bottomCenter, child: Container(
|
||||
@@ -75,7 +94,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
)
|
||||
),
|
||||
desktop: Scaffold(
|
||||
backgroundColor: Colors.black38,
|
||||
backgroundColor: Colors.black.withAlpha(24),
|
||||
body: GestureDetector(
|
||||
onTap: () => FocusScope.of(context).unfocus(),
|
||||
child: Align(alignment: Alignment.center, child: Card(
|
||||
@@ -107,7 +126,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
alignment: Alignment.center,
|
||||
child: Obx(() => Text(
|
||||
controller.actionType.getTitle(context),
|
||||
controller.actionType.value.getTitle(context),
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20,
|
||||
@@ -237,7 +256,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
onTap: () => controller.closeView(context)),
|
||||
const SizedBox(width: 12),
|
||||
Obx(() => buildTextButton(
|
||||
controller.actionType.getActionName(context),
|
||||
controller.actionType.value.getActionName(context),
|
||||
width: 128,
|
||||
height: 44,
|
||||
backgroundColor: AppColor.colorTextButton,
|
||||
@@ -266,7 +285,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
alignment: Alignment.center,
|
||||
child: Obx(() => Text(
|
||||
controller.actionType.getTitle(context),
|
||||
controller.actionType.value.getTitle(context),
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20,
|
||||
@@ -396,7 +415,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
onTap: () => controller.closeView(context))),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Obx(() => buildTextButton(
|
||||
controller.actionType.getActionName(context),
|
||||
controller.actionType.value.getActionName(context),
|
||||
width: 128,
|
||||
height: 44,
|
||||
backgroundColor: AppColor.colorTextButton,
|
||||
@@ -425,7 +444,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
padding: const EdgeInsets.only(top: 16),
|
||||
alignment: Alignment.center,
|
||||
child: Obx(() => Text(
|
||||
controller.actionType.getTitle(context),
|
||||
controller.actionType.value.getTitle(context),
|
||||
style: const TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20,
|
||||
@@ -585,7 +604,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
||||
onTap: () => controller.closeView(context))),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Obx(() => buildTextButton(
|
||||
controller.actionType.getActionName(context),
|
||||
controller.actionType.value.getActionName(context),
|
||||
width: 128,
|
||||
height: 44,
|
||||
backgroundColor: AppColor.colorTextButton,
|
||||
|
||||
@@ -57,6 +57,11 @@ class AppPages {
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(identity_creator.loadLibrary, () => identity_creator.IdentityCreatorView()),
|
||||
binding: IdentityCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.rulesFilterCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(rules_filter_creator.loadLibrary, () => rules_filter_creator.RuleFilterCreatorView()),
|
||||
binding: RulesFilterCreatorBindings()),
|
||||
];
|
||||
|
||||
static final pages = [
|
||||
@@ -81,12 +86,6 @@ class AppPages {
|
||||
page: () => DeferredWidget(manage_account_dashboard.loadLibrary,
|
||||
() => manage_account_dashboard.ManageAccountDashBoardView()),
|
||||
binding: ManageAccountDashBoardBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.rulesFilterCreator,
|
||||
opaque: false,
|
||||
page: () => DeferredWidget(rules_filter_creator.loadLibrary,
|
||||
() => rules_filter_creator.RuleFilterCreatorView()),
|
||||
binding: RulesFilterCreatorBindings()),
|
||||
GetPage(
|
||||
name: AppRoutes.emailsForwardCreator,
|
||||
opaque: false,
|
||||
|
||||
@@ -10,6 +10,6 @@ abstract class AppRoutes {
|
||||
static const mailboxCreator = '/mailbox_creator';
|
||||
static const contact = '/contact';
|
||||
static const identityCreator = '/identity_creator';
|
||||
static const rulesFilterCreator = '$settings/rules_filter_creator';
|
||||
static const rulesFilterCreator = '/rules_filter_creator';
|
||||
static const emailsForwardCreator = '$settings/emails_forward_creator';
|
||||
}
|
||||
Reference in New Issue
Block a user