TF-1923 Add createdTime for DetailedEmail
(cherry picked from commit 817c35849338c483feaa2a68586b162a8a67b9a2)
This commit is contained in:
@@ -31,8 +31,8 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_r
|
||||
import 'package:tmail_ui_user/features/offline_mode/extensions/list_sending_email_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/extensions/sending_email_hive_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/hive_worker/hive_task.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/detailed_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/detailed_email_hive_cache.dart';
|
||||
@@ -49,7 +49,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
|
||||
final NewEmailCacheManager _newEmailCacheManager;
|
||||
final OpenedEmailCacheManager _openedEmailCacheManager;
|
||||
final DetailedEmailCacheWorkerQueue _cacheWorkerQueue;
|
||||
final NewEmailCacheWorkerQueue _newEmailCacheWorkerQueue;
|
||||
final OpenedEmailCacheWorkerQueue _openedEmailCacheWorkerQueue;
|
||||
final EmailCacheManager _emailCacheManager;
|
||||
final SendingEmailCacheManager _sendingEmailCacheManager;
|
||||
@@ -59,7 +59,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
EmailHiveCacheDataSourceImpl(
|
||||
this._newEmailCacheManager,
|
||||
this._openedEmailCacheManager,
|
||||
this._cacheWorkerQueue,
|
||||
this._newEmailCacheWorkerQueue,
|
||||
this._openedEmailCacheWorkerQueue,
|
||||
this._emailCacheManager,
|
||||
this._sendingEmailCacheManager,
|
||||
@@ -131,6 +131,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
Future<void> storeDetailedNewEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
||||
return Future.sync(() async {
|
||||
final task = HiveTask(
|
||||
id: detailedEmail.emailId.asString,
|
||||
runnable: () async {
|
||||
final fileSaved = await _fileUtils.saveToFile(
|
||||
nameFile: detailedEmail.emailId.asString,
|
||||
@@ -139,15 +140,16 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
);
|
||||
|
||||
final detailedEmailSaved = detailedEmail.fromEmailContentPath(fileSaved.path);
|
||||
final detailedEmailCacheSaved = detailedEmailSaved.toHiveCache();
|
||||
|
||||
final detailedEmailCache = await _newEmailCacheManager.storeDetailedNewEmail(
|
||||
accountId,
|
||||
session.username,
|
||||
detailedEmailSaved.toHiveCache());
|
||||
detailedEmailCacheSaved);
|
||||
|
||||
return detailedEmailCache;
|
||||
});
|
||||
return _cacheWorkerQueue.addTask(task);
|
||||
return _newEmailCacheWorkerQueue.addTask(task);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@@ -172,6 +174,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
Future<void> storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
||||
return Future.sync(() async {
|
||||
final task = HiveTask(
|
||||
id: detailedEmail.emailId.asString,
|
||||
runnable: () async {
|
||||
final fileSaved = await _fileUtils.saveToFile(
|
||||
nameFile: detailedEmail.emailId.asString,
|
||||
|
||||
@@ -11,7 +11,7 @@ extension DetailedEmailExtension on DetailedEmail {
|
||||
DetailedEmailHiveCache toHiveCache() {
|
||||
return DetailedEmailHiveCache(
|
||||
emailId: emailId.asString,
|
||||
timeSaved: DateTime.now(),
|
||||
timeSaved: createdTime,
|
||||
attachments: attachments?.toHiveCache(),
|
||||
headers: headers?.toList().toHiveCache(),
|
||||
keywords: keywords?.toMapString(),
|
||||
@@ -26,6 +26,7 @@ extension DetailedEmailExtension on DetailedEmail {
|
||||
DetailedEmail fromEmailContentPath(String path) {
|
||||
return DetailedEmail(
|
||||
emailId: emailId,
|
||||
createdTime: createdTime,
|
||||
attachments: attachments,
|
||||
headers: headers,
|
||||
keywords: keywords,
|
||||
|
||||
@@ -10,6 +10,7 @@ extension DetailedEmailHiveCacheExtension on DetailedEmailHiveCache {
|
||||
DetailedEmail toDetailedEmailWithContent(String emailContent) {
|
||||
return DetailedEmail(
|
||||
emailId: EmailId(Id(emailId)),
|
||||
createdTime: timeSaved,
|
||||
attachments: attachments?.toAttachment(),
|
||||
headers: headers?.toSetEmailHeader(),
|
||||
keywords: keywords != null
|
||||
|
||||
@@ -7,6 +7,7 @@ extension EmailExtension on Email {
|
||||
DetailedEmail toDetailedEmail({String? htmlEmailContent}) {
|
||||
return DetailedEmail(
|
||||
emailId: id!,
|
||||
createdTime: DateTime.now(),
|
||||
attachments: allAttachments,
|
||||
headers: headers,
|
||||
keywords: keywords,
|
||||
|
||||
@@ -11,9 +11,11 @@ class DetailedEmail with EquatableMixin {
|
||||
final Map<KeyWordIdentifier, bool>? keywords;
|
||||
final String? htmlEmailContent;
|
||||
final String? emailContentPath;
|
||||
final DateTime createdTime;
|
||||
|
||||
DetailedEmail({
|
||||
required this.emailId,
|
||||
required this.createdTime,
|
||||
this.attachments,
|
||||
this.headers,
|
||||
this.keywords,
|
||||
@@ -24,6 +26,7 @@ class DetailedEmail with EquatableMixin {
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
emailId,
|
||||
createdTime,
|
||||
attachments,
|
||||
headers,
|
||||
keywords,
|
||||
|
||||
@@ -97,6 +97,7 @@ class GetEmailContentInteractor {
|
||||
}
|
||||
) async* {
|
||||
try {
|
||||
log('GetEmailContentInteractor::_getStoredOpenedEmail(): CALLED');
|
||||
final detailedEmail = await emailRepository.getStoredOpenedEmail(session, accountId, emailId);
|
||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||
emailContent: detailedEmail.htmlEmailContent ?? "",
|
||||
@@ -130,6 +131,7 @@ class GetEmailContentInteractor {
|
||||
}
|
||||
) async* {
|
||||
try {
|
||||
log('GetEmailContentInteractor::_getStoredNewEmail():CALLED');
|
||||
final detailedEmail = await emailRepository.getStoredNewEmail(session, accountId, emailId);
|
||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||
emailContent: detailedEmail.htmlEmailContent ?? "",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:core/utils/app_logger.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';
|
||||
@@ -25,6 +26,7 @@ class StoreNewEmailInteractor {
|
||||
_emailRepository.storeEmail(session, accountId, email),
|
||||
_emailRepository.storeDetailedNewEmail(session, accountId, detailedEmail),
|
||||
]);
|
||||
log('StoreNewEmailInteractor::execute():Store Success | EMAIL: ${detailedEmail.htmlEmailContent} | TIME: ${detailedEmail.createdTime}');
|
||||
yield Right<Failure, Success>(StoreNewEmailSuccess());
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(StoreNewEmailFailure(e));
|
||||
|
||||
@@ -347,7 +347,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
if (emailLoaded != null) {
|
||||
dispatchState(Right<Failure, Success>(GetEmailContentLoading()));
|
||||
await Future.delayed(const Duration(milliseconds: 300));
|
||||
consumeState(Stream.value(Right<Failure, Success>(
|
||||
GetEmailContentSuccess(
|
||||
emailContent: emailLoaded.emailContent,
|
||||
@@ -407,6 +406,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
if (PlatformInfo.isMobile) {
|
||||
final detailedEmail = DetailedEmail(
|
||||
emailId: currentEmail!.id!,
|
||||
createdTime: DateTime.now(),
|
||||
attachments: attachments,
|
||||
headers: currentEmail?.emailHeader?.toSet(),
|
||||
keywords: currentEmail?.keywords,
|
||||
|
||||
@@ -43,8 +43,8 @@ import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repositor
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identity_interactors_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/detailed_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||
@@ -103,7 +103,7 @@ class EmailBindings extends BaseBindings {
|
||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||
Get.find<NewEmailCacheManager>(),
|
||||
Get.find<OpenedEmailCacheManager>(),
|
||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
||||
Get.find<NewEmailCacheWorkerQueue>(),
|
||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||
Get.find<EmailCacheManager>(),
|
||||
Get.find<SendingEmailCacheManager>(),
|
||||
|
||||
Reference in New Issue
Block a user