broadcastUpdateNip65RelayMarker method
Future<UserRelayList?>
broadcastUpdateNip65RelayMarker(
- String relayUrl,
- ReadWriteMarker marker,
- Iterable<
String> broadcastRelays, - EventSigner signer,
Implementation
Future<UserRelayList?> broadcastUpdateNip65RelayMarker(String relayUrl,
ReadWriteMarker marker,
Iterable<String> broadcastRelays, EventSigner signer) async {
UserRelayList? userRelayList = await ensureUpToDateUserRelayList(signer);
if (userRelayList == null) {
int now = DateTime
.now()
.millisecondsSinceEpoch ~/ 1000;
userRelayList = UserRelayList(
pubKey: signer.getPublicKey(),
relays: {
for (String url in broadcastRelays) url: ReadWriteMarker.readWrite
},
createdAt: now,
refreshedTimestamp: now);
}
String? url;
if (userRelayList.relays.keys.contains(relayUrl)) {
url = relayUrl;
} else {
String? cleanUrl = Relay.clean(relayUrl);
if (cleanUrl != null && userRelayList.relays.keys.contains(cleanUrl)) {
url = cleanUrl;
} else if (userRelayList.relays.keys.contains("$relayUrl/")) {
url = "$relayUrl/";
}
}
if (url != null) {
userRelayList.relays[url] = marker;
userRelayList.refreshedTimestamp = Helpers.now;
await broadcastEvent(
userRelayList.toNip65().toEvent(), broadcastRelays, signer);
await cacheManager.saveUserRelayList(userRelayList);
}
return userRelayList;
}