add function to expand addressable events

This commit is contained in:
Jay
2026-08-12 09:54:15 -04:00
parent 56f1cbe648
commit a3d1fcfabc
+39
View File
@@ -210,3 +210,42 @@ func ExpandReplaceableEvents(e roots.ValidatedEvent, s *EventSubgraph) {
s.AddRel(NewIsReplaceableRel(eventNode, rk, nil)) s.AddRel(NewIsReplaceableRel(eventNode, rk, nil))
s.AddRel(NewForUserRel(rk, authorNode, nil)) s.AddRel(NewForUserRel(rk, authorNode, nil))
} }
func ExpandAddressableEvents(e roots.ValidatedEvent, s *EventSubgraph) {
if !(e.Kind() >= 30000 && e.Kind() < 40000) {
return
}
eventNode := s.FirstNodeByLabel("Event")
if eventNode == nil {
return
}
var dTagNodes []*Node
for _, n := range s.NodesByLabel("Tag") {
if n.Props["name"] == "d" {
dTagNodes = append(dTagNodes, n)
}
}
if len(dTagNodes) != 1 {
return
}
dTagNode := dTagNodes[0]
var authorNode *Node
for _, n := range s.NodesByLabel("User") {
if n.Props["pubkey"] == e.PubKey() {
authorNode = n
break
}
}
if authorNode == nil {
return
}
rk := NewReplacementKeyNode(e.PubKey(), e.Kind())
s.AddNode(rk)
s.AddRel(NewIsReplaceableRel(eventNode, rk, nil))
s.AddRel(NewForUserRel(rk, authorNode, nil))
s.AddRel(NewWithDTagRel(rk, dTagNode, nil))
}