Try to prevent timelineProvider timing crashes on update listeners.

This commit is contained in:
Stefan Ceriu
2026-02-04 14:51:36 +02:00
committed by Stefan Ceriu
parent 65fb54f1fc
commit 25d5a70b00
@@ -399,12 +399,16 @@ class TimelineController: TimelineControllerProtocol {
paginationState = TimelinePaginationState(backward: .paginating, forward: .paginating) paginationState = TimelinePaginationState(backward: .paginating, forward: .paginating)
callbacks.send(.isLive(activeTimelineItemProvider.kind == .live)) callbacks.send(.isLive(activeTimelineItemProvider.kind == .live))
updateTimelineItemsCancellable = Task { [weak self, activeTimelineItemProvider] in let contentSizeChangePublisher = NotificationCenter.default.publisher(for: UIContentSizeCategory.didChangeNotification)
let contentSizeChangePublisher = NotificationCenter.default.publisher(for: UIContentSizeCategory.didChangeNotification) let timelineUpdates = activeTimelineItemProvider.updatePublisher.merge(with: contentSizeChangePublisher.compactMap { [weak self] _ in
let timelineUpdates = activeTimelineItemProvider.updatePublisher.merge(with: contentSizeChangePublisher.map { _ in guard let activeTimelineProvider = self?.activeTimelineItemProvider else {
(activeTimelineItemProvider.itemProxies, activeTimelineItemProvider.paginationState) return nil
}) }
return (activeTimelineProvider.itemProxies, activeTimelineProvider.paginationState)
})
updateTimelineItemsCancellable = Task { [weak self] in
for await (items, paginationState) in timelineUpdates.values { for await (items, paginationState) in timelineUpdates.values {
await self?.updateTimelineItems(itemProxies: items, paginationState: paginationState) await self?.updateTimelineItems(itemProxies: items, paginationState: paginationState)
} }