broadcastAddNip51ListElement method

Future<Nip51List> broadcastAddNip51ListElement(
  1. int kind,
  2. String tag,
  3. String value,
  4. Iterable<String> broadcastRelays,
  5. EventSigner signer, {
  6. bool private = false,
})

Implementation

Future<Nip51List> broadcastAddNip51ListElement(int kind, String tag, String value,
    Iterable<String> broadcastRelays,
    EventSigner signer,
    {bool private=false}
    ) async {
  if (private && !signer.canSign()) {
    throw Exception("cannot broadcast private nip51 list without a signer that can sign");
  }
  Nip51List? list = await getSingleNip51List(kind, signer, forceRefresh: true, timeout: 2);
  list ??= Nip51List(
      kind: kind,
      pubKey: signer.getPublicKey(),
      createdAt: Helpers.now,
      elements: []
  );
  list.addElement(tag, value, private);
  list.createdAt = Helpers.now;
  Nip01Event event = await list.toEvent(signer);
  print(event);
  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;
}