diff --git a/deleting.go b/deleting.go index 230eba7..1e066c4 100644 --- a/deleting.go +++ b/deleting.go @@ -67,6 +67,9 @@ func (rl *Relay) handleDeleteRequest(ctx context.Context, evt *nostr.Event) erro return err } } + + // if it was tracked to be expired that is not needed anymore + rl.expirationManager.removeEvent(target.ID) } else { // fail and stop here return fmt.Errorf("blocked: %s", msg) diff --git a/expiration.go b/expiration.go index 4e382d5..b3180b7 100644 --- a/expiration.go +++ b/expiration.go @@ -134,3 +134,16 @@ func (em *expirationManager) trackEvent(evt *nostr.Event) { em.mu.Unlock() } } + +func (em *expirationManager) removeEvent(id string) { + em.mu.Lock() + defer em.mu.Unlock() + + // Find and remove the event from the heap + for i := 0; i < len(em.events); i++ { + if em.events[i].id == id { + heap.Remove(&em.events, i) + break + } + } +}