From d64d6743896459e807276cc40ed79d76f4d9e283 Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Mon, 30 Jan 2023 22:11:55 +0100 Subject: [PATCH] Make appending new statuses safer --- Packages/Timeline/Sources/Timeline/TimelineViewModel.swift | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Packages/Timeline/Sources/Timeline/TimelineViewModel.swift b/Packages/Timeline/Sources/Timeline/TimelineViewModel.swift index 181ad86c..d7513063 100644 --- a/Packages/Timeline/Sources/Timeline/TimelineViewModel.swift +++ b/Packages/Timeline/Sources/Timeline/TimelineViewModel.swift @@ -79,10 +79,10 @@ class TimelineViewModel: ObservableObject, StatusesFetcher { } } else { newStatuses = newStatuses.filter { status in - !pendingStatuses.contains(where: { $0.id == status.id }) + !statuses.contains(where: { $0.id == status.id }) } pendingStatuses.insert(contentsOf: newStatuses, at: 0) - statuses.insert(contentsOf: pendingStatuses, at: 0) + statuses.insert(contentsOf: newStatuses, at: 0) withAnimation { statusesState = .display(statuses: statuses, nextPageState: statuses.count < 20 ? .none : .hasNextPage) } @@ -143,8 +143,7 @@ class TimelineViewModel: ObservableObject, StatusesFetcher { func handleEvent(event: any StreamEvent, currentAccount: CurrentAccount) { if let event = event as? StreamEventUpdate, pendingStatusesEnabled, - !statuses.contains(where: { $0.id == event.status.id }), - !pendingStatuses.contains(where: { $0.id == event.status.id }) + !statuses.contains(where: { $0.id == event.status.id }) { pendingStatuses.insert(event.status, at: 0) statuses.insert(event.status, at: 0)