TF-3385 Update move emails
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:core/presentation/extensions/map_extensions.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';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.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';
|
||||
@@ -17,7 +20,8 @@ class MoveMultipleEmailToMailboxInteractor {
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MoveToMailboxRequest moveRequest
|
||||
MoveToMailboxRequest moveRequest,
|
||||
Map<EmailId, bool> emailIdsWithReadStatus,
|
||||
) async* {
|
||||
try {
|
||||
yield Right(LoadingMoveMultipleEmailToMailboxAll());
|
||||
@@ -30,10 +34,22 @@ class MoveMultipleEmailToMailboxInteractor {
|
||||
moveRequest.moveAction,
|
||||
moveRequest.emailActionType,
|
||||
destinationPath: moveRequest.destinationPath,
|
||||
originalMailboxIdsWithEmailIds: moveRequest.currentMailboxes,
|
||||
emailIdsWithReadStatus: emailIdsWithReadStatus,
|
||||
));
|
||||
} else if (result.emailIdsSuccess.isEmpty) {
|
||||
yield Left(MoveMultipleEmailToMailboxAllFailure(moveRequest.moveAction, moveRequest.emailActionType));
|
||||
} else {
|
||||
final originalMailboxIdsWithEmailIds = Map<MailboxId, List<EmailId>>.from(
|
||||
moveRequest.currentMailboxes,
|
||||
);
|
||||
final originalMailboxIdsWithMoveSucceededEmailIds = originalMailboxIdsWithEmailIds
|
||||
.map((key, value) => MapEntry(
|
||||
key,
|
||||
value.where(result.emailIdsSuccess.contains).toList()
|
||||
));
|
||||
final moveSucceededEmailIdsWithReadStatus = emailIdsWithReadStatus
|
||||
.where((emailId, _) => result.emailIdsSuccess.contains(emailId));
|
||||
yield Right(MoveMultipleEmailToMailboxHasSomeEmailFailure(
|
||||
result.emailIdsSuccess,
|
||||
moveRequest.currentMailboxes.keys.first,
|
||||
@@ -41,6 +57,8 @@ class MoveMultipleEmailToMailboxInteractor {
|
||||
moveRequest.moveAction,
|
||||
moveRequest.emailActionType,
|
||||
destinationPath: moveRequest.destinationPath,
|
||||
originalMailboxIdsWithMoveSucceededEmailIds: originalMailboxIdsWithMoveSucceededEmailIds,
|
||||
moveSucceededEmailIdsWithReadStatus: moveSucceededEmailIdsWithReadStatus,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user