From 7267ee2c640eb1ba0d9ea0f3b223501e415b2a9d Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Tue, 23 May 2023 18:03:51 +0700 Subject: [PATCH] TF-1869: Create func GetEmailFromCache and GetDetailedEmail (cherry picked from commit 3a83a951e997db749363c19853bc7ac3ac0c650c) --- .../data/repository/email_repository_impl.dart | 15 +++++++++++++-- .../email/domain/repository/email_repository.dart | 2 ++ .../manager/detailed_email_cache_manager.dart | 14 +++++++++++++- .../manager/opened_email_cache_manager.dart | 6 +++--- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lib/features/email/data/repository/email_repository_impl.dart b/lib/features/email/data/repository/email_repository_impl.dart index f8f15ce93..1c6a1d34b 100644 --- a/lib/features/email/data/repository/email_repository_impl.dart +++ b/lib/features/email/data/repository/email_repository_impl.dart @@ -205,7 +205,18 @@ class EmailRepositoryImpl extends EmailRepository { } @override - Future getOpenedEmail(Session session, AccountId accountId, EmailId emailId) { - return emailDataSource[DataSourceType.hiveCache]!.getOpenedEmail(session, accountId, emailId); + Future getOpenedEmail(Session session, AccountId accountId, EmailId emailId) async { + final detailedEmail = await emailDataSource[DataSourceType.hiveCache]!.getDetailedEmail(session, accountId, emailId); + final openedEmail = await emailDataSource[DataSourceType.hiveCache]!.getOpenedEmail(session, accountId, emailId); + if (detailedEmail != null) { + return detailedEmail; + } else { + return openedEmail; + } + } + + @override + Future getEmailFromCache(Session session, AccountId accountId, EmailId emailId) { + return emailDataSource[DataSourceType.hiveCache]!.getEmailFromCache(session, accountId, emailId); } } \ No newline at end of file diff --git a/lib/features/email/domain/repository/email_repository.dart b/lib/features/email/domain/repository/email_repository.dart index dd575c799..d8a174473 100644 --- a/lib/features/email/domain/repository/email_repository.dart +++ b/lib/features/email/domain/repository/email_repository.dart @@ -94,6 +94,8 @@ abstract class EmailRepository { Future storeEmailToCache(Session session, AccountId accountId, Email email); + Future getEmailFromCache(Session session, AccountId accountId, EmailId emailId); + Future storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail); Future getOpenedEmail(Session session, AccountId accountId, EmailId emailId); diff --git a/lib/features/offline_mode/manager/detailed_email_cache_manager.dart b/lib/features/offline_mode/manager/detailed_email_cache_manager.dart index bb1e68353..769a1405e 100644 --- a/lib/features/offline_mode/manager/detailed_email_cache_manager.dart +++ b/lib/features/offline_mode/manager/detailed_email_cache_manager.dart @@ -3,7 +3,8 @@ import 'package:core/utils/app_logger.dart'; import 'package:core/utils/file_utils.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/user_name.dart'; -import 'package:model/extensions/account_id_extensions.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email.dart'; +import 'package:model/model.dart'; import 'package:tmail_ui_user/features/caching/clients/detailed_email_hive_cache_client.dart'; import 'package:tmail_ui_user/features/caching/utils/cache_utils.dart'; import 'package:tmail_ui_user/features/caching/utils/caching_constants.dart'; @@ -69,4 +70,15 @@ class DetailedEmailCacheManager { Future _deleteFileExisted(String pathFile) async { await _fileUtils.deleteFile(pathFile); } + + Future getDetailEmailExistedInCache( + AccountId accountId, + UserName userName, + EmailId emailId + ) async { + final keyCache = TupleKey(emailId.asString, accountId.asString, userName.value).encodeKey; + final detailedEmailCache = await _cacheClient.getItem(keyCache); + log('DetailedEmailCacheManager::getDetailEmailExistedInCache():Email: $detailedEmailCache'); + return detailedEmailCache; + } } \ No newline at end of file diff --git a/lib/features/offline_mode/manager/opened_email_cache_manager.dart b/lib/features/offline_mode/manager/opened_email_cache_manager.dart index aba370962..a3649b10b 100644 --- a/lib/features/offline_mode/manager/opened_email_cache_manager.dart +++ b/lib/features/offline_mode/manager/opened_email_cache_manager.dart @@ -73,7 +73,7 @@ class OpenedEmailCacheManager { EmailId emailId ) async { final emailContentPathExists = await _isFileExisted(emailId); - final detailedEmailCacheExists = await getDetailEmailExistedInCache(accountId, userName, emailId); + final detailedEmailCacheExists = await getOpenedEmailExistedInCache(accountId, userName, emailId); return emailContentPathExists == true && detailedEmailCacheExists != null; } @@ -81,13 +81,13 @@ class OpenedEmailCacheManager { Future _isFileExisted(EmailId emailId) async { final fileSaved = await _fileUtils.isFileExisted( nameFile: emailId.asString, - folderPath: CachingConstants.openedEmailContentFolderNamee, + folderPath: CachingConstants.openedEmailContentFolderName, ); log('OpenedEmailCacheManager::_getDetailedEmailCache():_getEmailContentPath: $fileSaved'); return fileSaved; } - Future getDetailEmailExistedInCache( + Future getOpenedEmailExistedInCache( AccountId accountId, UserName userName, EmailId emailId