TF-1600 Filter emails are available push notifications

(cherry picked from commit e20845f8b1401d2b4df7d9d7705f094aa431f49a)
This commit is contained in:
dab246
2023-03-30 19:15:08 +07:00
committed by Dat Vu
parent 0ff9de5e75
commit 26c74976f4
5 changed files with 33 additions and 0 deletions
+2
View File
@@ -90,6 +90,8 @@ class PresentationEmail with EquatableMixin {
String get routeWebAsString => routeWeb.toString();
bool get pushNotificationActivated => !isDraft && !hasRead;
@override
List<Object?> get props => [
id,
@@ -1,5 +1,6 @@
import 'package:collection/collection.dart';
import 'package:core/utils/app_logger.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/model.dart';
@@ -103,4 +104,13 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
}
int matchedIndex(EmailId emailId) => indexWhere((email) => email.id == emailId);
List<PresentationEmail> toEmailsAvailablePushNotification({List<MailboxId>? mailboxIdsNotPutNotifications}) {
log('ListPresentationEmailExtension::toEmailsAvailablePushNotification():mailboxIdsNotPutNotifications: $mailboxIdsNotPutNotifications');
if (mailboxIdsNotPutNotifications?.isNotEmpty == true) {
return where((email) => !email.isBelongToOneOfTheMailboxes(mailboxIdsNotPutNotifications!) && email.pushNotificationActivated).toList();
} else {
return where((email) => email.pushNotificationActivated).toList();
}
}
}
@@ -1,4 +1,5 @@
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
extension ListPresentationMailboxExtension on List<PresentationMailbox> {
@@ -14,4 +15,6 @@ extension ListPresentationMailboxExtension on List<PresentationMailbox> {
bool get isAllDefaultMailboxes => every((mailbox) => mailbox.isDefault);
bool get isAllUnreadMailboxes => every((mailbox) => mailbox.getCountUnReadEmails().isNotEmpty);
List<MailboxId> get mailboxIds => map((mailbox) => mailbox.id).toList();
}
@@ -2,6 +2,7 @@ import 'dart:ui';
import 'package:core/domain/extensions/datetime_extension.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/utils/app_logger.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
@@ -243,4 +244,19 @@ extension PresentationEmailExtension on PresentationEmail {
mailboxContain: mailboxContain
);
}
bool isBelongToOneOfTheMailboxes(List<MailboxId> mailboxIdsSource) {
final mapMailboxIds = mailboxIds;
mapMailboxIds?.removeWhere((key, value) => !value);
if (mapMailboxIds?.isNotEmpty == true) {
final listMailboxId = mapMailboxIds!.keys.toList();
log('PresentationEmailExtension::isBelongToOneOfTheMailboxes():listMailboxId: $listMailboxId');
final listMailboxIdValid = listMailboxId.where((mailboxId) => mailboxIdsSource.contains(mailboxId));
log('PresentationEmailExtension::isBelongToOneOfTheMailboxes():listMailboxIdValid: $listMailboxIdValid');
return listMailboxIdValid.isNotEmpty;
}
return false;
}
}
@@ -115,6 +115,8 @@ class PresentationMailbox with EquatableMixin {
}
}
bool get pushNotificationDeactivated => isOutbox || isSent || isDrafts || isTrash || isSpam;
@override
List<Object?> get props => [
id,