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(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))
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user