TF-153 Mark as spam when selection email

This commit is contained in:
dab246
2022-04-15 17:11:38 +07:00
committed by Dat H. Pham
parent 750063d1f4
commit f5648cc7f7
8 changed files with 232 additions and 51 deletions
@@ -109,6 +109,8 @@ class ThreadController extends BaseController {
AccountId? get _accountId => mailboxDashBoardController.accountId.value;
PresentationMailbox? get currentMailbox => mailboxDashBoardController.selectedMailbox.value;
ThreadController(
this._getEmailsInMailboxInteractor,
this._refreshAllEmailsInMailboxInteractor,
@@ -551,7 +553,7 @@ class ThreadController extends BaseController {
refreshAllEmail();
}
void moveSelectedMultipleEmailToMailboxAction(List<PresentationEmail> listEmail) async {
void moveSelectedMultipleEmailToMailbox(List<PresentationEmail> listEmail) async {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
if (currentMailbox != null && _accountId != null) {
final listEmailIds = listEmail.map((email) => email.id).toList();
@@ -561,15 +563,22 @@ class ThreadController extends BaseController {
);
if (destinationMailbox != null && destinationMailbox is PresentationMailbox) {
if (destinationMailbox.role == PresentationMailbox.roleTrash) {
_moveSelectedEmailMultipleToTrash(_accountId!, MoveToMailboxRequest(
if (destinationMailbox.isTrash) {
_moveSelectedEmailMultipleToTrashAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToTrash));
} else if (destinationMailbox.isSpam) {
_moveSelectedEmailMultipleToSpamAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
MoveAction.moving,
EmailActionType.moveToSpam));
} else {
_moveSelectedEmailMultipleToMailbox(_accountId!, MoveToMailboxRequest(
_moveSelectedEmailMultipleToMailboxAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
destinationMailbox.id,
@@ -581,7 +590,7 @@ class ThreadController extends BaseController {
}
}
void _moveSelectedEmailMultipleToMailbox(AccountId accountId, MoveToMailboxRequest moveRequest) {
void _moveSelectedEmailMultipleToMailboxAction(AccountId accountId, MoveToMailboxRequest moveRequest) {
cancelSelectEmail();
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
}
@@ -636,13 +645,13 @@ class ThreadController extends BaseController {
_refreshEmailChanges();
}
void moveSelectedMultipleEmailToTrashAction(List<PresentationEmail> listEmail) async {
void moveSelectedMultipleEmailToTrash(List<PresentationEmail> listEmail) async {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
final trashMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleTrash);
if (currentMailbox != null && _accountId != null && trashMailboxId != null) {
final listEmailIds = listEmail.map((email) => email.id).toList();
_moveSelectedEmailMultipleToTrash(_accountId!, MoveToMailboxRequest(
_moveSelectedEmailMultipleToTrashAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
trashMailboxId,
@@ -652,11 +661,48 @@ class ThreadController extends BaseController {
}
}
void _moveSelectedEmailMultipleToTrash(AccountId accountId, MoveToMailboxRequest moveRequest) {
void _moveSelectedEmailMultipleToTrashAction(AccountId accountId, MoveToMailboxRequest moveRequest) {
cancelSelectEmail();
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
}
void moveSelectedMultipleEmailToSpam(List<PresentationEmail> listEmail) async {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
final spamMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleSpam);
if (currentMailbox != null && _accountId != null && spamMailboxId != null) {
final listEmailIds = listEmail.map((email) => email.id).toList();
_moveSelectedEmailMultipleToSpamAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
currentMailbox.id,
spamMailboxId,
MoveAction.moving,
EmailActionType.moveToSpam)
);
}
}
void _moveSelectedEmailMultipleToSpamAction(AccountId accountId, MoveToMailboxRequest moveRequest) {
cancelSelectEmail();
consumeState(_moveMultipleEmailToMailboxInteractor.execute(accountId, moveRequest));
}
void unSpamSelectedMultipleEmail(List<PresentationEmail> listEmail) async {
final spamMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleSpam);
final inboxMailboxId = mailboxDashBoardController.getMailboxIdByRole(PresentationMailbox.roleInbox);
if (inboxMailboxId != null && _accountId != null && spamMailboxId != null) {
final listEmailIds = listEmail.map((email) => email.id).toList();
_moveSelectedEmailMultipleToMailboxAction(_accountId!, MoveToMailboxRequest(
listEmailIds,
spamMailboxId,
inboxMailboxId,
MoveAction.moving,
EmailActionType.unSpam)
);
}
}
void _revertedToOriginalMailbox(MoveToMailboxRequest newMoveRequest) {
if (_accountId != null) {
consumeState(_moveMultipleEmailToMailboxInteractor.execute(_accountId!, newMoveRequest));
@@ -800,14 +846,20 @@ class ThreadController extends BaseController {
markAsStarSelectedMultipleEmail(selectionEmail);
break;
case EmailActionType.moveToMailbox:
moveSelectedMultipleEmailToMailboxAction(selectionEmail);
moveSelectedMultipleEmailToMailbox(selectionEmail);
break;
case EmailActionType.moveToTrash:
moveSelectedMultipleEmailToTrashAction(selectionEmail);
moveSelectedMultipleEmailToTrash(selectionEmail);
break;
case EmailActionType.deletePermanently:
deleteSelectionEmailsPermanently(context, DeleteActionType.multiple, selectedEmails: selectionEmail);
break;
case EmailActionType.moveToSpam:
moveSelectedMultipleEmailToSpam(selectionEmail);
break;
case EmailActionType.unSpam:
unSpamSelectedMultipleEmail(selectionEmail);
break;
default:
break;
}