TF-3370 Handle SetError when make email action (Mark as read/star/move/delete)
This commit is contained in:
@@ -10,6 +10,8 @@ import 'package:dio/dio.dart';
|
||||
import 'package:email_recovery/email_recovery/email_recovery_action.dart';
|
||||
import 'package:email_recovery/email_recovery/email_recovery_action_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||
@@ -45,7 +47,10 @@ abstract class EmailRepository {
|
||||
}
|
||||
);
|
||||
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Future<({
|
||||
List<EmailId> emailIdsSuccess,
|
||||
Map<Id, SetError> mapErrors,
|
||||
})> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
@@ -77,9 +82,19 @@ abstract class EmailRepository {
|
||||
{CancelToken? cancelToken}
|
||||
);
|
||||
|
||||
Future<List<EmailId>> moveToMailbox(Session session, AccountId accountId, MoveToMailboxRequest moveRequest);
|
||||
Future<({
|
||||
List<EmailId> emailIdsSuccess,
|
||||
Map<Id, SetError> mapErrors,
|
||||
})> moveToMailbox(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MoveToMailboxRequest moveRequest,
|
||||
);
|
||||
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Future<({
|
||||
List<EmailId> emailIdsSuccess,
|
||||
Map<Id, SetError> mapErrors,
|
||||
})> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
@@ -114,7 +129,14 @@ abstract class EmailRepository {
|
||||
{CancelToken? cancelToken}
|
||||
);
|
||||
|
||||
Future<List<EmailId>> deleteMultipleEmailsPermanently(Session session, AccountId accountId, List<EmailId> emailIds);
|
||||
Future<({
|
||||
List<EmailId> emailIdsSuccess,
|
||||
Map<Id, SetError> mapErrors,
|
||||
})> deleteMultipleEmailsPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
);
|
||||
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
|
||||
+4
-4
@@ -16,10 +16,10 @@ class DeleteMultipleEmailsPermanentlyInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(LoadingDeleteMultipleEmailsPermanentlyAll());
|
||||
final listResult = await _emailRepository.deleteMultipleEmailsPermanently(session, accountId, emailIds);
|
||||
if (listResult.length == emailIds.length) {
|
||||
yield Right<Failure, Success>(DeleteMultipleEmailsPermanentlyAllSuccess(listResult));
|
||||
} else if (listResult.isNotEmpty) {
|
||||
yield Right<Failure, Success>(DeleteMultipleEmailsPermanentlyHasSomeEmailFailure(listResult));
|
||||
if (listResult.emailIdsSuccess.length == emailIds.length) {
|
||||
yield Right<Failure, Success>(DeleteMultipleEmailsPermanentlyAllSuccess(listResult.emailIdsSuccess));
|
||||
} else if (listResult.emailIdsSuccess.isNotEmpty) {
|
||||
yield Right<Failure, Success>(DeleteMultipleEmailsPermanentlyHasSomeEmailFailure(listResult.emailIdsSuccess));
|
||||
} else {
|
||||
yield Left<Failure, Success>(DeleteMultipleEmailsPermanentlyAllFailure());
|
||||
}
|
||||
|
||||
@@ -29,11 +29,15 @@ class MarkAsEmailReadInteractor {
|
||||
readAction,
|
||||
);
|
||||
|
||||
yield Right(MarkAsEmailReadSuccess(
|
||||
result.first,
|
||||
readAction,
|
||||
markReadAction,
|
||||
));
|
||||
if (result.emailIdsSuccess.isEmpty) {
|
||||
yield Left(MarkAsEmailReadFailure(readAction));
|
||||
} else {
|
||||
yield Right(MarkAsEmailReadSuccess(
|
||||
result.emailIdsSuccess.first,
|
||||
readAction,
|
||||
markReadAction,
|
||||
));
|
||||
}
|
||||
} catch (e) {
|
||||
yield Left(MarkAsEmailReadFailure(readAction, exception: e));
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ class MoveToMailboxInteractor {
|
||||
try {
|
||||
yield Right(LoadingMoveToMailbox());
|
||||
final result = await _emailRepository.moveToMailbox(session, accountId, moveRequest);
|
||||
if (result.isNotEmpty) {
|
||||
if (result.emailIdsSuccess.isNotEmpty) {
|
||||
yield Right(MoveToMailboxSuccess(
|
||||
result.first,
|
||||
result.emailIdsSuccess.first,
|
||||
moveRequest.currentMailboxes.keys.first,
|
||||
moveRequest.destinationMailboxId,
|
||||
moveRequest.moveAction,
|
||||
|
||||
Reference in New Issue
Block a user