getNip51RelaySets method

Future<List<Nip51Set>?> getNip51RelaySets(
  1. int kind,
  2. EventSigner signer, {
  3. bool forceRefresh = false,
})

Implementation

Future<List<Nip51Set>?> getNip51RelaySets(int kind, EventSigner signer,
    {bool forceRefresh = false}) async {
  Nip51Set? relaySet;//getCachedNip51RelaySets(signer);
  if (relaySet==null || forceRefresh) {
    Map<String,Nip51Set> newRelaySets = {};
    await for (final event in (await requestRelays(bootstrapRelays.toList(),
        Filter(
          authors: [signer.getPublicKey()],
          kinds: [kind],
        ), timeout: 5)).stream) {
      if (event.getDtag()!=null) {
        Nip51Set? newRelaySet = newRelaySets[event.getDtag()];
        if (newRelaySet == null ||
            newRelaySet.createdAt < event.createdAt) {
          if (event.getDtag() != null) {
            newRelaySet = await Nip51Set.fromEvent(event, signer);
          }
          if (newRelaySet!=null) {
            await cacheManager.saveEvent(event);
            newRelaySets[newRelaySet.name] = newRelaySet;
          }
        }
      }
    }
    return newRelaySets.values.toList();
  }
  return [];
}