diff --git a/pointers.go b/pointers.go index 732b3a7..6436cb3 100644 --- a/pointers.go +++ b/pointers.go @@ -7,6 +7,7 @@ import ( type Pointer interface { AsTagReference() string AsTag() Tag + MatchesEvent(Event) bool } type ProfilePointer struct { @@ -14,7 +15,8 @@ type ProfilePointer struct { Relays []string `json:"relays,omitempty"` } -func (ep ProfilePointer) AsTagReference() string { return ep.PublicKey } +func (ep ProfilePointer) MatchesEvent(_ Event) bool { return false } +func (ep ProfilePointer) AsTagReference() string { return ep.PublicKey } func (ep ProfilePointer) AsTag() Tag { if len(ep.Relays) > 0 { @@ -30,7 +32,8 @@ type EventPointer struct { Kind int `json:"kind,omitempty"` } -func (ep EventPointer) AsTagReference() string { return ep.ID } +func (ep EventPointer) MatchesEvent(evt Event) bool { return evt.ID == ep.ID } +func (ep EventPointer) AsTagReference() string { return ep.ID } func (ep EventPointer) AsTag() Tag { if len(ep.Relays) > 0 { @@ -50,6 +53,12 @@ type EntityPointer struct { Relays []string `json:"relays,omitempty"` } +func (ep EntityPointer) MatchesEvent(evt Event) bool { + return ep.PublicKey == evt.PubKey && + ep.Kind == evt.Kind && + evt.Tags.GetD() == ep.Identifier +} + func (ep EntityPointer) AsTagReference() string { return fmt.Sprintf("%d:%s:%s", ep.Kind, ep.PublicKey, ep.Identifier) }