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;
}