Generate group events

This commit is contained in:
Jon Staab
2025-10-24 11:59:10 -07:00
parent 21ee8c7361
commit 45f8796e64
2 changed files with 36 additions and 1 deletions
+2
View File
@@ -97,6 +97,7 @@ func (g *GroupStore) GetAdmins(h string) []nostr.PubKey {
func (g *GroupStore) GenerateAdminsEvent(h string) nostr.Event {
tags := nostr.Tags{
nostr.Tag{"-"},
nostr.Tag{"d", h},
}
for _, pubkey := range g.GetAdmins(h) {
@@ -192,6 +193,7 @@ func (g *GroupStore) GetMembers(h string) []nostr.PubKey {
func (g *GroupStore) GenerateMembersEvent(h string) nostr.Event {
tags := nostr.Tags{
nostr.Tag{"-"},
nostr.Tag{"d", h},
}
for _, pubkey := range g.GetMembers(h) {
+34 -1
View File
@@ -275,9 +275,42 @@ func (instance *Instance) QueryStored(ctx context.Context, filter nostr.Filter)
}
} else {
pubkey, _ := khatru.GetAuthed(ctx)
generated := make([]nostr.Event, 0)
if slices.Contains(filter.Kinds, RELAY_INVITE) && instance.Config.CanInvite(pubkey) {
if !yield(instance.StripSignature(ctx, instance.GenerateInviteEvent(pubkey))) {
generated = append(generated, instance.GenerateInviteEvent(pubkey))
}
if slices.Contains(filter.Kinds, nostr.KindSimpleGroupAdmins) {
filter = nostr.Filter{
Kinds: []nostr.Kind{nostr.KindSimpleGroupMetadata},
}
for event := range instance.Events.QueryEvents(filter, 0) {
if tag := event.Tags.Find("d"); tag != nil {
generated = append(generated, instance.Groups.GenerateAdminsEvent(tag[1]))
}
}
}
if slices.Contains(filter.Kinds, nostr.KindSimpleGroupMembers) {
filter = nostr.Filter{
Kinds: []nostr.Kind{nostr.KindSimpleGroupMetadata},
}
for event := range instance.Events.QueryEvents(filter, 0) {
if tag := event.Tags.Find("d"); tag != nil {
generated = append(generated, instance.Groups.GenerateMembersEvent(tag[1]))
}
}
}
for _, event := range generated {
if !filter.Matches(event) {
continue
}
if !yield(instance.StripSignature(ctx, event)) {
return
}
}