TF-3370 Handle SetError when make email action (Mark as read/star/move/delete)

This commit is contained in:
dab246
2025-01-02 13:58:30 +07:00
committed by Dat H. Pham
parent 47963d162b
commit 0f94e52d35
17 changed files with 800 additions and 181 deletions
@@ -11,6 +11,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;
@@ -83,7 +85,10 @@ class EmailRepositoryImpl extends EmailRepository {
}
@override
Future<List<EmailId>> markAsRead(
Future<({
List<EmailId> emailIdsSuccess,
Map<Id, SetError> mapErrors,
})> markAsRead(
Session session,
AccountId accountId,
List<EmailId> emailIds,
@@ -124,12 +129,26 @@ class EmailRepositoryImpl extends EmailRepository {
}
@override
Future<List<EmailId>> moveToMailbox(Session session, AccountId accountId, MoveToMailboxRequest moveRequest) {
return emailDataSource[DataSourceType.network]!.moveToMailbox(session, accountId, moveRequest);
Future<({
List<EmailId> emailIdsSuccess,
Map<Id, SetError> mapErrors,
})> moveToMailbox(
Session session,
AccountId accountId,
MoveToMailboxRequest moveRequest,
) {
return emailDataSource[DataSourceType.network]!.moveToMailbox(
session,
accountId,
moveRequest,
);
}
@override
Future<List<EmailId>> markAsStar(
Future<({
List<EmailId> emailIdsSuccess,
Map<Id, SetError> mapErrors,
})> markAsStar(
Session session,
AccountId accountId,
List<EmailId> emailIds,
@@ -228,8 +247,19 @@ class EmailRepositoryImpl extends EmailRepository {
}
@override
Future<List<EmailId>> deleteMultipleEmailsPermanently(Session session, AccountId accountId, List<EmailId> emailIds) {
return emailDataSource[DataSourceType.network]!.deleteMultipleEmailsPermanently(session, accountId, emailIds);
Future<({
List<EmailId> emailIdsSuccess,
Map<Id, SetError> mapErrors,
})> deleteMultipleEmailsPermanently(
Session session,
AccountId accountId,
List<EmailId> emailIds,
) {
return emailDataSource[DataSourceType.network]!.deleteMultipleEmailsPermanently(
session,
accountId,
emailIds,
);
}
@override