loadRelayDeliveryTargets method

  1. @override
Future<List<RelayDeliveryTarget>> loadRelayDeliveryTargets({
  1. String? eventId,
  2. String? relayUrl,
  3. RelayDeliveryState? state,
  4. bool excludeAcked = false,
  5. int? limit,
})
override

Implementation

@override
Future<List<RelayDeliveryTarget>> loadRelayDeliveryTargets({
  String? eventId,
  String? relayUrl,
  RelayDeliveryState? state,
  bool excludeAcked = false,
  int? limit,
}) async {
  var records = relayDeliveryTargets.values.where((target) {
    if (eventId != null && target.eventId != eventId) {
      return false;
    }
    if (relayUrl != null && target.relayUrl != relayUrl) {
      return false;
    }
    if (state != null && target.state != state) {
      return false;
    }
    if (excludeAcked && target.state == RelayDeliveryState.acked) {
      return false;
    }
    return true;
  }).toList()
    ..sort((a, b) {
      final retryA = a.nextRetryAt ?? 0;
      final retryB = b.nextRetryAt ?? 0;
      if (retryA != retryB) {
        return retryA.compareTo(retryB);
      }
      return a.key.compareTo(b.key);
    });

  if (limit != null && limit < records.length) {
    records = records.take(limit).toList();
  }

  return records;
}