TF-3941 Thread Detail Thread level mark read/star, archive and spam

This commit is contained in:
DatDang
2025-08-05 14:15:03 +07:00
committed by Dat H. Pham
parent f44118af48
commit b7cd3f7179
35 changed files with 902 additions and 552 deletions
@@ -3,7 +3,10 @@ import 'dart:math';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/presentation_email.dart';
import 'package:tmail_ui_user/features/thread/presentation/extensions/list_presentation_email_extensions.dart';
import 'package:tmail_ui_user/features/thread_detail/domain/model/email_in_thread_detail_info.dart';
class ThreadDetailPresentationUtils {
const ThreadDetailPresentationUtils._();
@@ -90,4 +93,32 @@ class ThreadDetailPresentationUtils {
...created,
];
}
static List<EmailInThreadDetailInfo> refreshThreadDetailInfo({
required List<EmailInThreadDetailInfo> original,
required List<PresentationEmail> created,
required List<PresentationEmail> updated,
required List<EmailId> destroyed,
required MailboxId? sentMailboxId,
required String? ownEmailAddress,
}) {
return [
...original
.whereNot((email) => destroyed.contains(email.emailId))
.map((email) {
final updatedInOriginal = updated.firstWhereOrNull(
(updatedEmail) => updatedEmail.id == email.emailId,
);
return email.copyWith(
keywords: updatedInOriginal?.keywords,
mailboxIds: updatedInOriginal?.mailboxIds,
);
}),
...created.toEmailsInThreadDetailInfo(
sentMailboxId: sentMailboxId,
ownEmailAddress: ownEmailAddress,
),
];
}
}