TF-1923 Add createdTime for DetailedEmail
(cherry picked from commit 817c35849338c483feaa2a68586b162a8a67b9a2)
This commit is contained in:
@@ -44,8 +44,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/remove_
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_composer_cache_on_web_interactor.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_composer_cache_on_web_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.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/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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -100,7 +100,7 @@ class ComposerBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
@@ -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/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/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/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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/model/detailed_email_hive_cache.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 NewEmailCacheManager _newEmailCacheManager;
|
||||||
final OpenedEmailCacheManager _openedEmailCacheManager;
|
final OpenedEmailCacheManager _openedEmailCacheManager;
|
||||||
final DetailedEmailCacheWorkerQueue _cacheWorkerQueue;
|
final NewEmailCacheWorkerQueue _newEmailCacheWorkerQueue;
|
||||||
final OpenedEmailCacheWorkerQueue _openedEmailCacheWorkerQueue;
|
final OpenedEmailCacheWorkerQueue _openedEmailCacheWorkerQueue;
|
||||||
final EmailCacheManager _emailCacheManager;
|
final EmailCacheManager _emailCacheManager;
|
||||||
final SendingEmailCacheManager _sendingEmailCacheManager;
|
final SendingEmailCacheManager _sendingEmailCacheManager;
|
||||||
@@ -59,7 +59,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
|||||||
EmailHiveCacheDataSourceImpl(
|
EmailHiveCacheDataSourceImpl(
|
||||||
this._newEmailCacheManager,
|
this._newEmailCacheManager,
|
||||||
this._openedEmailCacheManager,
|
this._openedEmailCacheManager,
|
||||||
this._cacheWorkerQueue,
|
this._newEmailCacheWorkerQueue,
|
||||||
this._openedEmailCacheWorkerQueue,
|
this._openedEmailCacheWorkerQueue,
|
||||||
this._emailCacheManager,
|
this._emailCacheManager,
|
||||||
this._sendingEmailCacheManager,
|
this._sendingEmailCacheManager,
|
||||||
@@ -131,6 +131,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
|||||||
Future<void> storeDetailedNewEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
Future<void> storeDetailedNewEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
final task = HiveTask(
|
final task = HiveTask(
|
||||||
|
id: detailedEmail.emailId.asString,
|
||||||
runnable: () async {
|
runnable: () async {
|
||||||
final fileSaved = await _fileUtils.saveToFile(
|
final fileSaved = await _fileUtils.saveToFile(
|
||||||
nameFile: detailedEmail.emailId.asString,
|
nameFile: detailedEmail.emailId.asString,
|
||||||
@@ -139,15 +140,16 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
|||||||
);
|
);
|
||||||
|
|
||||||
final detailedEmailSaved = detailedEmail.fromEmailContentPath(fileSaved.path);
|
final detailedEmailSaved = detailedEmail.fromEmailContentPath(fileSaved.path);
|
||||||
|
final detailedEmailCacheSaved = detailedEmailSaved.toHiveCache();
|
||||||
|
|
||||||
final detailedEmailCache = await _newEmailCacheManager.storeDetailedNewEmail(
|
final detailedEmailCache = await _newEmailCacheManager.storeDetailedNewEmail(
|
||||||
accountId,
|
accountId,
|
||||||
session.username,
|
session.username,
|
||||||
detailedEmailSaved.toHiveCache());
|
detailedEmailCacheSaved);
|
||||||
|
|
||||||
return detailedEmailCache;
|
return detailedEmailCache;
|
||||||
});
|
});
|
||||||
return _cacheWorkerQueue.addTask(task);
|
return _newEmailCacheWorkerQueue.addTask(task);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,6 +174,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
|||||||
Future<void> storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
Future<void> storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
final task = HiveTask(
|
final task = HiveTask(
|
||||||
|
id: detailedEmail.emailId.asString,
|
||||||
runnable: () async {
|
runnable: () async {
|
||||||
final fileSaved = await _fileUtils.saveToFile(
|
final fileSaved = await _fileUtils.saveToFile(
|
||||||
nameFile: detailedEmail.emailId.asString,
|
nameFile: detailedEmail.emailId.asString,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ extension DetailedEmailExtension on DetailedEmail {
|
|||||||
DetailedEmailHiveCache toHiveCache() {
|
DetailedEmailHiveCache toHiveCache() {
|
||||||
return DetailedEmailHiveCache(
|
return DetailedEmailHiveCache(
|
||||||
emailId: emailId.asString,
|
emailId: emailId.asString,
|
||||||
timeSaved: DateTime.now(),
|
timeSaved: createdTime,
|
||||||
attachments: attachments?.toHiveCache(),
|
attachments: attachments?.toHiveCache(),
|
||||||
headers: headers?.toList().toHiveCache(),
|
headers: headers?.toList().toHiveCache(),
|
||||||
keywords: keywords?.toMapString(),
|
keywords: keywords?.toMapString(),
|
||||||
@@ -26,6 +26,7 @@ extension DetailedEmailExtension on DetailedEmail {
|
|||||||
DetailedEmail fromEmailContentPath(String path) {
|
DetailedEmail fromEmailContentPath(String path) {
|
||||||
return DetailedEmail(
|
return DetailedEmail(
|
||||||
emailId: emailId,
|
emailId: emailId,
|
||||||
|
createdTime: createdTime,
|
||||||
attachments: attachments,
|
attachments: attachments,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ extension DetailedEmailHiveCacheExtension on DetailedEmailHiveCache {
|
|||||||
DetailedEmail toDetailedEmailWithContent(String emailContent) {
|
DetailedEmail toDetailedEmailWithContent(String emailContent) {
|
||||||
return DetailedEmail(
|
return DetailedEmail(
|
||||||
emailId: EmailId(Id(emailId)),
|
emailId: EmailId(Id(emailId)),
|
||||||
|
createdTime: timeSaved,
|
||||||
attachments: attachments?.toAttachment(),
|
attachments: attachments?.toAttachment(),
|
||||||
headers: headers?.toSetEmailHeader(),
|
headers: headers?.toSetEmailHeader(),
|
||||||
keywords: keywords != null
|
keywords: keywords != null
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ extension EmailExtension on Email {
|
|||||||
DetailedEmail toDetailedEmail({String? htmlEmailContent}) {
|
DetailedEmail toDetailedEmail({String? htmlEmailContent}) {
|
||||||
return DetailedEmail(
|
return DetailedEmail(
|
||||||
emailId: id!,
|
emailId: id!,
|
||||||
|
createdTime: DateTime.now(),
|
||||||
attachments: allAttachments,
|
attachments: allAttachments,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
keywords: keywords,
|
keywords: keywords,
|
||||||
|
|||||||
@@ -11,9 +11,11 @@ class DetailedEmail with EquatableMixin {
|
|||||||
final Map<KeyWordIdentifier, bool>? keywords;
|
final Map<KeyWordIdentifier, bool>? keywords;
|
||||||
final String? htmlEmailContent;
|
final String? htmlEmailContent;
|
||||||
final String? emailContentPath;
|
final String? emailContentPath;
|
||||||
|
final DateTime createdTime;
|
||||||
|
|
||||||
DetailedEmail({
|
DetailedEmail({
|
||||||
required this.emailId,
|
required this.emailId,
|
||||||
|
required this.createdTime,
|
||||||
this.attachments,
|
this.attachments,
|
||||||
this.headers,
|
this.headers,
|
||||||
this.keywords,
|
this.keywords,
|
||||||
@@ -24,6 +26,7 @@ class DetailedEmail with EquatableMixin {
|
|||||||
@override
|
@override
|
||||||
List<Object?> get props => [
|
List<Object?> get props => [
|
||||||
emailId,
|
emailId,
|
||||||
|
createdTime,
|
||||||
attachments,
|
attachments,
|
||||||
headers,
|
headers,
|
||||||
keywords,
|
keywords,
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ class GetEmailContentInteractor {
|
|||||||
}
|
}
|
||||||
) async* {
|
) async* {
|
||||||
try {
|
try {
|
||||||
|
log('GetEmailContentInteractor::_getStoredOpenedEmail(): CALLED');
|
||||||
final detailedEmail = await emailRepository.getStoredOpenedEmail(session, accountId, emailId);
|
final detailedEmail = await emailRepository.getStoredOpenedEmail(session, accountId, emailId);
|
||||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||||
emailContent: detailedEmail.htmlEmailContent ?? "",
|
emailContent: detailedEmail.htmlEmailContent ?? "",
|
||||||
@@ -130,6 +131,7 @@ class GetEmailContentInteractor {
|
|||||||
}
|
}
|
||||||
) async* {
|
) async* {
|
||||||
try {
|
try {
|
||||||
|
log('GetEmailContentInteractor::_getStoredNewEmail():CALLED');
|
||||||
final detailedEmail = await emailRepository.getStoredNewEmail(session, accountId, emailId);
|
final detailedEmail = await emailRepository.getStoredNewEmail(session, accountId, emailId);
|
||||||
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
yield Right<Failure, Success>(GetEmailContentFromCacheSuccess(
|
||||||
emailContent: detailedEmail.htmlEmailContent ?? "",
|
emailContent: detailedEmail.htmlEmailContent ?? "",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.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/core/session/session.dart';
|
||||||
@@ -25,6 +26,7 @@ class StoreNewEmailInteractor {
|
|||||||
_emailRepository.storeEmail(session, accountId, email),
|
_emailRepository.storeEmail(session, accountId, email),
|
||||||
_emailRepository.storeDetailedNewEmail(session, accountId, detailedEmail),
|
_emailRepository.storeDetailedNewEmail(session, accountId, detailedEmail),
|
||||||
]);
|
]);
|
||||||
|
log('StoreNewEmailInteractor::execute():Store Success | EMAIL: ${detailedEmail.htmlEmailContent} | TIME: ${detailedEmail.createdTime}');
|
||||||
yield Right<Failure, Success>(StoreNewEmailSuccess());
|
yield Right<Failure, Success>(StoreNewEmailSuccess());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
yield Left<Failure, Success>(StoreNewEmailFailure(e));
|
yield Left<Failure, Success>(StoreNewEmailFailure(e));
|
||||||
|
|||||||
@@ -347,7 +347,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
if (emailLoaded != null) {
|
if (emailLoaded != null) {
|
||||||
dispatchState(Right<Failure, Success>(GetEmailContentLoading()));
|
dispatchState(Right<Failure, Success>(GetEmailContentLoading()));
|
||||||
await Future.delayed(const Duration(milliseconds: 300));
|
|
||||||
consumeState(Stream.value(Right<Failure, Success>(
|
consumeState(Stream.value(Right<Failure, Success>(
|
||||||
GetEmailContentSuccess(
|
GetEmailContentSuccess(
|
||||||
emailContent: emailLoaded.emailContent,
|
emailContent: emailLoaded.emailContent,
|
||||||
@@ -407,6 +406,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
|||||||
if (PlatformInfo.isMobile) {
|
if (PlatformInfo.isMobile) {
|
||||||
final detailedEmail = DetailedEmail(
|
final detailedEmail = DetailedEmail(
|
||||||
emailId: currentEmail!.id!,
|
emailId: currentEmail!.id!,
|
||||||
|
createdTime: DateTime.now(),
|
||||||
attachments: attachments,
|
attachments: attachments,
|
||||||
headers: currentEmail?.emailHeader?.toSet(),
|
headers: currentEmail?.emailHeader?.toSet(),
|
||||||
keywords: currentEmail?.keywords,
|
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/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/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/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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.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.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
+2
-2
@@ -94,8 +94,8 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/spam_report_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -250,7 +250,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
|||||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repository_impl.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -65,7 +65,7 @@ class SendEmailInteractorBindings extends InteractorsBindings {
|
|||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
import 'package:tmail_ui_user/features/offline_mode/hive_worker/hive_worker_queue.dart';
|
|
||||||
|
|
||||||
class DetailedEmailCacheWorkerQueue extends WorkerQueue {
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get workerName => 'DetailedEmailCache';
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/file_utils.dart';
|
import 'package:core/utils/file_utils.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||||
@@ -24,20 +25,19 @@ class NewEmailCacheManager {
|
|||||||
DetailedEmailHiveCache detailedEmailCache
|
DetailedEmailHiveCache detailedEmailCache
|
||||||
) async {
|
) async {
|
||||||
final listDetailedEmails = await getAllDetailedEmails(accountId, userName);
|
final listDetailedEmails = await getAllDetailedEmails(accountId, userName);
|
||||||
|
log('NewEmailCacheManager::storeDetailedNewEmail():listDetailedEmails: $listDetailedEmails');
|
||||||
if (listDetailedEmails.length >= CachingConstants.maxNumberNewEmailsForOffline) {
|
if (listDetailedEmails.length >= CachingConstants.maxNumberNewEmailsForOffline) {
|
||||||
final lastElementsListEmail = listDetailedEmails.sublist(
|
final lastElementsListEmail = listDetailedEmails.sublist(CachingConstants.maxNumberNewEmailsForOffline - 1);
|
||||||
CachingConstants.maxNumberNewEmailsForOffline - 1,
|
|
||||||
listDetailedEmails.length);
|
|
||||||
for (var email in lastElementsListEmail) {
|
for (var email in lastElementsListEmail) {
|
||||||
if (email.emailContentPath != null) {
|
if (email.emailContentPath != null) {
|
||||||
await _deleteFileExisted(email.emailContentPath!);
|
await _deleteFileExisted(email.emailContentPath!);
|
||||||
}
|
}
|
||||||
await removeDetailedEmail(accountId, userName, email.emailId);
|
await removeDetailedEmail(accountId, userName, email.emailId);
|
||||||
}
|
}
|
||||||
|
log('NewEmailCacheManager::storeDetailedNewEmail(): DELETE COMPLETED');
|
||||||
}
|
}
|
||||||
await insertDetailedEmail(accountId, userName, detailedEmailCache);
|
await insertDetailedEmail(accountId, userName, detailedEmailCache);
|
||||||
|
log('NewEmailCacheManager::storeDetailedNewEmail(): INSERT COMPLETED');
|
||||||
return detailedEmailCache;
|
return detailedEmailCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,4 +82,6 @@ class NewEmailCacheManager {
|
|||||||
throw NotFoundStoredNewEmailException();
|
throw NotFoundStoredNewEmailException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> closeNewEmailHiveCacheBox() => _cacheClient.closeBox();
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
import 'package:tmail_ui_user/features/offline_mode/hive_worker/hive_worker_queue.dart';
|
||||||
|
|
||||||
|
class NewEmailCacheWorkerQueue extends WorkerQueue {
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get workerName => 'NewEmailCache';
|
||||||
|
}
|
||||||
@@ -54,9 +54,7 @@ class OpenedEmailCacheManager {
|
|||||||
final listDetailedEmails = await getAllDetailedEmails(accountId, userName);
|
final listDetailedEmails = await getAllDetailedEmails(accountId, userName);
|
||||||
|
|
||||||
if (listDetailedEmails.length >= CachingConstants.maxNumberOpenedEmailsForOffline) {
|
if (listDetailedEmails.length >= CachingConstants.maxNumberOpenedEmailsForOffline) {
|
||||||
final lastElementsListEmail = listDetailedEmails.sublist(
|
final lastElementsListEmail = listDetailedEmails.sublist(CachingConstants.maxNumberOpenedEmailsForOffline - 1);
|
||||||
CachingConstants.maxNumberOpenedEmailsForOffline - 1,
|
|
||||||
listDetailedEmails.length);
|
|
||||||
for (var email in lastElementsListEmail) {
|
for (var email in lastElementsListEmail) {
|
||||||
if (email.emailContentPath != null) {
|
if (email.emailContentPath != null) {
|
||||||
await _deleteFileExisted(email.emailContentPath!);
|
await _deleteFileExisted(email.emailContentPath!);
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ import 'package:tmail_ui_user/features/offline_mode/hive_worker/hive_worker_queu
|
|||||||
class OpenedEmailCacheWorkerQueue extends WorkerQueue {
|
class OpenedEmailCacheWorkerQueue extends WorkerQueue {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get workerName => 'OpenedEmailCacheQueue';
|
String get workerName => 'OpenedEmailCache';
|
||||||
}
|
}
|
||||||
@@ -23,8 +23,8 @@ import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/state_dataso
|
|||||||
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -106,7 +106,7 @@ class FcmInteractorBindings extends InteractorsBindings {
|
|||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.d
|
|||||||
import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart';
|
import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart';
|
||||||
|
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/action/fcm_action.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/action/fcm_action.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/bindings/fcm_interactor_bindings.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/bindings/fcm_interactor_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/push_notification/presentation/controller/fcm_base_controller.dart';
|
import 'package:tmail_ui_user/features/push_notification/presentation/controller/fcm_base_controller.dart';
|
||||||
@@ -50,6 +51,7 @@ class FcmMessageController extends FcmBaseController {
|
|||||||
DynamicUrlInterceptors? _dynamicUrlInterceptors;
|
DynamicUrlInterceptors? _dynamicUrlInterceptors;
|
||||||
AuthorizationInterceptors? _authorizationInterceptors;
|
AuthorizationInterceptors? _authorizationInterceptors;
|
||||||
GetSessionInteractor? _getSessionInteractor;
|
GetSessionInteractor? _getSessionInteractor;
|
||||||
|
NewEmailCacheManager? _newEmailCacheManager;
|
||||||
|
|
||||||
FcmMessageController._internal() {
|
FcmMessageController._internal() {
|
||||||
_listenFcmStream();
|
_listenFcmStream();
|
||||||
@@ -197,7 +199,9 @@ class FcmMessageController extends FcmBaseController {
|
|||||||
FcmInteractorBindings().dependencies();
|
FcmInteractorBindings().dependencies();
|
||||||
});
|
});
|
||||||
|
|
||||||
return await _getInteractorBindings();
|
await _getInteractorBindings();
|
||||||
|
|
||||||
|
await _newEmailCacheManager?.closeNewEmailHiveCacheBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _getInteractorBindings() {
|
Future<void> _getInteractorBindings() {
|
||||||
@@ -206,6 +210,7 @@ class FcmMessageController extends FcmBaseController {
|
|||||||
_dynamicUrlInterceptors = getBinding<DynamicUrlInterceptors>();
|
_dynamicUrlInterceptors = getBinding<DynamicUrlInterceptors>();
|
||||||
_authorizationInterceptors = getBinding<AuthorizationInterceptors>();
|
_authorizationInterceptors = getBinding<AuthorizationInterceptors>();
|
||||||
_getSessionInteractor = getBinding<GetSessionInteractor>();
|
_getSessionInteractor = getBinding<GetSessionInteractor>();
|
||||||
|
_newEmailCacheManager = getBinding<NewEmailCacheManager>();
|
||||||
FcmTokenController.instance.initialize();
|
FcmTokenController.instance.initialize();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError('FcmMessageController::_getBindings(): ${e.toString()}');
|
logError('FcmMessageController::_getBindings(): ${e.toString()}');
|
||||||
|
|||||||
+2
-2
@@ -4,12 +4,12 @@ import 'package:get/get.dart';
|
|||||||
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
import 'package:tmail_ui_user/features/base/interactors_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/email/data/datasource_impl/email_hive_cache_datasource_impl.dart';
|
import 'package:tmail_ui_user/features/email/data/datasource_impl/email_hive_cache_datasource_impl.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_manager.dart';
|
||||||
|
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/data/repository/sending_queue_repository_impl.dart';
|
import 'package:tmail_ui_user/features/sending_queue/data/repository/sending_queue_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
|
import 'package:tmail_ui_user/features/sending_queue/domain/repository/sending_queue_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_multiple_sending_email_interactor.dart';
|
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_multiple_sending_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_sending_email_interactor.dart';
|
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/delete_sending_email_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/get_all_sending_email_interactor.dart';
|
import 'package:tmail_ui_user/features/sending_queue/domain/usecases/get_all_sending_email_interactor.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/opened_email_cache_manager.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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -29,7 +29,7 @@ class SendingQueueInteractorBindings extends InteractorsBindings {
|
|||||||
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
Get.lazyPut(() => EmailHiveCacheDataSourceImpl(
|
||||||
Get.find<NewEmailCacheManager>(),
|
Get.find<NewEmailCacheManager>(),
|
||||||
Get.find<OpenedEmailCacheManager>(),
|
Get.find<OpenedEmailCacheManager>(),
|
||||||
Get.find<DetailedEmailCacheWorkerQueue>(),
|
Get.find<NewEmailCacheWorkerQueue>(),
|
||||||
Get.find<OpenedEmailCacheWorkerQueue>(),
|
Get.find<OpenedEmailCacheWorkerQueue>(),
|
||||||
Get.find<EmailCacheManager>(),
|
Get.find<EmailCacheManager>(),
|
||||||
Get.find<SendingEmailCacheManager>(),
|
Get.find<SendingEmailCacheManager>(),
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager
|
|||||||
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/share_preference_spam_report_data_source.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/data/local/share_preference_spam_report_data_source.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.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_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_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/opened_email_cache_worker_queue.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||||
@@ -105,7 +105,7 @@ class LocalBindings extends Bindings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _bindingWorkerQueue() {
|
void _bindingWorkerQueue() {
|
||||||
Get.put(DetailedEmailCacheWorkerQueue());
|
Get.put(NewEmailCacheWorkerQueue());
|
||||||
Get.put(OpenedEmailCacheWorkerQueue());
|
Get.put(OpenedEmailCacheWorkerQueue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user