broadcastRemoveNip51Relay method

Future<Nip51List?> broadcastRemoveNip51Relay(
  1. int kind,
  2. String relayUrl,
  3. Iterable<String> broadcastRelays,
  4. EventSigner signer, {
  5. List<String>? defaultRelaysIfEmpty,
})

Implementation

Future<Nip51List?> broadcastRemoveNip51Relay(int kind, String relayUrl,
    Iterable<String> broadcastRelays,
    EventSigner signer,
    {List<String>? defaultRelaysIfEmpty}) async {
  if (!signer.canSign()) {
    throw Exception("cannot broadcast private nip51 list without a signer that can sign");
  }
  Nip51List? list = await getSingleNip51List(kind, signer, forceRefresh: true, );
  if ((list==null || list.allRelays.isEmpty) && defaultRelaysIfEmpty!=null && defaultRelaysIfEmpty.isNotEmpty) {
    list = Nip51List(
        kind: kind,
        pubKey: signer.getPublicKey(),
        createdAt: Helpers.now,
        elements: []
    );
    list.privateRelays = defaultRelaysIfEmpty;
  }
  if (list!=null && list.allRelays.isNotEmpty) {
    list.removeRelay(relayUrl);
    list.createdAt = Helpers.now;
    Nip01Event event = await list.toEvent(signer);
    await Future.wait([
      broadcastEvent(
          event, broadcastRelays, signer),
    ]);
    List<Nip01Event>? events = cacheManager.loadEvents(pubKeys: [signer.getPublicKey()], kinds: [kind]);
    for (var event in events) { cacheManager.removeEvent(event.id); }
    await cacheManager.saveEvent(event);
  }
  return list;
}