From dcd5030fcd6dfa0ea746c0192f5fc8d87f924c6e Mon Sep 17 00:00:00 2001 From: dtonon Date: Wed, 1 Jan 2025 20:30:54 +0100 Subject: [PATCH] Add NIP-22 support --- kinds.go | 1 + nip22/nip22.go | 24 ++++++++++++++++++++++++ sdk/thread.go | 23 +++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 nip22/nip22.go create mode 100644 sdk/thread.go diff --git a/kinds.go b/kinds.go index e31e112..28343d2 100644 --- a/kinds.go +++ b/kinds.go @@ -25,6 +25,7 @@ const ( KindChannelMuteUser int = 44 KindChess int = 64 KindMergeRequests int = 818 + KindComment int = 1111 KindBid int = 1021 KindBidConfirmation int = 1022 KindOpenTimestamps int = 1040 diff --git a/nip22/nip22.go b/nip22/nip22.go new file mode 100644 index 0000000..2206eb7 --- /dev/null +++ b/nip22/nip22.go @@ -0,0 +1,24 @@ +package nip22 + +import "github.com/nbd-wtf/go-nostr" + +func GetThreadRoot(tags nostr.Tags) *nostr.Tag { + for _, tag := range tags { + if tag[0] == "E" || tag[0] == "A" || tag[0] == "I" { + return &tag + } + } + empty := nostr.Tag{} + return &empty +} + +func GetImmediateReply(tags nostr.Tags) *nostr.Tag { + for _, tag := range tags { + if tag[0] == "e" || tag[0] == "a" || tag[0] == "i" { + return &tag + } + } + + empty := nostr.Tag{} + return &empty +} diff --git a/sdk/thread.go b/sdk/thread.go new file mode 100644 index 0000000..20a4590 --- /dev/null +++ b/sdk/thread.go @@ -0,0 +1,23 @@ +package sdk + +import ( + "github.com/nbd-wtf/go-nostr" + "github.com/nbd-wtf/go-nostr/nip10" + "github.com/nbd-wtf/go-nostr/nip22" +) + +func GetThreadRoot(evt *nostr.Event) *nostr.Tag { + if evt.Kind == nostr.KindComment { + return nip22.GetThreadRoot(evt.Tags) + } else { + return nip10.GetThreadRoot(evt.Tags) + } +} + +func GetImmediateReply(evt *nostr.Event) *nostr.Tag { + if evt.Kind == nostr.KindComment { + return nip22.GetImmediateReply(evt.Tags) + } else { + return nip10.GetImmediateReply(evt.Tags) + } +}