diff --git a/ndk-svelte/src/index.ts b/ndk-svelte/src/index.ts index e537f970..06d2245a 100644 --- a/ndk-svelte/src/index.ts +++ b/ndk-svelte/src/index.ts @@ -207,10 +207,18 @@ class NDKSvelte extends NDK { if (eventIds.has(dedupKey)) { const prevEvent = events.find((e) => e.deduplicationKey() === dedupKey); - if (prevEvent && prevEvent.created_at! < event.created_at!) { - // remove the previous event - const index = events.findIndex((e) => e.deduplicationKey() === dedupKey); - events.splice(index, 1); + if (prevEvent) { + if (prevEvent.created_at! < event.created_at!) { + // remove the previous event + const index = events.findIndex((e) => e.deduplicationKey() === dedupKey); + events.splice(index, 1); + } else if (prevEvent.created_at! === event.created_at! && prevEvent.id !== event.id) { + // we have an event with the same created_at but different id, which might be a bug + // in some relays but take the incoming event anyway + console.warn("Received event with same created_at but different id", { prevId: prevEvent.id, newId: event.id }); + const index = events.findIndex((e) => e.deduplicationKey() === dedupKey); + events.splice(index, 1); + } } else { return; }