From 1dd9c6f791a4397f246a305cad1b37b7c90d33b3 Mon Sep 17 00:00:00 2001 From: Jonathan Staab Date: Tue, 7 Mar 2023 20:02:15 -0600 Subject: [PATCH] Avoid fetching duplicate context, there seems to be an infinite loop that happens if we don't --- src/views/feed/Feed.svelte | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/views/feed/Feed.svelte b/src/views/feed/Feed.svelte index 821c7148..df22949f 100644 --- a/src/views/feed/Feed.svelte +++ b/src/views/feed/Feed.svelte @@ -21,12 +21,13 @@ let notes = [] let notesBuffer = [] + const seen = new Set() const since = now() const maxNotes = 100 const cursor = new Cursor() const processNewNotes = async newNotes => { - newNotes = user.muffle(newNotes) + newNotes = user.muffle(newNotes).filter(n => !seen.has(n.id)) if (shouldDisplay) { newNotes = newNotes.filter(shouldDisplay) @@ -73,6 +74,10 @@ const chunk = sortBy(e => -e.created_at, await processNewNotes(newNotes)) const [bottom, top] = partition(e => e.created_at < since, chunk) + for (const note of chunk) { + seen.add(note.id) + } + // Slice new notes in case someone leaves the tab open for a long time notes = uniqBy(prop('id'), notes.concat(bottom)) notesBuffer = top.concat(notesBuffer).slice(0, maxNotes)