TF-153 Mark as spam when open email
This commit is contained in:
@@ -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)),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1104,4 +1104,26 @@ class AppLocalizations {
|
||||
name: 'date',
|
||||
);
|
||||
}
|
||||
|
||||
String get mark_as_spam {
|
||||
return Intl.message(
|
||||
'Mark as spam',
|
||||
name: 'mark_as_spam',
|
||||
);
|
||||
}
|
||||
|
||||
String get remove_from_spam {
|
||||
return Intl.message(
|
||||
'Remove from spam',
|
||||
name: 'remove_from_spam',
|
||||
);
|
||||
}
|
||||
|
||||
String get marked_as_spam {
|
||||
return Intl.message(
|
||||
'Marked as spam',
|
||||
name: 'marked_as_spam',
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user