diff --git a/add-event.go b/add-event.go index 518fde1..43041cb 100644 --- a/add-event.go +++ b/add-event.go @@ -38,8 +38,7 @@ func (rl *Relay) AddEvent(ctx context.Context, evt *nostr.Event) error { if err != nil { continue } - previous := <-ch - if previous != nil { + if previous := <-ch; previous != nil && isOlder(previous, evt) { for _, del := range rl.DeleteEvent { del(ctx, previous) } @@ -54,8 +53,7 @@ func (rl *Relay) AddEvent(ctx context.Context, evt *nostr.Event) error { if err != nil { continue } - previous := <-ch - if previous != nil { + if previous := <-ch; previous != nil && isOlder(previous, evt) { for _, del := range rl.DeleteEvent { del(ctx, previous) } diff --git a/utils.go b/utils.go index 3e693a6..20e1e0c 100644 --- a/utils.go +++ b/utils.go @@ -5,6 +5,8 @@ import ( "hash/maphash" "regexp" "unsafe" + + "github.com/nbd-wtf/go-nostr" ) const ( @@ -26,4 +28,11 @@ func GetAuthed(ctx context.Context) string { return authedPubkey.(string) } -func pointerHasher[V any](_ maphash.Seed, k *V) uint64 { return uint64(uintptr(unsafe.Pointer(k))) } +func pointerHasher[V any](_ maphash.Seed, k *V) uint64 { + return uint64(uintptr(unsafe.Pointer(k))) +} + +func isOlder(previous, next *nostr.Event) bool { + return previous.CreatedAt < next.CreatedAt || + (previous.CreatedAt == next.CreatedAt && previous.ID > next.ID) +}