Skip to content

Commit b746630

Browse files
author
Jon Staab
committed
Reverse order of ReplaceEvent
1 parent d30d33b commit b746630

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

zooid/events.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -295,25 +295,27 @@ func (events *EventStore) SaveEvent(evt nostr.Event) error {
295295
}
296296

297297
func (events *EventStore) ReplaceEvent(evt nostr.Event) error {
298+
// First, save the new event, then find all matching events and delete every one
299+
// except the newest one. This is sort of stupid, but we had missing metadata
300+
if err := events.SaveEvent(evt); err != nil && err != eventstore.ErrDupEvent {
301+
return fmt.Errorf("failed to save: %w", err)
302+
}
303+
298304
filter := nostr.Filter{Kinds: []nostr.Kind{evt.Kind}, Authors: []nostr.PubKey{evt.PubKey}}
305+
299306
if evt.Kind.IsAddressable() {
300307
filter.Tags = nostr.TagMap{"d": []string{evt.Tags.GetD()}}
301308
}
302309

303-
shouldStore := true
304-
for previous := range events.QueryEvents(filter, 1) {
305-
if previous.CreatedAt <= evt.CreatedAt {
306-
if err := events.DeleteEvent(previous.ID); err != nil {
307-
return fmt.Errorf("failed to delete event for replacing: %w", err)
308-
}
309-
} else {
310-
shouldStore = false
310+
isFirstEvent := true
311+
for previous := range events.QueryEvents(filter, 0) {
312+
if isFirstEvent {
313+
isFirstEvent = false
314+
continue
311315
}
312-
}
313316

314-
if shouldStore {
315-
if err := events.SaveEvent(evt); err != nil && err != eventstore.ErrDupEvent {
316-
return fmt.Errorf("failed to save: %w", err)
317+
if err := events.DeleteEvent(previous.ID); err != nil {
318+
return fmt.Errorf("failed to delete event for replacing: %w", err)
317319
}
318320
}
319321

0 commit comments

Comments
 (0)