TF-1813 Implement GetAllSendingEmails for domain and data layer

(cherry picked from commit 35fb38a1ed860cfa65ee57ec6d1e5e715fb1b7a7)
This commit is contained in:
dab246
2023-06-01 14:03:46 +07:00
committed by Dat Vu
parent 8756c5fefb
commit cbf770cc08
9 changed files with 113 additions and 0 deletions
@@ -0,0 +1,17 @@
import 'package:jmap_dart_client/jmap/core/extensions/date_time_extension.dart';
import 'package:tmail_ui_user/features/composer/domain/model/sending_email.dart';
import 'package:tmail_ui_user/features/offline_mode/extensions/sending_email_hive_cache_extension.dart';
import 'package:tmail_ui_user/features/offline_mode/model/sending_email_hive_cache.dart';
extension ListSendingEmailHiveCacheExtension on List<SendingEmailHiveCache> {
List<SendingEmail> toSendingEmails() =>
map((sendingEmailCache) => sendingEmailCache.toSendingEmail()).toList();
void sortByLatestTime() {
sort((detailedEmail1, detailedEmail2) {
return detailedEmail1.createTime.compareToSort(detailedEmail2.createTime, false);
});
}
}
@@ -5,6 +5,7 @@ import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:model/extensions/account_id_extensions.dart';
import 'package:tmail_ui_user/features/caching/clients/sending_email_hive_cache_client.dart';
import 'package:tmail_ui_user/features/caching/utils/cache_utils.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/model/sending_email_hive_cache.dart';
class SendingEmailCacheManager {
@@ -22,4 +23,11 @@ class SendingEmailCacheManager {
log('SendingEmailCacheManager::storeSendingEmail():keyCache: $keyCache | sendingEmailHiveCache: $sendingEmailHiveCache');
return _hiveCacheClient.insertItem(keyCache, sendingEmailHiveCache);
}
Future<List<SendingEmailHiveCache>> getAllSendingEmails(AccountId accountId, UserName userName) async {
final sendingEmailsCache = await _hiveCacheClient.getListByTupleKey(accountId.asString, userName.value);
log('SendingEmailCacheManager::getAllSendingEmails():COUNT: ${sendingEmailsCache.length}');
sendingEmailsCache.sortByLatestTime();
return sendingEmailsCache;
}
}