broadcastMetadata method

Future<Metadata> broadcastMetadata(
  1. Metadata metadata,
  2. Iterable<String> broadcastRelays,
  3. EventSigner eventSigner
)

Implementation

Future<Metadata> broadcastMetadata(Metadata metadata,
    Iterable<String> broadcastRelays, EventSigner eventSigner) async {
  Nip01Event? event = await _refreshMetadataEvent(eventSigner);
  if (event != null) {
    Map<String, dynamic> map = json.decode(event.content);
    map.addAll(metadata.toJson());
    event = Nip01Event(
        pubKey: event.pubKey,
        kind: event.kind,
        tags: event.tags,
        content: json.encode(map),
        createdAt: Helpers.now);
  } else {
    event = metadata.toEvent();
  }
  await _relayManager.broadcastEvent(event, broadcastRelays, eventSigner);
  metadata.updatedAt = Helpers.now;
  metadata.refreshedTimestamp = Helpers.now;
  await _cacheManager.saveMetadata(metadata);

  return metadata;
}