TF-3334 Remove Email/get of mark as read & mark as star action

This commit is contained in:
dab246
2024-12-19 00:50:13 +07:00
committed by Dat H. Pham
parent 75231636e2
commit eb51e9b3b1
27 changed files with 419 additions and 345 deletions
@@ -17,7 +17,7 @@ class MarkAsMultipleEmailReadInteractor {
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
List<Email> emails,
List<EmailId> emailIds,
ReadActions readAction
) async* {
try {
@@ -31,25 +31,24 @@ class MarkAsMultipleEmailReadInteractor {
final currentMailboxState = listState.first;
final currentEmailState = listState.last;
final listEmailNeedMarkAsRead = emails
.where((email) => readAction == ReadActions.markAsUnread ? email.hasRead : !email.hasRead)
.toList();
final result = await _emailRepository.markAsRead(
session,
accountId,
emailIds,
readAction,
);
final result = await _emailRepository.markAsRead(session, accountId, listEmailNeedMarkAsRead, readAction);
if (listEmailNeedMarkAsRead.length == result.length) {
final countMarkAsReadSuccess = emails.length;
if (emailIds.length == result.length) {
yield Right(MarkAsMultipleEmailReadAllSuccess(
countMarkAsReadSuccess,
result.length,
readAction,
currentEmailState: currentEmailState,
currentMailboxState: currentMailboxState));
} else if (result.isEmpty) {
yield Left(MarkAsMultipleEmailReadAllFailure(readAction));
} else {
final countMarkAsReadSuccess = emails.length - (listEmailNeedMarkAsRead.length - result.length);
yield Right(MarkAsMultipleEmailReadHasSomeEmailFailure(
countMarkAsReadSuccess,
result.length,
readAction,
currentEmailState: currentEmailState,
currentMailboxState: currentMailboxState));
@@ -1,4 +1,5 @@
import 'package:core/core.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
@@ -15,7 +16,7 @@ class MarkAsStarMultipleEmailInteractor {
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
List<Email> emails,
List<EmailId> emailIds,
MarkStarAction markStarAction
) async* {
try {
@@ -23,24 +24,18 @@ class MarkAsStarMultipleEmailInteractor {
final currentEmailState = await _emailRepository.getEmailState(session, accountId);
final listEmailNeedMarkStar = emails
.where((email) => markStarAction == MarkStarAction.unMarkStar ? email.hasStarred : !email.hasStarred)
.toList();
final result = await _emailRepository.markAsStar(session, accountId, emailIds, markStarAction);
final result = await _emailRepository.markAsStar(session, accountId, listEmailNeedMarkStar, markStarAction);
if (listEmailNeedMarkStar.length == result.length) {
final countMarkStarSuccess = emails.length;
if (emailIds.length == result.length) {
yield Right(MarkAsStarMultipleEmailAllSuccess(
countMarkStarSuccess,
emailIds.length,
markStarAction,
currentEmailState: currentEmailState));
} else if (result.isEmpty) {
yield Left(MarkAsStarMultipleEmailAllFailure(markStarAction));
} else {
final countMarkStarSuccess = emails.length - (listEmailNeedMarkStar.length - result.length);
yield Right(MarkAsStarMultipleEmailHasSomeEmailFailure(
countMarkStarSuccess,
result.length,
markStarAction,
currentEmailState: currentEmailState));
}
@@ -224,8 +224,16 @@ mixin EmailActionController {
mailboxDashBoardController.deleteEmailPermanently(email);
}
void markAsEmailRead(PresentationEmail presentationEmail, ReadActions readActions, MarkReadAction markReadAction) async {
mailboxDashBoardController.markAsEmailRead(presentationEmail, readActions, markReadAction);
void markAsEmailRead(
PresentationEmail presentationEmail,
ReadActions readActions,
MarkReadAction markReadAction,
) {
mailboxDashBoardController.markAsEmailRead(
presentationEmail.id!,
readActions,
markReadAction,
);
}
void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction action) {