File tree Expand file tree Collapse file tree 1 file changed +14
-12
lines changed
Expand file tree Collapse file tree 1 file changed +14
-12
lines changed Original file line number Diff line number Diff line change @@ -295,25 +295,27 @@ func (events *EventStore) SaveEvent(evt nostr.Event) error {
295295}
296296
297297func (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
You can’t perform that action at this time.
0 commit comments