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) .where((email) => email.id != null)
.map((e) => MapEntry(e.id!, e.hasRead)) .map((e) => MapEntry(e.id!, e.hasRead))
); );
if (searchController.isSearchEmailRunning ||
selectedMailbox.value?.isFavorite == true) { if (destinationMailbox.isFavorite) {
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {}; _handleDragSelectedMultipleEmailToFavoriteFolder(listEmails);
for (var element in listEmails) { } else {
final mailbox = element.findMailboxContain(mapMailboxById); if (searchController.isSearchEmailRunning ||
if (mailbox != null && element.id != null) { selectedMailbox.value?.isFavorite == true) {
if (mapListEmailSelectedByMailBoxId.containsKey(mailbox.id)) { final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
mapListEmailSelectedByMailBoxId[mailbox.id]?.add(element.id!); for (var element in listEmails) {
} else { final mailbox = element.findMailboxContain(mapMailboxById);
mapListEmailSelectedByMailBoxId.addAll({mailbox.id: [element.id!]}); 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) { } else {
_handleDragSelectedMultipleEmailToMailboxAction( consumeState(
{selectedMailbox.value!.id: listEmails.listEmailIds}, Stream.value(Left(
destinationMailbox, MarkAsStarMultipleEmailFailure(
emailIdsWithReadStatus, MarkStarAction.markStar,
NotFoundSessionException(),
),
)),
); );
} }
dispatchAction(CancelSelectionAllEmailAction());
} }
void _handleDragSelectedMultipleEmailToMailboxAction( void _handleDragSelectedMultipleEmailToMailboxAction(
@@ -166,6 +166,7 @@ class ThreadController extends BaseController with EmailActionController {
@override @override
void handleSuccessViewState(Success success) { void handleSuccessViewState(Success success) {
super.handleSuccessViewState(success);
if (success is GetAllEmailSuccess) { if (success is GetAllEmailSuccess) {
_getAllEmailSuccess(success); _getAllEmailSuccess(success);
} else if (success is LoadMoreEmailsSuccess) { } else if (success is LoadMoreEmailsSuccess) {
@@ -192,13 +193,12 @@ class ThreadController extends BaseController with EmailActionController {
_openEmailWithoutMailboxFromLocationBar(success.email); _openEmailWithoutMailboxFromLocationBar(success.email);
} }
} }
} else {
super.handleSuccessViewState(success);
} }
} }
@override @override
void handleFailureViewState(Failure failure) { void handleFailureViewState(Failure failure) {
super.handleFailureViewState(failure);
if (failure is SearchEmailFailure) { if (failure is SearchEmailFailure) {
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure())); mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canSearchMore = false; canSearchMore = false;
@@ -216,8 +216,6 @@ class ThreadController extends BaseController with EmailActionController {
} else if (failure is GetAllEmailFailure || failure is CleanAndGetAllEmailFailure) { } else if (failure is GetAllEmailFailure || failure is CleanAndGetAllEmailFailure) {
mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure())); mailboxDashBoardController.updateRefreshAllEmailState(Left(RefreshAllEmailFailure()));
canLoadMore = true; canLoadMore = true;
} else {
super.handleFailureViewState(failure);
} }
} }