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)
|
.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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user