filter method

List<Notification> filter({
  1. NotificationType? type,
  2. bool? read,
  3. DateTime? readBefore,
  4. DateTime? readAfter,
  5. DateTime? timestampBefore,
  6. DateTime? timestampAfter,
})

Filters notifications based on the provided parameters.

Implementation

List<Notification> filter({
  NotificationType? type,
  bool? read,
  DateTime? readBefore,
  DateTime? readAfter,
  DateTime? timestampBefore,
  DateTime? timestampAfter,
}) {
  if (!state.hasData) return [];

  return state.requireData.where((element) {
    if (type != null && element.type != type) return false;
    if (read != null && element.read != read) return false;
    if (readBefore != null && element.readAt == null) return false;
    if (readBefore != null && element.readAt!.isAfter(readBefore)) return false;
    if (readAfter != null && element.readAt == null) return false;
    if (readAfter != null && element.readAt!.isBefore(readAfter)) return false;
    if (timestampBefore != null && element.timestamp.isAfter(timestampBefore)) return false;
    if (timestampAfter != null && element.timestamp.isBefore(timestampAfter)) return false;

    return true;
  }).toList();
}