fromEvent static method

Future<Nip51Set?> fromEvent(
  1. Nip01Event event,
  2. EventSigner? signer
)
override

Implementation

static Future<Nip51Set?> fromEvent(
  Nip01Event event,
  EventSigner? signer,
) async {
  String? name = event.getDtag();
  if (name == null) {
    return null;
  }
  Nip51Set set = Nip51Set(
    pubKey: event.pubKey,
    name: name,
    createdAt: event.createdAt,
    kind: event.kind,
    elements: [],
  );
  set.id = event.id;
  if (Helpers.isNotBlank(event.content) &&
      signer != null &&
      signer.canSign()) {
    try {
      // backward compatibility: Check if content uses NIP-04 format (contains ?iv=)
      final isNip04 = event.content.contains('?iv=');
      final json = isNip04
          // ignore: deprecated_member_use_from_same_package
          ? await signer.decrypt(
              event.content,
              signer.getPublicKey(),
            )
          : await signer.decryptNip44(
              ciphertext: event.content,
              senderPubKey: signer.getPublicKey(),
            );
      List<dynamic> tags = jsonDecode(json ?? '');
      set.parseTags(tags, private: true);
      set.parseSetTags(tags);
    } catch (e) {
      set.name = "<invalid encrypted content>";
      Logger.log.d(e);
    }
  } else {
    set.parseTags(event.tags, private: false);
    set.parseSetTags(event.tags);
  }
  return set;
}