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,11 +3,14 @@ import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/extensions/account_id_extensions.dart';
import 'package:model/extensions/email_id_extensions.dart';
import 'package:tmail_ui_user/features/caching/utils/cache_utils.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/email_extension.dart';
import 'package:tmail_ui_user/features/thread/data/extensions/email_extension.dart';
import 'package:tmail_ui_user/features/thread/data/model/email_cache.dart';
import 'package:tmail_ui_user/features/thread_detail/domain/model/email_in_thread_detail_info.dart';
extension ListEmailExtension on List<Email> {
Map<String, EmailCache> toMapCache(AccountId accountId, UserName userName) {
@@ -39,4 +42,23 @@ extension ListEmailExtension on List<Email> {
return this;
}
List<EmailInThreadDetailInfo> toEmailsInThreadDetailInfo({
required MailboxId? sentMailboxId,
required String? ownEmailAddress,
}) {
return map(
(email) => EmailInThreadDetailInfo(
emailId: email.id!,
keywords: email.keywords,
mailboxIds: email.mailboxIds,
isValidToDisplay: sentMailboxId == null || ownEmailAddress == null
? true
: email.checkEmailValidForThreadDetail(
sentMailboxId,
ownEmailAddress,
),
),
).toList();
}
}