TF-3334 Remove Email/get of mark as read & mark as star action
This commit is contained in:
@@ -43,7 +43,12 @@ abstract class EmailDataSource {
|
||||
}
|
||||
);
|
||||
|
||||
Future<List<Email>> markAsRead(Session session, AccountId accountId, List<Email> emails, ReadActions readActions);
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
);
|
||||
|
||||
Future<List<DownloadTaskId>> downloadAttachments(
|
||||
List<Attachment> attachments,
|
||||
@@ -72,10 +77,10 @@ abstract class EmailDataSource {
|
||||
|
||||
Future<List<EmailId>> moveToMailbox(Session session, AccountId accountId, MoveToMailboxRequest moveRequest);
|
||||
|
||||
Future<List<Email>> markAsStar(
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
List<EmailId> emailIds,
|
||||
MarkStarAction markStarAction
|
||||
);
|
||||
|
||||
@@ -144,7 +149,7 @@ abstract class EmailDataSource {
|
||||
|
||||
Future<EmailRecoveryAction> getRestoredDeletedMessage(EmailRecoveryActionId emailRecoveryActionId);
|
||||
|
||||
Future<Email> storeEventAttendanceStatus(
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
|
||||
@@ -75,14 +75,14 @@ class EmailDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsRead(
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
ReadActions readActions
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
) {
|
||||
return Future.sync(() async {
|
||||
return await emailAPI.markAsRead(session, accountId, emails, readActions);
|
||||
return await emailAPI.markAsRead(session, accountId, emailIds, readActions);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@@ -119,9 +119,19 @@ class EmailDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsStar(Session session, AccountId accountId, List<Email> emails, MarkStarAction markStarAction) {
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
MarkStarAction markStarAction,
|
||||
) {
|
||||
return Future.sync(() async {
|
||||
return await emailAPI.markAsStar(session, accountId, emails, markStarAction);
|
||||
return await emailAPI.markAsStar(
|
||||
session,
|
||||
accountId,
|
||||
emailIds,
|
||||
markStarAction,
|
||||
);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@@ -318,7 +328,7 @@ class EmailDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Email> storeEventAttendanceStatus(
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
|
||||
@@ -120,12 +120,17 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsRead(Session session, AccountId accountId, List<Email> emails, ReadActions readActions) {
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsStar(Session session, AccountId accountId, List<Email> emails, MarkStarAction markStarAction) {
|
||||
Future<List<EmailId>> markAsStar(Session session, AccountId accountId, List<EmailId> emailIds, MarkStarAction markStarAction) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
|
||||
@@ -44,13 +44,11 @@ import 'package:model/account/authentication_type.dart';
|
||||
import 'package:model/download/download_task_id.dart';
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/email_property.dart';
|
||||
import 'package:model/email/mark_star_action.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:model/extensions/email_extension.dart';
|
||||
import 'package:model/extensions/email_id_extensions.dart';
|
||||
import 'package:model/extensions/keyword_identifier_extension.dart';
|
||||
import 'package:model/extensions/list_email_extension.dart';
|
||||
import 'package:model/extensions/list_email_id_extension.dart';
|
||||
import 'package:model/extensions/mailbox_id_extension.dart';
|
||||
import 'package:model/extensions/session_extension.dart';
|
||||
@@ -239,24 +237,18 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Email>> markAsRead(
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
ReadActions readActions
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
) async {
|
||||
final setEmailMethod = SetEmailMethod(accountId)
|
||||
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsRead(readActions));
|
||||
|
||||
final getEmailMethod = GetEmailMethod(accountId)
|
||||
..addIds(emails.listEmailIds.toIds().toSet())
|
||||
..addProperties(Properties({EmailProperty.keywords}));
|
||||
..addUpdates(emailIds.generateMapUpdateObjectMarkAsRead(readActions));
|
||||
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||
|
||||
requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final getEmailInvocation = requestBuilder.invocation(getEmailMethod);
|
||||
final setEmailInvocation = requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final capabilities = setEmailMethod.requiredCapabilities
|
||||
.toCapabilitiesSupportTeamMailboxes(session, accountId);
|
||||
@@ -266,15 +258,22 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
final getEmailResponse = response.parse<GetEmailResponse>(
|
||||
getEmailInvocation.methodCallId,
|
||||
GetEmailResponse.deserialize);
|
||||
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||
setEmailInvocation.methodCallId,
|
||||
SetEmailResponse.deserialize,
|
||||
);
|
||||
|
||||
return Future.sync(() async {
|
||||
return getEmailResponse!.list;
|
||||
}).catchError((error) {
|
||||
throw error;
|
||||
});
|
||||
final emailIdUpdated = setEmailResponse?.updated
|
||||
?.keys
|
||||
.map((id) => EmailId(id))
|
||||
.toList() ?? [];
|
||||
final mapErrors = handleSetResponse([setEmailResponse]);
|
||||
|
||||
if (emailIdUpdated.isNotEmpty) {
|
||||
return emailIdUpdated;
|
||||
} else {
|
||||
throw SetMethodException(mapErrors);
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<DownloadTaskId>> downloadAttachments(
|
||||
@@ -449,24 +448,18 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
return listEmailIdRequest.where((emailId) => listUpdated.expand((e) => e).toList().contains(emailId.id)).toList();
|
||||
}
|
||||
|
||||
Future<List<Email>> markAsStar(
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
List<EmailId> emailIds,
|
||||
MarkStarAction markStarAction
|
||||
) async {
|
||||
final setEmailMethod = SetEmailMethod(accountId)
|
||||
..addUpdates(emails.listEmailIds.generateMapUpdateObjectMarkAsStar(markStarAction));
|
||||
|
||||
final getEmailMethod = GetEmailMethod(accountId)
|
||||
..addIds(emails.listEmailIds.toIds().toSet())
|
||||
..addProperties(Properties({EmailProperty.keywords}));
|
||||
..addUpdates(emailIds.generateMapUpdateObjectMarkAsStar(markStarAction));
|
||||
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||
|
||||
requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final getEmailInvocation = requestBuilder.invocation(getEmailMethod);
|
||||
final setEmailInvocation = requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final capabilities = setEmailMethod.requiredCapabilities
|
||||
.toCapabilitiesSupportTeamMailboxes(session, accountId);
|
||||
@@ -476,15 +469,22 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
final getEmailResponse = response.parse<GetEmailResponse>(
|
||||
getEmailInvocation.methodCallId,
|
||||
GetEmailResponse.deserialize);
|
||||
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||
setEmailInvocation.methodCallId,
|
||||
SetEmailResponse.deserialize,
|
||||
);
|
||||
|
||||
return Future.sync(() async {
|
||||
return getEmailResponse!.list;
|
||||
}).catchError((error) {
|
||||
throw error;
|
||||
});
|
||||
final emailIdUpdated = setEmailResponse?.updated
|
||||
?.keys
|
||||
.map((id) => EmailId(id))
|
||||
.toList() ?? [];
|
||||
final mapErrors = handleSetResponse([setEmailResponse]);
|
||||
|
||||
if (emailIdUpdated.isNotEmpty) {
|
||||
return emailIdUpdated;
|
||||
} else {
|
||||
throw SetMethodException(mapErrors);
|
||||
}
|
||||
}
|
||||
|
||||
Future<Email> saveEmailAsDrafts(
|
||||
@@ -756,7 +756,7 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
}
|
||||
}
|
||||
|
||||
Future<Email> storeEventAttendanceStatus(
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
@@ -765,15 +765,9 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
final setEmailMethod = SetEmailMethod(accountId)
|
||||
..addUpdates(emailId.generateMapUpdateObjectEventAttendanceStatus(eventActionType));
|
||||
|
||||
final getEmailMethod = GetEmailMethod(accountId)
|
||||
..addIds({emailId.id})
|
||||
..addProperties(Properties({EmailProperty.keywords}));
|
||||
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||
|
||||
requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final getEmailInvocation = requestBuilder.invocation(getEmailMethod);
|
||||
final setEmailInvocation = requestBuilder.invocation(setEmailMethod);
|
||||
|
||||
final capabilities = setEmailMethod.requiredCapabilities
|
||||
.toCapabilitiesSupportTeamMailboxes(session, accountId);
|
||||
@@ -783,16 +777,19 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
final getEmailResponse = response.parse<GetEmailResponse>(
|
||||
getEmailInvocation.methodCallId,
|
||||
GetEmailResponse.deserialize);
|
||||
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||
setEmailInvocation.methodCallId,
|
||||
SetEmailResponse.deserialize,
|
||||
);
|
||||
|
||||
final listEmails = getEmailResponse?.list ?? [];
|
||||
final emailIdUpdated = setEmailResponse?.updated
|
||||
?.keys
|
||||
.map((id) => EmailId(id))
|
||||
.toList() ?? [];
|
||||
final mapErrors = handleSetResponse([setEmailResponse]);
|
||||
|
||||
if (listEmails.isNotEmpty) {
|
||||
return listEmails.first;
|
||||
} else {
|
||||
throw NotFoundEmailException();
|
||||
if (emailIdUpdated.isEmpty) {
|
||||
throw SetMethodException(mapErrors);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,13 +83,18 @@ class EmailRepositoryImpl extends EmailRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsRead(
|
||||
Future<List<EmailId>> markAsRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
ReadActions readActions
|
||||
List<EmailId> emailIds,
|
||||
ReadActions readActions,
|
||||
) {
|
||||
return emailDataSource[DataSourceType.network]!.markAsRead(session, accountId, emails, readActions);
|
||||
return emailDataSource[DataSourceType.network]!.markAsRead(
|
||||
session,
|
||||
accountId,
|
||||
emailIds,
|
||||
readActions,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -124,13 +129,18 @@ class EmailRepositoryImpl extends EmailRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsStar(
|
||||
Future<List<EmailId>> markAsStar(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
List<Email> emails,
|
||||
List<EmailId> emailIds,
|
||||
MarkStarAction markStarAction
|
||||
) {
|
||||
return emailDataSource[DataSourceType.network]!.markAsStar(session, accountId, emails, markStarAction);
|
||||
return emailDataSource[DataSourceType.network]!.markAsStar(
|
||||
session,
|
||||
accountId,
|
||||
emailIds,
|
||||
markStarAction,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -303,7 +313,7 @@ class EmailRepositoryImpl extends EmailRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Email> storeEventAttendanceStatus(
|
||||
Future<void> storeEventAttendanceStatus(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
|
||||
Reference in New Issue
Block a user