TF-1626 Remove id of email when call Email/set method

(cherry picked from commit ce1d27d893fd406aa812d4e4ea9debe1ec265ddb)
This commit is contained in:
dab246
2023-03-21 18:27:48 +07:00
committed by Dat Vu
parent 61a9414fe1
commit 0d77789c5f
19 changed files with 120 additions and 106 deletions
@@ -13,7 +13,7 @@ import 'package:tmail_ui_user/features/thread/data/extensions/email_address_hive
extension EmailCacheExtension on EmailCache {
Email toEmail() {
return Email(
EmailId(Id(id)),
id: EmailId(Id(id)),
keywords: keywords != null
? Map.fromIterables(keywords!.keys.map((value) => KeyWordIdentifier(value)), keywords!.values)
: null,
@@ -8,7 +8,7 @@ extension EmailExtension on Email {
EmailCache toEmailCache() {
return EmailCache(
id.id.value,
id!.id.value,
keywords: keywords?.toMapString(),
size: size?.value.round(),
receivedAt: receivedAt?.value,
@@ -11,6 +11,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart'
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/email_property.dart';
import 'package:model/extensions/list_email_extension.dart';
import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
import 'package:tmail_ui_user/features/thread/data/model/empty_trash_folder_arguments.dart';
import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart';
@@ -68,11 +69,9 @@ class ThreadIsolateWorker {
if (newEmailList.isNotEmpty) {
lastEmail = newEmailList.last;
hasEmails = true;
final emailIds = newEmailList.map((email) => email.id).toList();
final listEmailIdDeleted = await args.emailAPI.deleteMultipleEmailsPermanently(args.accountId, newEmailList.listEmailIds);
final listEmailIdDeleted = await args.emailAPI.deleteMultipleEmailsPermanently(args.accountId, emailIds);
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == emailIds.length) {
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == newEmailList.listEmailIds.length) {
sendPort.send(listEmailIdDeleted);
}
emailListCompleted.addAll(listEmailIdDeleted);
@@ -117,11 +116,9 @@ class ThreadIsolateWorker {
if (newEmailList.isNotEmpty) {
lastEmail = newEmailList.last;
hasEmails = true;
final emailIds = newEmailList.map((email) => email.id).toList();
final listEmailIdDeleted = await _emailAPI.deleteMultipleEmailsPermanently(accountId, newEmailList.listEmailIds);
final listEmailIdDeleted = await _emailAPI.deleteMultipleEmailsPermanently(accountId, emailIds);
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == emailIds.length) {
if (listEmailIdDeleted.isNotEmpty && listEmailIdDeleted.length == newEmailList.listEmailIds.length) {
await updateDestroyedEmailCache(listEmailIdDeleted);
}
emailListCompleted.addAll(listEmailIdDeleted);
@@ -157,7 +157,9 @@ class ThreadRepositoryImpl extends ThreadRepository {
}
dartz.Tuple2<Email, Email?> _combineUpdatedWithEmailInCache(Email updatedEmail, List<Email>? emailCacheList) {
final emailOld = emailCacheList?.findEmailById(updatedEmail.id);
final emailOld = updatedEmail.id != null
? emailCacheList?.findEmailById(updatedEmail.id!)
: null;
if (emailOld != null) {
log('ThreadRepositoryImpl::_combineUpdatedWithEmailInCache(): cache hit');
return dartz.Tuple2(updatedEmail, emailOld);