TF-153 Mark as spam when open email

This commit is contained in:
dab246
2022-04-15 16:20:02 +07:00
committed by Dat H. Pham
parent 16c5aed64e
commit 750063d1f4
12 changed files with 107 additions and 5 deletions
@@ -32,6 +32,8 @@ extension EmailActionTypeExtension on EmailActionType {
return AppLocalizations.of(context).moved_to_mailbox(destinationPath ?? '');
case EmailActionType.moveToTrash:
return AppLocalizations.of(context).moved_to_trash;
case EmailActionType.moveToSpam:
return AppLocalizations.of(context).marked_as_spam;
default:
return '';
}
@@ -343,13 +343,20 @@ class EmailController extends BaseController {
);
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
if (destinationMailbox.role == PresentationMailbox.roleTrash) {
if (destinationMailbox.isTrash) {
_moveToTrashAction(context, accountId, MoveToMailboxRequest(
[email.id],
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToTrash));
} else if (destinationMailbox.isSpam) {
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
[email.id],
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToSpam));
} else {
_moveToMailbox(accountId, MoveToMailboxRequest(
[email.id],
@@ -375,7 +382,7 @@ class EmailController extends BaseController {
currentOverlayContext!,
success.emailActionType.getToastMessageMoveToMailboxSuccess(currentContext!, destinationPath: success.destinationPath),
AppLocalizations.of(currentContext!).undo_action, () {
_undoMoveToMailbox(MoveToMailboxRequest(
_revertedToOriginalMailbox(MoveToMailboxRequest(
[success.emailId],
success.destinationMailboxId,
success.currentMailboxId,
@@ -386,7 +393,7 @@ class EmailController extends BaseController {
}
}
void _undoMoveToMailbox(MoveToMailboxRequest newMoveRequest) {
void _revertedToOriginalMailbox(MoveToMailboxRequest newMoveRequest) {
final accountId = mailboxDashBoardController.accountId.value;
if (accountId != null) {
_moveToMailbox(accountId, newMoveRequest);
@@ -413,6 +420,26 @@ class EmailController extends BaseController {
mailboxDashBoardController.moveToMailbox(accountId, moveRequest);
}
void moveToSpam(BuildContext context, PresentationEmail email) async {
final accountId = mailboxDashBoardController.accountId.value;
final spamMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleSpam);
if (accountId != null && currentMailbox != null && spamMailboxId != null) {
_moveToSpamAction(context, accountId, MoveToMailboxRequest(
[email.id],
currentMailbox!.id,
spamMailboxId,
MoveAction.moving,
EmailActionType.moveToSpam)
);
}
}
void _moveToSpamAction(BuildContext context, AccountId accountId, MoveToMailboxRequest moveRequest) {
backToThreadView(context);
mailboxDashBoardController.moveToMailbox(accountId, moveRequest);
}
void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction markStarAction) async {
final accountId = mailboxDashBoardController.accountId.value;
final mailboxCurrent = mailboxDashBoardController.selectedMailbox.value;
@@ -449,6 +476,10 @@ class EmailController extends BaseController {
case EmailActionType.deletePermanently:
deleteEmailPermanently(context, presentationEmail);
break;
case EmailActionType.moveToSpam:
popBack();
moveToSpam(context, presentationEmail);
break;
default:
break;
}
@@ -544,6 +544,7 @@ class EmailView extends GetView with UserSettingPopupMenuMixin, NetworkConnectio
List<Widget> _emailActionMoreActionTile(BuildContext context, PresentationEmail email) {
return <Widget>[
_markAsEmailUnreadAction(context, email),
_markAsEmailSpamOrUnSpamAction(context, email),
];
}
@@ -572,9 +573,31 @@ class EmailView extends GetView with UserSettingPopupMenuMixin, NetworkConnectio
.build();
}
Widget _markAsEmailSpamOrUnSpamAction(BuildContext context, PresentationEmail email) {
return (EmailActionCupertinoActionSheetActionBuilder(
Key('mark_as_spam_or_un_spam_action'),
SvgPicture.asset(
emailController.currentMailbox?.isSpam == true ? imagePaths.icNotSpam : imagePaths.icSpam,
width: 28, height: 28, fit: BoxFit.fill, color: AppColor.colorTextButton),
emailController.currentMailbox?.isSpam == true
? AppLocalizations.of(context).remove_from_spam
: AppLocalizations.of(context).mark_as_spam,
email,
iconLeftPadding: responsiveUtils.isMobile(context)
? EdgeInsets.only(left: 12, right: 16)
: EdgeInsets.only(right: 12),
iconRightPadding: responsiveUtils.isMobile(context)
? EdgeInsets.only(right: 12)
: EdgeInsets.zero)
..onActionClick((email) => emailController.handleEmailAction(context, email,
emailController.currentMailbox?.isSpam == true ? EmailActionType.unSpam : EmailActionType.moveToSpam)))
.build();
}
List<PopupMenuEntry> _popupMenuEmailActionTile(BuildContext context, PresentationEmail email) {
return [
PopupMenuItem(padding: EdgeInsets.symmetric(horizontal: 8), child: _markAsEmailUnreadAction(context, email)),
PopupMenuItem(padding: EdgeInsets.symmetric(horizontal: 8), child: _markAsEmailSpamOrUnSpamAction(context, email)),
];
}
}