TF-1869: Create func GetEmailFromCache and GetDetailedEmail

(cherry picked from commit 3a83a951e997db749363c19853bc7ac3ac0c650c)
This commit is contained in:
HuyNguyen
2023-05-23 18:03:51 +07:00
committed by Dat Vu
parent 1a54152a13
commit 7267ee2c64
4 changed files with 31 additions and 6 deletions
@@ -205,7 +205,18 @@ class EmailRepositoryImpl extends EmailRepository {
}
@override
Future<DetailedEmail?> getOpenedEmail(Session session, AccountId accountId, EmailId emailId) {
return emailDataSource[DataSourceType.hiveCache]!.getOpenedEmail(session, accountId, emailId);
Future<DetailedEmail?> 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<Email?> getEmailFromCache(Session session, AccountId accountId, EmailId emailId) {
return emailDataSource[DataSourceType.hiveCache]!.getEmailFromCache(session, accountId, emailId);
}
}
@@ -94,6 +94,8 @@ abstract class EmailRepository {
Future<void> storeEmailToCache(Session session, AccountId accountId, Email email);
Future<Email?> getEmailFromCache(Session session, AccountId accountId, EmailId emailId);
Future<void> storeOpenedEmail(Session session, AccountId accountId, DetailedEmail detailedEmail);
Future<DetailedEmail?> getOpenedEmail(Session session, AccountId accountId, EmailId emailId);
@@ -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<void> _deleteFileExisted(String pathFile) async {
await _fileUtils.deleteFile(pathFile);
}
Future<DetailedEmailHiveCache?> 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;
}
}
@@ -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<bool?> _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<DetailedEmailHiveCache?> getDetailEmailExistedInCache(
Future<DetailedEmailHiveCache?> getOpenedEmailExistedInCache(
AccountId accountId,
UserName userName,
EmailId emailId