TF-153 Combine moveToMailbox and moveToTrash to moveToMailbox using EmailActionType object

This commit is contained in:
dab246
2022-04-15 15:51:37 +07:00
committed by Dat H. Pham
parent 60aabfb6d1
commit 16c5aed64e
45 changed files with 268 additions and 722 deletions
@@ -18,7 +18,7 @@ class MarkAsMultipleEmailReadInteractor {
) async* {
try {
final listEmailNeedMarkAsRead = emails
.where((email) => readAction == ReadActions.markAsUnread ? email.isReadEmail() : email.isUnReadEmail())
.where((email) => readAction == ReadActions.markAsUnread ? email.hasRead : !email.hasRead)
.toList();
final result = await _emailRepository.markAsRead(accountId, listEmailNeedMarkAsRead, readAction);
@@ -18,7 +18,7 @@ class MarkAsStarMultipleEmailInteractor {
) async* {
try {
final listEmailNeedMarkStar = emails
.where((email) => markStarAction == MarkStarAction.unMarkStar ? email.isFlaggedEmail() : !email.isFlaggedEmail())
.where((email) => markStarAction == MarkStarAction.unMarkStar ? email.hasStarred : !email.hasStarred)
.toList();
final result = await _emailRepository.markAsStar(accountId, listEmailNeedMarkStar, markStarAction);
@@ -3,7 +3,7 @@ import 'dart:async';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_mailbox_state.dart';
@@ -12,7 +12,7 @@ class MoveMultipleEmailToMailboxInteractor {
MoveMultipleEmailToMailboxInteractor(this._emailRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveRequest moveRequest) async* {
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveToMailboxRequest moveRequest) async* {
try {
final result = await _emailRepository.moveToMailbox(accountId, moveRequest);
@@ -22,19 +22,21 @@ class MoveMultipleEmailToMailboxInteractor {
moveRequest.currentMailboxId,
moveRequest.destinationMailboxId,
moveRequest.moveAction,
moveRequest.destinationPath));
moveRequest.emailActionType,
destinationPath: moveRequest.destinationPath));
} else if (result.isEmpty) {
yield Left(MoveMultipleEmailToMailboxAllFailure(moveRequest.moveAction));
yield Left(MoveMultipleEmailToMailboxAllFailure(moveRequest.moveAction, moveRequest.emailActionType));
} else {
yield Right(MoveMultipleEmailToMailboxHasSomeEmailFailure(
result,
moveRequest.currentMailboxId,
moveRequest.destinationMailboxId,
moveRequest.moveAction,
moveRequest.destinationPath));
moveRequest.emailActionType,
destinationPath: moveRequest.destinationPath));
}
} catch (e) {
yield Left(MoveMultipleEmailToMailboxFailure(e, moveRequest.moveAction));
yield Left(MoveMultipleEmailToMailboxFailure(e, moveRequest.emailActionType, moveRequest.moveAction));
}
}
}
@@ -1,38 +0,0 @@
import 'dart:async';
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_to_trash_request.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/thread/domain/state/move_multiple_email_to_trash_state.dart';
class MoveMultipleEmailToTrashInteractor {
final EmailRepository _emailRepository;
MoveMultipleEmailToTrashInteractor(this._emailRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveToTrashRequest moveRequest) async* {
try {
final result = await _emailRepository.moveToTrash(accountId, moveRequest);
if (moveRequest.emailIds.length == result.length) {
yield Right(MoveMultipleEmailToTrashAllSuccess(
result,
moveRequest.currentMailboxId,
moveRequest.trashMailboxId,
moveRequest.moveAction));
} else if (result.isEmpty) {
yield Left(MoveMultipleEmailToTrashAllFailure(moveRequest.moveAction));
} else {
yield Right(MoveMultipleEmailToTrashHasSomeEmailFailure(
result,
moveRequest.currentMailboxId,
moveRequest.trashMailboxId,
moveRequest.moveAction));
}
} catch (e) {
yield Left(MoveMultipleEmailToTrashFailure(e, moveRequest.moveAction));
}
}
}