TF-1715 Mark as star when drag n drop or move email to Favorite folder
This commit is contained in:
+54
-19
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user