Files
workavia-mail-front/lib/features/mailbox/presentation/model/mailbox_actions.dart
T

172 lines
5.0 KiB
Dart

import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/widget/context_menu_item_action.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum MailboxActions {
create,
moveEmail,
select,
delete,
rename,
move,
markAsRead,
selectForRuleAction,
openInNewTab,
disableSpamReport,
enableSpamReport,
disableMailbox,
enableMailbox
}
extension MailboxActionsExtension on MailboxActions {
String getTitle(BuildContext context) {
switch(this) {
case MailboxActions.create:
return AppLocalizations.of(context).selectParentFolder;
case MailboxActions.moveEmail:
case MailboxActions.move:
return AppLocalizations.of(context).moveTo;
case MailboxActions.select:
case MailboxActions.selectForRuleAction:
return AppLocalizations.of(context).selectMailbox;
default:
return '';
}
}
String getTitleContextMenu(BuildContext context) {
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:
return AppLocalizations.of(context).moveMailbox;
case MailboxActions.rename:
return AppLocalizations.of(context).rename_mailbox;
case MailboxActions.delete:
return AppLocalizations.of(context).deleteMailbox;
case MailboxActions.disableMailbox:
return AppLocalizations.of(context).hideMailBoxes;
case MailboxActions.enableMailbox:
return AppLocalizations.of(context).showMailbox;
default:
return '';
}
}
String getContextMenuIcon(ImagePaths imagePaths) {
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.icMarkAsRead;
case MailboxActions.move:
return imagePaths.icMoveMailbox;
case MailboxActions.rename:
return imagePaths.icRenameMailbox;
case MailboxActions.delete:
return imagePaths.icDeleteMailbox;
case MailboxActions.disableMailbox:
return imagePaths.icHideMailbox;
case MailboxActions.enableMailbox:
return imagePaths.icShowMailbox;
default:
return '';
}
}
Color getColorContextMenuTitle() {
switch(this) {
case MailboxActions.delete:
return AppColor.colorActionDeleteConfirmDialog;
default:
return Colors.black;
}
}
Color getColorContextMenuIcon() {
switch(this) {
case MailboxActions.delete:
return AppColor.colorActionDeleteConfirmDialog;
default:
return AppColor.primaryColor;
}
}
bool canSearch() {
switch(this) {
case MailboxActions.create:
case MailboxActions.moveEmail:
case MailboxActions.move:
case MailboxActions.select:
case MailboxActions.selectForRuleAction:
return true;
default:
return false;
}
}
bool hasAllMailboxDefault() {
switch(this) {
case MailboxActions.create:
case MailboxActions.move:
case MailboxActions.select:
return true;
default:
return false;
}
}
bool canCollapseMailboxGroup() {
switch(this) {
case MailboxActions.moveEmail:
case MailboxActions.move:
case MailboxActions.select:
case MailboxActions.selectForRuleAction:
return false;
default:
return true;
}
}
ContextMenuItemState getContextMenuItemState(PresentationMailbox mailbox) {
switch(this) {
case MailboxActions.openInNewTab:
case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport:
return mailbox.isPersonal
? ContextMenuItemState.activated
: ContextMenuItemState.deactivated;
case MailboxActions.enableMailbox:
case MailboxActions.disableMailbox:
return mailbox.hasRole()
? ContextMenuItemState.deactivated
: ContextMenuItemState.activated;
case MailboxActions.markAsRead:
return mailbox.getCountUnReadEmails().isNotEmpty
? ContextMenuItemState.activated
: ContextMenuItemState.deactivated;
case MailboxActions.move:
case MailboxActions.rename:
case MailboxActions.delete:
return !mailbox.hasRole() && mailbox.isPersonal
? ContextMenuItemState.activated
: ContextMenuItemState.deactivated;
default:
return ContextMenuItemState.deactivated;
}
}
}