TF-1600 Filter emails are available push notifications
(cherry picked from commit e20845f8b1401d2b4df7d9d7705f094aa431f49a)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user