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)
callbacks.send(.isLive(activeTimelineItemProvider.kind == .live))
updateTimelineItemsCancellable = Task { [weak self, activeTimelineItemProvider] in
let contentSizeChangePublisher = NotificationCenter.default.publisher(for: UIContentSizeCategory.didChangeNotification)
let timelineUpdates = activeTimelineItemProvider.updatePublisher.merge(with: contentSizeChangePublisher.map { _ in
(activeTimelineItemProvider.itemProxies, activeTimelineItemProvider.paginationState)
})
let contentSizeChangePublisher = NotificationCenter.default.publisher(for: UIContentSizeCategory.didChangeNotification)
let timelineUpdates = activeTimelineItemProvider.updatePublisher.merge(with: contentSizeChangePublisher.compactMap { [weak self] _ in
guard let activeTimelineProvider = self?.activeTimelineItemProvider else {
return nil
}
return (activeTimelineProvider.itemProxies, activeTimelineProvider.paginationState)
})
updateTimelineItemsCancellable = Task { [weak self] in
for await (items, paginationState) in timelineUpdates.values {
await self?.updateTimelineItems(itemProxies: items, paginationState: paginationState)
}