TF-1363: [Presentation] Implement disable and enable spam report

This commit is contained in:
HuyNguyen
2023-01-16 17:32:02 +07:00
committed by Dat H. Pham
parent 7a85c15f98
commit 04fd640384
27 changed files with 388 additions and 199 deletions
@@ -57,6 +57,7 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_na
import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/validator_failure_extension.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/mailbox_dashboard/domain/model/spam_report_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_email_drafts_state.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
@@ -1120,6 +1121,12 @@ class MailboxController extends BaseMailboxController {
case MailboxActions.openInNewTab:
openMailboxInNewTabAction(mailbox);
break;
case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport:
final _currentSpamReportState = mailboxDashBoardController.enableSpamRepot;
final _storeSpamReportState = _currentSpamReportState ? SpamReportState.disabled : SpamReportState.enabled;
mailboxDashBoardController.storeSpamReportStateAction(_storeSpamReportState);
return;
default:
break;
}
@@ -408,6 +408,11 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
MailboxActions.delete
];
if(mailbox.isSpam) {
mailboxActionsSupported.insert(1,
controller.mailboxDashBoardController.enableSpamRepot ? MailboxActions.disableSpamReport : MailboxActions.enableSpamReport);
}
final listContextMenuItemAction = mailboxActionsSupported
.map((action) => ContextMenuItemMailboxAction(
action,
@@ -488,7 +493,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
styleName: TextStyle(
fontWeight: FontWeight.normal,
fontSize: 17,
color: contextMenuItem.action.getColorContextMenuIcon()),
color: contextMenuItem.action.getColorContextMenuTitle()),
onCallbackAction: () =>
controller.handleMailboxAction(context, contextMenuItem.action, mailbox)),
),
@@ -14,7 +14,9 @@ enum MailboxActions {
move,
markAsRead,
selectForRuleAction,
openInNewTab
openInNewTab,
disableSpamReport,
enableSpamReport
}
extension MailboxActionsExtension on MailboxActions {
@@ -38,6 +40,10 @@ extension MailboxActionsExtension on MailboxActions {
switch(this) {
case MailboxActions.openInNewTab:
return AppLocalizations.of(context).openInNewTab;
case MailboxActions.disableSpamReport:
return AppLocalizations.of(context).disableSpamReport;
case MailboxActions.enableSpamReport:
return AppLocalizations.of(context).enableSpamReport;
case MailboxActions.markAsRead:
return AppLocalizations.of(context).mark_as_read;
case MailboxActions.move:
@@ -55,6 +61,10 @@ extension MailboxActionsExtension on MailboxActions {
switch(this) {
case MailboxActions.openInNewTab:
return imagePaths.icOpenInNewTab;
case MailboxActions.disableSpamReport:
return imagePaths.icSpamReportDisable;
case MailboxActions.enableSpamReport:
return imagePaths.icSpamReportEnable;
case MailboxActions.markAsRead:
return imagePaths.icRead;
case MailboxActions.move:
@@ -68,10 +78,22 @@ extension MailboxActionsExtension on MailboxActions {
}
}
Color getColorContextMenuTitle() {
switch(this) {
case MailboxActions.delete:
return AppColor.colorActionDeleteConfirmDialog;
default:
return Colors.black;
}
}
Color getColorContextMenuIcon() {
switch(this) {
case MailboxActions.delete:
return AppColor.colorActionDeleteConfirmDialog;
case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport:
return AppColor.primaryColor;
default:
return Colors.black;
}
@@ -116,7 +138,9 @@ extension MailboxActionsExtension on MailboxActions {
ContextMenuItemState getContextMenuItemState(PresentationMailbox mailbox) {
switch(this) {
case MailboxActions.openInNewTab:
return ContextMenuItemState.activated;
case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport:
return ContextMenuItemState.activated;
case MailboxActions.markAsRead:
return mailbox.getCountUnReadEmails().isNotEmpty
? ContextMenuItemState.activated