From a15cd4e545c6497f7fc8eb79c991805d49710f13 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 7 Nov 2023 14:14:53 -0300 Subject: [PATCH] fix replaceable handlers to not delete things all the time. --- add-event.go | 6 ++---- utils.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) 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) +}