From 3ab09895c5950fcd5f1f6b5245fd36f066663906 Mon Sep 17 00:00:00 2001 From: Pablo Fernandez Date: Fri, 2 Aug 2024 13:34:22 +0100 Subject: [PATCH] handle events coming in with the same created_at and different IDs --- ndk-svelte/src/index.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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; }