Fix MarkAsSpam not displayed when edit rule filter
This commit is contained in:
+5
-3
@@ -14,7 +14,7 @@ abstract class RuleFilterActionArguments with EquatableMixin {
|
|||||||
case EmailRuleFilterAction.maskAsSeen:
|
case EmailRuleFilterAction.maskAsSeen:
|
||||||
return MarkAsSeenActionArguments();
|
return MarkAsSeenActionArguments();
|
||||||
case EmailRuleFilterAction.markAsSpam:
|
case EmailRuleFilterAction.markAsSpam:
|
||||||
return MarAsSpamActionArguments();
|
return MarkAsSpamActionArguments();
|
||||||
case EmailRuleFilterAction.forwardTo:
|
case EmailRuleFilterAction.forwardTo:
|
||||||
return ForwardActionArguments();
|
return ForwardActionArguments();
|
||||||
case EmailRuleFilterAction.moveMessage:
|
case EmailRuleFilterAction.moveMessage:
|
||||||
@@ -28,6 +28,8 @@ abstract class RuleFilterActionArguments with EquatableMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
factory RuleFilterActionArguments.emptyAction() => EmptyRuleFilterActionArguments();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [
|
List<Object?> get props => [
|
||||||
action,
|
action,
|
||||||
@@ -55,8 +57,8 @@ class MarkAsSeenActionArguments extends RuleFilterActionArguments {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class MarAsSpamActionArguments extends RuleFilterActionArguments {
|
class MarkAsSpamActionArguments extends RuleFilterActionArguments {
|
||||||
MarAsSpamActionArguments() : super(
|
MarkAsSpamActionArguments() : super(
|
||||||
action: EmailRuleFilterAction.markAsSpam,
|
action: EmailRuleFilterAction.markAsSpam,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+133
-102
@@ -9,7 +9,6 @@ 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/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:rule_filter/rule_filter/rule_action.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_append_in.dart';
|
||||||
@@ -43,7 +42,6 @@ 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/dialog_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
|
|
||||||
class RulesFilterCreatorController extends BaseMailboxController {
|
class RulesFilterCreatorController extends BaseMailboxController {
|
||||||
|
|
||||||
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
final GetAllMailboxInteractor _getAllMailboxInteractor;
|
||||||
@@ -88,14 +86,12 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
log('RulesFilterCreatorController::onInit():arguments: ${Get.arguments}');
|
|
||||||
arguments = Get.arguments;
|
arguments = Get.arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
log('RulesFilterCreatorController::onReady():');
|
|
||||||
if (arguments != null) {
|
if (arguments != null) {
|
||||||
_accountId = arguments!.accountId;
|
_accountId = arguments!.accountId;
|
||||||
_session = arguments!.session;
|
_session = arguments!.session;
|
||||||
@@ -104,19 +100,14 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
_mailboxDestination = arguments!.mailboxDestination;
|
_mailboxDestination = arguments!.mailboxDestination;
|
||||||
actionType.value = arguments!.actionType;
|
actionType.value = arguments!.actionType;
|
||||||
injectRuleFilterBindings(_session, _accountId);
|
injectRuleFilterBindings(_session, _accountId);
|
||||||
try {
|
|
||||||
_getAllRulesInteractor = Get.find<GetAllRulesInteractor>();
|
|
||||||
} catch (e) {
|
|
||||||
logError('RulesFilterCreatorController::onInit(): ${e.toString()}');
|
|
||||||
}
|
|
||||||
_setUpDefaultValueRuleFilter();
|
_setUpDefaultValueRuleFilter();
|
||||||
_getAllRules();
|
_getAllRules();
|
||||||
|
_getAllMailboxAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
log('RulesFilterCreatorController::onClose():');
|
|
||||||
inputRuleNameFocusNode.dispose();
|
inputRuleNameFocusNode.dispose();
|
||||||
inputRuleNameController.dispose();
|
inputRuleNameController.dispose();
|
||||||
for (var ruleConditionValueArguments in listRuleConditionValueArguments) {
|
for (var ruleConditionValueArguments in listRuleConditionValueArguments) {
|
||||||
@@ -133,7 +124,6 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
super.handleSuccessViewState(success);
|
super.handleSuccessViewState(success);
|
||||||
if (success is GetAllMailboxSuccess) {
|
if (success is GetAllMailboxSuccess) {
|
||||||
await buildTree(success.mailboxList);
|
await buildTree(success.mailboxList);
|
||||||
_setUpMailboxSelected();
|
|
||||||
if (currentContext != null) {
|
if (currentContext != null) {
|
||||||
await syncAllMailboxWithDisplayName(currentContext!);
|
await syncAllMailboxWithDisplayName(currentContext!);
|
||||||
}
|
}
|
||||||
@@ -145,7 +135,18 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onDone() {
|
||||||
|
viewState.value.fold((failure) => null, (success) {
|
||||||
|
if (success is GetAllMailboxSuccess) {
|
||||||
|
_setUpRuleFilterActions();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void _getAllRules() {
|
void _getAllRules() {
|
||||||
|
_getAllRulesInteractor = getBinding<GetAllRulesInteractor>();
|
||||||
|
|
||||||
if (_accountId != null && _getAllRulesInteractor != null) {
|
if (_accountId != null && _getAllRulesInteractor != null) {
|
||||||
consumeState(_getAllRulesInteractor!.execute(_accountId!));
|
consumeState(_getAllRulesInteractor!.execute(_accountId!));
|
||||||
}
|
}
|
||||||
@@ -168,8 +169,6 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
);
|
);
|
||||||
listRuleConditionValueArguments.add(newRuleConditionValueArguments);
|
listRuleConditionValueArguments.add(newRuleConditionValueArguments);
|
||||||
isShowAddAction.value = true;
|
isShowAddAction.value = true;
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(null);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
if (_emailAddress != null) {
|
if (_emailAddress != null) {
|
||||||
RuleCondition firstRuleCondition = RuleCondition(
|
RuleCondition firstRuleCondition = RuleCondition(
|
||||||
field: rule_condition.Field.from,
|
field: rule_condition.Field.from,
|
||||||
@@ -184,16 +183,25 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (_mailboxDestination != null) {
|
if (_mailboxDestination != null) {
|
||||||
mailboxSelected.value = _mailboxDestination;
|
if (_mailboxDestination!.isSpam) {
|
||||||
|
listEmailRuleFilterActionSelected.add(MarkAsSpamActionArguments());
|
||||||
|
} else {
|
||||||
|
mailboxSelected.value = _mailboxDestination;
|
||||||
|
listEmailRuleFilterActionSelected.add(
|
||||||
|
MoveMessageActionArguments(mailbox: _mailboxDestination)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
listEmailRuleFilterActionSelected.add(RuleFilterActionArguments.emptyAction());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CreatorActionType.edit:
|
case CreatorActionType.edit:
|
||||||
if (_currentTMailRule != null) {
|
if (_currentTMailRule == null) {
|
||||||
RuleConditionGroup currentRule = RuleConditionGroup(
|
return;
|
||||||
conditionCombiner: _currentTMailRule!.conditionGroup!.conditionCombiner,
|
}
|
||||||
conditions: _currentTMailRule!.conditionGroup!.conditions,
|
|
||||||
);
|
if (_currentTMailRule!.conditionGroup?.conditions.isNotEmpty == true) {
|
||||||
for (var condition in currentRule.conditions) {
|
for (var condition in _currentTMailRule!.conditionGroup!.conditions) {
|
||||||
listRuleCondition.add(condition);
|
listRuleCondition.add(condition);
|
||||||
RulesFilterInputFieldArguments newRuleConditionValueArguments = RulesFilterInputFieldArguments(
|
RulesFilterInputFieldArguments newRuleConditionValueArguments = RulesFilterInputFieldArguments(
|
||||||
focusNode: FocusNode(),
|
focusNode: FocusNode(),
|
||||||
@@ -206,90 +214,70 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
condition.value
|
condition.value
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
conditionCombinerType.value = currentRule.conditionCombiner;
|
|
||||||
RuleAction currentAction = RuleAction(
|
|
||||||
appendIn: _currentTMailRule!.action.appendIn,
|
|
||||||
markAsImportant: _currentTMailRule!.action.markAsImportant,
|
|
||||||
markAsSeen: _currentTMailRule!.action.markAsSeen,
|
|
||||||
reject: _currentTMailRule!.action.reject,
|
|
||||||
);
|
|
||||||
if (currentAction.reject == true) {
|
|
||||||
EmailRuleFilterAction? action = EmailRuleFilterAction.rejectIt;
|
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(action);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
}
|
|
||||||
if (currentAction.appendIn.mailboxIds.isNotEmpty == true) {
|
|
||||||
final spamMailboxId = findMailboxNodeByRole(PresentationMailbox.roleJunk)?.item.id
|
|
||||||
?? findMailboxNodeByRole(PresentationMailbox.roleSpam)?.item.id;
|
|
||||||
for (var mailboxId in currentAction.appendIn.mailboxIds) {
|
|
||||||
if (mailboxId == spamMailboxId) {
|
|
||||||
EmailRuleFilterAction? action = EmailRuleFilterAction.markAsSpam;
|
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(action);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
} else {
|
|
||||||
EmailRuleFilterAction? action = EmailRuleFilterAction.moveMessage;
|
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(action);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (currentAction.markAsImportant == true) {
|
|
||||||
EmailRuleFilterAction? action = EmailRuleFilterAction.starIt;
|
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(action);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
}
|
|
||||||
if (currentAction.markAsSeen == true) {
|
|
||||||
EmailRuleFilterAction? action = EmailRuleFilterAction.maskAsSeen;
|
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(action);
|
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (listEmailRuleFilterActionSelected.length >= maxCountAction) {
|
|
||||||
isShowAddAction.value = false;
|
|
||||||
} else {
|
|
||||||
isShowAddAction.value = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
_newRuleName = _currentTMailRule!.name;
|
|
||||||
_setValueInputField(inputRuleNameController, _newRuleName ?? '');
|
|
||||||
_getAllMailboxAction();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
conditionCombinerType.value = _currentTMailRule!.conditionGroup?.conditionCombiner;
|
||||||
|
|
||||||
|
if (_currentTMailRule!.action.reject == true) {
|
||||||
|
EmailRuleFilterAction? action = EmailRuleFilterAction.rejectIt;
|
||||||
|
listEmailRuleFilterActionSelected.add(RuleFilterActionArguments.newAction(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_currentTMailRule!.action.markAsImportant == true) {
|
||||||
|
EmailRuleFilterAction? action = EmailRuleFilterAction.starIt;
|
||||||
|
listEmailRuleFilterActionSelected.add(RuleFilterActionArguments.newAction(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_currentTMailRule!.action.markAsSeen == true) {
|
||||||
|
EmailRuleFilterAction? action = EmailRuleFilterAction.maskAsSeen;
|
||||||
|
listEmailRuleFilterActionSelected.add(RuleFilterActionArguments.newAction(action));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (listEmailRuleFilterActionSelected.length >= maxCountAction) {
|
||||||
|
isShowAddAction.value = false;
|
||||||
|
} else {
|
||||||
|
isShowAddAction.value = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
_newRuleName = _currentTMailRule!.name;
|
||||||
|
_setValueInputField(inputRuleNameController, _newRuleName ?? '');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
inputRuleNameFocusNode.requestFocus();
|
inputRuleNameFocusNode.requestFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MailboxId? getSpamMailboxId() {
|
||||||
|
return findMailboxNodeByRole(PresentationMailbox.roleJunk)?.item.id
|
||||||
|
?? findMailboxNodeByRole(PresentationMailbox.roleSpam)?.item.id;
|
||||||
|
}
|
||||||
|
|
||||||
void _setValueInputField(TextEditingController? controller, String value) {
|
void _setValueInputField(TextEditingController? controller, String value) {
|
||||||
controller?.value = controller.value.copyWith(
|
controller?.value = controller.value.copyWith(
|
||||||
text: value,
|
text: value,
|
||||||
selection: TextSelection.collapsed(offset: value.length));
|
selection: TextSelection.collapsed(offset: value.length));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _setUpMailboxSelected() {
|
void _setUpRuleFilterActions() {
|
||||||
if (_currentTMailRule != null) {
|
if (_currentTMailRule!.action.appendIn.mailboxIds.isNotEmpty != true) return;
|
||||||
final mailboxIdsOfRule = _currentTMailRule!.action.appendIn.mailboxIds;
|
|
||||||
final spamMailboxId = findMailboxNodeByRole(PresentationMailbox.roleJunk)?.item.id
|
final mailboxNode = findMailboxNodeById(
|
||||||
?? findMailboxNodeByRole(PresentationMailbox.roleSpam)?.item.id;
|
_currentTMailRule!.action.appendIn.mailboxIds.first);
|
||||||
for (var mailboxId in mailboxIdsOfRule) {
|
|
||||||
if (mailboxId != spamMailboxId) {
|
if (mailboxNode == null) {
|
||||||
final mailboxNode = findMailboxNodeById(mailboxId);
|
mailboxSelected.value = PresentationMailbox.unifiedMailbox;
|
||||||
if (mailboxNode != null) {
|
listEmailRuleFilterActionSelected.add(
|
||||||
mailboxSelected.value = mailboxNode.item;
|
MoveMessageActionArguments(mailbox: PresentationMailbox.unifiedMailbox));
|
||||||
}
|
} else if (mailboxNode.item.isSpam) {
|
||||||
}
|
listEmailRuleFilterActionSelected.add(MarkAsSpamActionArguments());
|
||||||
}
|
} else {
|
||||||
RuleFilterActionArguments newRuleFilterAction = MoveMessageActionArguments(mailbox: mailboxSelected.value);
|
mailboxSelected.value = mailboxNode.item;
|
||||||
for (var filterAction in listEmailRuleFilterActionSelected) {
|
listEmailRuleFilterActionSelected.add(
|
||||||
if (filterAction is MoveMessageActionArguments) {
|
MoveMessageActionArguments(mailbox: mailboxNode.item));
|
||||||
listEmailRuleFilterActionSelected[listEmailRuleFilterActionSelected.indexOf(filterAction)] = newRuleFilterAction;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
listEmailRuleFilterActionSelected.refresh();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _getAllMailboxAction() {
|
void _getAllMailboxAction() {
|
||||||
if (_accountId != null) {
|
if (_accountId != null && _session != null) {
|
||||||
consumeState(_getAllMailboxInteractor.execute(_session!, _accountId!));
|
consumeState(_getAllMailboxInteractor.execute(_session!, _accountId!));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,7 +346,11 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectEmailRuleFilterAction(EmailRuleFilterAction? newAction, int ruleFilterActionIndex) {
|
void selectEmailRuleFilterAction(
|
||||||
|
BuildContext context,
|
||||||
|
EmailRuleFilterAction? newAction,
|
||||||
|
int ruleFilterActionIndex
|
||||||
|
) {
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(newAction);
|
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(newAction);
|
||||||
if (newRuleFilterAction is RejectItActionArguments) {
|
if (newRuleFilterAction is RejectItActionArguments) {
|
||||||
listEmailRuleFilterActionSelected.clear();
|
listEmailRuleFilterActionSelected.clear();
|
||||||
@@ -378,11 +370,43 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).duplicatedActionError,
|
AppLocalizations.of(currentContext!).duplicatedActionError,
|
||||||
);
|
);
|
||||||
} else {
|
return;
|
||||||
listEmailRuleFilterActionSelected[ruleFilterActionIndex] = newRuleFilterAction;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newAction == EmailRuleFilterAction.markAsSpam) {
|
||||||
|
final moveMessageActionIndex = listEmailRuleFilterActionSelected
|
||||||
|
.indexWhere((filter) => filter.action == EmailRuleFilterAction.moveMessage);
|
||||||
|
log('RulesFilterCreatorController::selectEmailRuleFilterAction: moveMessageActionIndex = $moveMessageActionIndex');
|
||||||
|
if (moveMessageActionIndex != -1) {
|
||||||
|
mailboxSelected.value = null;
|
||||||
|
listEmailRuleFilterActionSelected[ruleFilterActionIndex] = newRuleFilterAction;
|
||||||
|
if (listEmailRuleFilterActionSelected.length > 1) {
|
||||||
|
listEmailRuleFilterActionSelected.removeAt(moveMessageActionIndex);
|
||||||
|
}
|
||||||
|
isShowAddAction.value = listEmailRuleFilterActionSelected.length < maxCountAction;
|
||||||
|
listEmailRuleFilterActionSelected.refresh();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newAction == EmailRuleFilterAction.moveMessage) {
|
||||||
|
final markAsSpamActionIndex = listEmailRuleFilterActionSelected
|
||||||
|
.indexWhere((filter) => filter.action == EmailRuleFilterAction.markAsSpam);
|
||||||
|
log('RulesFilterCreatorController::selectEmailRuleFilterAction: markAsSpamActionIndex = $markAsSpamActionIndex');
|
||||||
|
if (markAsSpamActionIndex != -1) {
|
||||||
|
listEmailRuleFilterActionSelected[ruleFilterActionIndex] = newRuleFilterAction;
|
||||||
|
if (listEmailRuleFilterActionSelected.length > 1) {
|
||||||
|
listEmailRuleFilterActionSelected.removeAt(markAsSpamActionIndex);
|
||||||
|
}
|
||||||
|
isShowAddAction.value = listEmailRuleFilterActionSelected.length < maxCountAction;
|
||||||
|
listEmailRuleFilterActionSelected.refresh();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
listEmailRuleFilterActionSelected[ruleFilterActionIndex] = newRuleFilterAction;
|
||||||
|
listEmailRuleFilterActionSelected.refresh();
|
||||||
}
|
}
|
||||||
listEmailRuleFilterActionSelected.refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectMailbox(BuildContext context, int ruleFilterActionIndex) async {
|
void selectMailbox(BuildContext context, int ruleFilterActionIndex) async {
|
||||||
@@ -454,11 +478,19 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
final errorAction = _getErrorStringByInputValue(context, mailboxSelected.value?.getDisplayName(context));
|
final errorAction = _getErrorStringByInputValue(context, mailboxSelected.value?.getDisplayName(context));
|
||||||
log('RulesFilterCreatorController::createNewRuleFilter:errorAction: $errorAction');
|
log('RulesFilterCreatorController::createNewRuleFilter:errorAction: $errorAction');
|
||||||
if (errorAction?.isNotEmpty == true) {
|
if (errorAction?.isNotEmpty == true) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
appToast.showToastErrorMessage(
|
||||||
appToast.showToastErrorMessage(
|
context,
|
||||||
currentOverlayContext!,
|
AppLocalizations.of(context).notSelectedMailboxToMoveMessage);
|
||||||
AppLocalizations.of(currentContext!).notSelectedMailboxToMoveMessage);
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (ruleFilterAction is MarkAsSpamActionArguments) {
|
||||||
|
final spamMailboxId = getSpamMailboxId();
|
||||||
|
log('RulesFilterCreatorController::createNewRuleFilter:spamMailboxId: ${spamMailboxId?.asString}');
|
||||||
|
if (spamMailboxId == null) {
|
||||||
|
appToast.showToastErrorMessage(
|
||||||
|
context,
|
||||||
|
AppLocalizations.of(context).spamFolderNotFound);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -485,9 +517,8 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
if (ruleFilterAction is MoveMessageActionArguments) {
|
if (ruleFilterAction is MoveMessageActionArguments) {
|
||||||
mailboxIds.add(ruleFilterAction.mailbox!.id);
|
mailboxIds.add(ruleFilterAction.mailbox!.id);
|
||||||
}
|
}
|
||||||
if (ruleFilterAction.action is MarAsSpamActionArguments) {
|
if (ruleFilterAction is MarkAsSpamActionArguments) {
|
||||||
final spamMailboxId = findMailboxNodeByRole(PresentationMailbox.roleJunk)?.item.id
|
final spamMailboxId = getSpamMailboxId();
|
||||||
?? findMailboxNodeByRole(PresentationMailbox.roleSpam)?.item.id;
|
|
||||||
if (spamMailboxId != null) {
|
if (spamMailboxId != null) {
|
||||||
mailboxIds.add(spamMailboxId);
|
mailboxIds.add(spamMailboxId);
|
||||||
}
|
}
|
||||||
@@ -573,9 +604,9 @@ class RulesFilterCreatorController extends BaseMailboxController {
|
|||||||
conditionCombinerType.value = combinerType;
|
conditionCombinerType.value = combinerType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tapAddAction() {
|
void tapAddAction() {
|
||||||
RuleFilterActionArguments newRuleFilterAction = RuleFilterActionArguments.newAction(null);
|
listEmailRuleFilterActionSelected.add(RuleFilterActionArguments.emptyAction());
|
||||||
listEmailRuleFilterActionSelected.add(newRuleFilterAction);
|
|
||||||
if (listEmailRuleFilterActionSelected.length >= maxCountAction) {
|
if (listEmailRuleFilterActionSelected.length >= maxCountAction) {
|
||||||
isShowAddAction.value = false;
|
isShowAddAction.value = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
actionList: controller.listEmailRuleFilterActionSelected,
|
actionList: controller.listEmailRuleFilterActionSelected,
|
||||||
onActionChanged: (newAction, index) {
|
onActionChanged: (newAction, index) {
|
||||||
controller.selectEmailRuleFilterAction(newAction, index);
|
controller.selectEmailRuleFilterAction(context, newAction, index);
|
||||||
},
|
},
|
||||||
forwardEmailEditingController: controller.forwardEmailController,
|
forwardEmailEditingController: controller.forwardEmailController,
|
||||||
forwardEmailFocusNode: controller.forwardEmailFocusNode,
|
forwardEmailFocusNode: controller.forwardEmailFocusNode,
|
||||||
@@ -344,7 +344,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
actionList: controller.listEmailRuleFilterActionSelected,
|
actionList: controller.listEmailRuleFilterActionSelected,
|
||||||
onActionChanged: (newAction, index) {
|
onActionChanged: (newAction, index) {
|
||||||
controller.selectEmailRuleFilterAction(newAction, index);
|
controller.selectEmailRuleFilterAction(context, newAction, index);
|
||||||
},
|
},
|
||||||
forwardEmailEditingController: controller.forwardEmailController,
|
forwardEmailEditingController: controller.forwardEmailController,
|
||||||
forwardEmailFocusNode: controller.forwardEmailFocusNode,
|
forwardEmailFocusNode: controller.forwardEmailFocusNode,
|
||||||
@@ -807,7 +807,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
|
|||||||
fit: BoxFit.fill))
|
fit: BoxFit.fill))
|
||||||
..onActionClick((ruleAction) {
|
..onActionClick((ruleAction) {
|
||||||
if (ruleAction != controller.listEmailRuleFilterActionSelected[ruleActionIndex].action) {
|
if (ruleAction != controller.listEmailRuleFilterActionSelected[ruleActionIndex].action) {
|
||||||
controller.selectEmailRuleFilterAction(ruleAction, ruleActionIndex);
|
controller.selectEmailRuleFilterAction(context, ruleAction, ruleActionIndex);
|
||||||
}
|
}
|
||||||
popBack();
|
popBack();
|
||||||
}))
|
}))
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"@@last_modified": "2024-08-19T19:20:23.876948",
|
"@@last_modified": "2024-08-23T16:45:33.629548",
|
||||||
"initializing_data": "Initializing data...",
|
"initializing_data": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -3999,5 +3999,11 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"spamFolderNotFound": "Spam folder not found",
|
||||||
|
"@spamFolderNotFound": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4188,4 +4188,11 @@ class AppLocalizations {
|
|||||||
'This image cannot be pasted into the editor.',
|
'This image cannot be pasted into the editor.',
|
||||||
name: 'thisImageCannotBePastedIntoTheEditor');
|
name: 'thisImageCannotBePastedIntoTheEditor');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String get spamFolderNotFound {
|
||||||
|
return Intl.message(
|
||||||
|
'Spam folder not found',
|
||||||
|
name: 'spamFolderNotFound',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,27 +4,30 @@ import 'package:rule_filter/rule_filter/rule_append_in.dart';
|
|||||||
|
|
||||||
part 'rule_action.g.dart';
|
part 'rule_action.g.dart';
|
||||||
|
|
||||||
@JsonSerializable(explicitToJson: true)
|
@JsonSerializable(explicitToJson: true, includeIfNull: false)
|
||||||
class RuleAction with EquatableMixin {
|
class RuleAction with EquatableMixin {
|
||||||
final RuleAppendIn appendIn;
|
final RuleAppendIn appendIn;
|
||||||
@JsonKey(includeIfNull: false)
|
|
||||||
final bool? markAsSeen;
|
final bool? markAsSeen;
|
||||||
@JsonKey(includeIfNull: false)
|
|
||||||
final bool? markAsImportant;
|
final bool? markAsImportant;
|
||||||
@JsonKey(includeIfNull: false)
|
|
||||||
final bool? reject;
|
final bool? reject;
|
||||||
|
final List<String>? withKeywords;
|
||||||
|
|
||||||
RuleAction({
|
RuleAction({
|
||||||
required this.appendIn,
|
required this.appendIn,
|
||||||
this.markAsSeen,
|
this.markAsSeen,
|
||||||
this.markAsImportant,
|
this.markAsImportant,
|
||||||
this.reject,
|
this.reject,
|
||||||
|
this.withKeywords,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object?> get props => [
|
List<Object?> get props => [
|
||||||
appendIn,
|
appendIn,
|
||||||
];
|
markAsSeen,
|
||||||
|
markAsImportant,
|
||||||
|
reject,
|
||||||
|
withKeywords,
|
||||||
|
];
|
||||||
|
|
||||||
factory RuleAction.fromJson(Map<String, dynamic> json) =>
|
factory RuleAction.fromJson(Map<String, dynamic> json) =>
|
||||||
_$RuleActionFromJson(json);
|
_$RuleActionFromJson(json);
|
||||||
|
|||||||
Reference in New Issue
Block a user