loadRelayDeliveryTargets method
Future<List<RelayDeliveryTarget> >
loadRelayDeliveryTargets({
- String? eventId,
- String? relayUrl,
- RelayDeliveryState? state,
- bool excludeAcked = false,
- int? limit,
override
Implementation
@override
Future<List<RelayDeliveryTarget>> loadRelayDeliveryTargets({
String? eventId,
String? relayUrl,
RelayDeliveryState? state,
bool excludeAcked = false,
int? limit,
}) async {
await dbRdy;
final targets = _loadKeyValuesByPrefix(_relayDeliveryTargetKeyPrefix)
.map(
(entry) => RelayDeliveryTarget.fromJson(
jsonDecode(entry.value!) as Map<String, dynamic>,
),
)
.toList();
_relayDeliveryTargets
..clear()
..addEntries(targets.map((target) => MapEntry(target.key, target)));
var filtered = targets.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 < filtered.length) {
filtered = filtered.take(limit).toList();
}
return filtered;
}