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,6 +1347,10 @@ class MailboxDashBoardController extends ReloadableController
.where((email) => email.id != null)
.map((e) => MapEntry(e.id!, e.hasRead))
);
if (destinationMailbox.isFavorite) {
_handleDragSelectedMultipleEmailToFavoriteFolder(listEmails);
} else {
if (searchController.isSearchEmailRunning ||
selectedMailbox.value?.isFavorite == true) {
final Map<MailboxId,List<EmailId>> mapListEmailSelectedByMailBoxId = {};
@@ -1372,7 +1376,38 @@ class MailboxDashBoardController extends ReloadableController
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 {
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);
}
}