add function to expand addressable events
This commit is contained in:
+39
@@ -210,3 +210,42 @@ func ExpandReplaceableEvents(e roots.ValidatedEvent, s *EventSubgraph) {
|
||||
s.AddRel(NewIsReplaceableRel(eventNode, rk, 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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user