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