TF-1715 Mark as star when drag n drop or move email to Favorite folder

This commit is contained in:
dab246
2025-11-05 14:19:38 +07:00
committed by Dat H. Pham
parent b9ce85b026
commit 1398a30ed6
2 changed files with 56 additions and 23 deletions
@@ -1347,32 +1347,67 @@ class MailboxDashBoardController extends ReloadableController
.where((email) => email.id != null)
.map((e) => MapEntry(e.id!, e.hasRead))
);
if (searchController.isSearchEmailRunning ||
selectedMailbox.value?.isFavorite == true) {
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
for (var element in listEmails) {
final mailbox = element.findMailboxContain(mapMailboxById);
if (mailbox != null && element.id != null) {
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!);
} else {
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]});
if (destinationMailbox.isFavorite) {
_handleDragSelectedMultipleEmailToFavoriteFolder(listEmails);
} else {
if (searchController.isSearchEmailRunning ||
selectedMailbox.value?.isFavorite == true) {
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
for (var element in listEmails) {
final mailbox = element.findMailboxContain(mapMailboxById);
if (mailbox != null && element.id != null) {
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) {
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!);
} else {
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]});
}
}
}
_handleDragSelectedMultipleEmailToMailboxAction(
mapListEmailSelectedByMailBoxId,
destinationMailbox,
emailIdsWithReadStatus,
);
} else if (selectedMailbox.value != null) {
_handleDragSelectedMultipleEmailToMailboxAction(
{selectedMailbox.value!.id: listEmails.listEmailIds},
destinationMailbox,
emailIdsWithReadStatus,
);
}
_handleDragSelectedMultipleEmailToMailboxAction(
mapListEmailSelectedByMailBoxId,
destinationMailbox,
emailIdsWithReadStatus,
}
}
void _handleDragSelectedMultipleEmailToFavoriteFolder(
List<PresentationEmail> listPresentationEmail,
) async {
if (accountId.value != null && sessionCurrent != null) {
final listEmailIds = listPresentationEmail
.where((email) => !email.hasStarred)
.toList()
.listEmailIds;
consumeState(
_markAsStarMultipleEmailInteractor.execute(
sessionCurrent!,
accountId.value!,
listEmailIds,
MarkStarAction.markStar,
),
);
} else if (selectedMailbox.value != null) {
_handleDragSelectedMultipleEmailToMailboxAction(
{selectedMailbox.value!.id: listEmails.listEmailIds},
destinationMailbox,
emailIdsWithReadStatus,
} else {
consumeState(
Stream.value(Left(
MarkAsStarMultipleEmailFailure(
MarkStarAction.markStar,
NotFoundSessionException(),
),
)),
);
}
dispatchAction(CancelSelectionAllEmailAction());
}
void _handleDragSelectedMultipleEmailToMailboxAction(
@@ -166,6 +166,7 @@ class ThreadController extends BaseController with EmailActionController {
@override
void handleSuccessViewState(Success success) {
super.handleSuccessViewState(success);
if (success is GetAllEmailSuccess) {
_getAllEmailSuccess(success);
} else if (success is LoadMoreEmailsSuccess) {
@@ -192,13 +193,12 @@ class ThreadController extends BaseController with EmailActionController {
_openEmailWithoutMailboxFromLocationBar(success.email);
}
}
} else {
super.handleSuccessViewState(success);
}
}
@override
void handleFailureViewState(Failure failure) {
super.handleFailureViewState(failure);
if (failure is SearchEmailFailure) {
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canSearchMore = false;
@@ -216,8 +216,6 @@ class ThreadController extends BaseController with EmailActionController {
} else if (failure is GetAllEmailFailure || failure is CleanAndGetAllEmailFailure) {
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canLoadMore = true;
} else {
super.handleFailureViewState(failure);
}
}