TF-1809: Create func get detailed email in data layer
(cherry picked from commit 76a5e6fddfc7fb79e9e487d914b29de784ba523f)
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/attachment_hive_cache.dart';
|
||||
|
||||
extension AttachmentExtension on AttachmentHiveCache {
|
||||
Attachment toAttachment() {
|
||||
return Attachment(
|
||||
partId: PartId(partId!),
|
||||
blobId: Id(blobId!),
|
||||
size: UnsignedInt(size!),
|
||||
name: name,
|
||||
type: MediaType.parse(type!),
|
||||
cid: cid,
|
||||
disposition: disposition?.toContentDisposition(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/extensions/list_acttachments_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/extensions/list_email_header_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/model/detailed_email.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/detailed_email_hive_cache.dart';
|
||||
|
||||
extension DetailedEmailHiveCacheExtension on DetailedEmailHiveCache {
|
||||
DetailedEmail toDetailedEmailWithContent(String emailContent) {
|
||||
return DetailedEmail(
|
||||
emailId: EmailId(Id(emailId)),
|
||||
attachments: attachments?.toAttachment(),
|
||||
headers: headers?.toListEmailHeader(),
|
||||
htmlEmailContent: emailContent,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_header.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/email_header_hive_cache.dart';
|
||||
|
||||
extension EmailHeaderHiveCacheExtension on EmailHeaderHiveCache {
|
||||
EmailHeader toEmailHeader() => EmailHeader(name, value);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import 'package:model/email/attachment.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/extensions/attachment_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/attachment_hive_cache.dart';
|
||||
|
||||
extension ListAttachmentsHiveCacheExtension on List<AttachmentHiveCache> {
|
||||
List<Attachment> toAttachment() => map((attachmentHiveCache) => attachmentHiveCache.toAttachment()).toList();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_header.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/extensions/email_header_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/email_header_hive_cache.dart';
|
||||
|
||||
extension ListEmailHeaderExtension on List<EmailHeaderHiveCache> {
|
||||
List<EmailHeader> toListEmailHeader() => map((emailHeaderHiveCache) => emailHeaderHiveCache.toEmailHeader()).toList();
|
||||
}
|
||||
@@ -96,5 +96,5 @@ abstract class EmailRepository {
|
||||
|
||||
Future<void> storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail);
|
||||
|
||||
Future<DetailedEmail> getOpenedEmail(Session session, AccountId accountId);
|
||||
Future<DetailedEmail> getOpenedEmail(Session session, AccountId accountId, EmailId emailId);
|
||||
}
|
||||
@@ -4,6 +4,7 @@ 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:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/get_opened_email_from_cache_state.dart';
|
||||
|
||||
@@ -12,10 +13,10 @@ class GetOpenedEmailFromCacheInteractor {
|
||||
|
||||
GetOpenedEmailFromCacheInteractor(this._emailRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId) async* {
|
||||
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, EmailId emailId) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(GetOpenedEmailLoading());
|
||||
final detailedEmail = await _emailRepository.getOpenedEmail(session, accountId);
|
||||
final detailedEmail = await _emailRepository.getOpenedEmail(session, accountId, emailId);
|
||||
yield Right<Failure, Success>(GetOpenedEmailSuccess(detailedEmail));
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(GetOpenedEmailFailure(e));
|
||||
|
||||
Reference in New Issue
Block a user