TF-1718 Check List-Unsubscribe in header of email & parsing to EmailUnsubscribe

(cherry picked from commit 9dc046a951e5198461178860c8ebe4bedff9062f)
This commit is contained in:
dab246
2023-11-15 19:55:38 +07:00
committed by Dat Vu
parent 7cf5c08ef5
commit 94909470af
8 changed files with 168 additions and 18 deletions
+12
View File
@@ -1,6 +1,8 @@
import 'dart:convert';
import 'package:collection/collection.dart';
import 'package:core/utils/app_logger.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
@@ -11,6 +13,8 @@ import 'package:model/model.dart';
extension EmailExtension on Email {
static const String unsubscribeHeaderName = 'List-Unsubscribe';
String asString() => jsonEncode(toJson());
bool get hasRead => keywords?.containsKey(KeyWordIdentifier.emailSeen) == true;
@@ -23,6 +27,14 @@ extension EmailExtension on Email {
bool get withAttachments => hasAttachment == true;
String get listUnsubscribe {
final listUnsubscribe = headers?.firstWhereOrNull((header) => header.name == unsubscribeHeaderName);
log('EmailExtension::listUnsubscribe: $listUnsubscribe');
return listUnsubscribe?.value ?? '';
}
bool get hasListUnsubscribe => listUnsubscribe.isNotEmpty;
bool hasReadReceipt(Map<MailboxId, PresentationMailbox> mapMailbox) {
final mailboxCurrent = findMailboxContain(mapMailbox);
return !hasMdnSent &&