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);
@@ -56,7 +56,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (mailboxContain != null && accountId != null && trashMailboxId != null) {
_moveToTrashAction(accountId, MoveToMailboxRequest(
{mailboxContain.id: [email.id]},
{mailboxContain.id: email.id != null ? [email.id!] : []},
trashMailboxId,
MoveAction.moving,
mailboxDashBoardController.sessionCurrent!,
@@ -75,7 +75,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (mailboxContain != null && accountId != null && spamMailboxId != null) {
moveToSpamAction(accountId, MoveToMailboxRequest(
{mailboxContain.id: [email.id]},
{mailboxContain.id: email.id != null ? [email.id!] : []},
spamMailboxId,
MoveAction.moving,
mailboxDashBoardController.sessionCurrent!,
@@ -91,7 +91,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
if (inboxMailboxId != null && accountId != null && spamMailboxId != null) {
moveToSpamAction(accountId, MoveToMailboxRequest(
{spamMailboxId: [email.id]},
{spamMailboxId: email.id != null ? [email.id!] : []},
inboxMailboxId,
MoveAction.moving,
mailboxDashBoardController.sessionCurrent!,
@@ -161,21 +161,21 @@ mixin EmailActionController on ViewAsDialogActionMixin {
) {
if (destinationMailbox.isTrash) {
moveToSpamAction(accountId, MoveToMailboxRequest(
{currentMailbox.id: [emailSelected.id]},
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
destinationMailbox.id,
MoveAction.moving,
session,
EmailActionType.moveToTrash));
} else if (destinationMailbox.isSpam) {
moveToSpamAction(accountId, MoveToMailboxRequest(
{currentMailbox.id: [emailSelected.id]},
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
destinationMailbox.id,
MoveAction.moving,
session,
EmailActionType.moveToSpam));
} else {
_moveToMailboxAction(accountId, MoveToMailboxRequest(
{currentMailbox.id: [emailSelected.id]},
{currentMailbox.id: emailSelected.id != null ? [emailSelected.id!] : []},
destinationMailbox.id,
MoveAction.moving,
session,
@@ -887,8 +887,8 @@ class ThreadController extends BaseController with EmailActionController {
}
void calculateDragValue(PresentationEmail? currentPresentationEmail) {
if(currentPresentationEmail != null) {
if(mailboxDashBoardController.listEmailSelected.findEmail(currentPresentationEmail.id) != null){
if (currentPresentationEmail != null) {
if (currentPresentationEmail.id != null && mailboxDashBoardController.listEmailSelected.findEmail(currentPresentationEmail.id!) != null){
listEmailDrag.clear();
listEmailDrag.addAll(mailboxDashBoardController.listEmailSelected);
} else {