TF-78 Implement mark as unread when touch the "eye slash" icon on the top of screen EmailView

This commit is contained in:
dab246
2021-09-15 13:12:15 +07:00
committed by Dat H. Pham
parent 8721b08f33
commit 5fd305d102
29 changed files with 462 additions and 293 deletions
@@ -1,5 +1,6 @@
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/email/read_actions.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
abstract class EmailDataSource {
@@ -7,5 +8,5 @@ abstract class EmailDataSource {
Future<bool> sendEmail(AccountId accountId, EmailRequest emailRequest);
Future<bool> markAsRead(AccountId accountId, EmailId emailId, bool unread);
Future<bool> markAsRead(AccountId accountId, EmailId emailId, ReadActions readActions);
}
@@ -1,5 +1,6 @@
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/email/read_actions.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
@@ -29,9 +30,9 @@ class EmailDataSourceImpl extends EmailDataSource {
}
@override
Future<bool> markAsRead(AccountId accountId, EmailId emailId, bool unread) {
Future<bool> markAsRead(AccountId accountId, EmailId emailId, ReadActions readActions) {
return Future.sync(() async {
return await emailAPI.markAsRead(accountId, emailId, unread);
return await emailAPI.markAsRead(accountId, emailId, readActions);
}).catchError((error) {
throw error;
});
@@ -105,12 +105,10 @@ class EmailAPI {
});
}
Future<bool> markAsRead(AccountId accountId, EmailId emailId, bool unread) async {
Future<bool> markAsRead(AccountId accountId, EmailId emailId, ReadActions readAction) async {
final setEmailMethod = SetEmailMethod(accountId)
..addUpdates({
emailId.id: PatchObject({
KeyWordIdentifier.emailSeen.generatePath() : unread ? null : true
})
emailId.id: KeyWordIdentifier.emailSeen.generateReadActionPath(readAction)
});
final requestBuilder = JmapRequestBuilder(httpClient, ProcessingInvocation());
@@ -1,6 +1,7 @@
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/email/read_actions.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
@@ -22,7 +23,7 @@ class EmailRepositoryImpl extends EmailRepository {
}
@override
Future<bool> markAsRead(AccountId accountId, EmailId emailId, bool unread) {
return emailDataSource.markAsRead(accountId, emailId, unread);
Future<bool> markAsRead(AccountId accountId, EmailId emailId, ReadActions readAction) {
return emailDataSource.markAsRead(accountId, emailId, readAction);
}
}