mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Try to prevent timelineProvider timing crashes on update listeners.
This commit is contained in:
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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user