Prevent unnecessary backpagination requests from running every time a room is entered

- related to #1760 which moved initial timeline item computations to a serial queue
This commit is contained in:
Stefan Ceriu 2024-02-02 15:25:11 +02:00 committed by Stefan Ceriu
parent 7aa81f542c
commit 31ca8ed7f2
3 changed files with 4 additions and 5 deletions

View File

@ -215,7 +215,7 @@ struct RoomMemberState {
/// Is also nice to have this as a wrapper for any state that is directly connected to the timeline.
struct TimelineViewState {
var canBackPaginate = true
var isBackPaginating = false
var isBackPaginating = true
// These can be removed when we have full swiftUI and moved as @State values in the view
var scrollToBottomPublisher = PassthroughSubject<Void, Never>()

View File

@ -46,10 +46,6 @@ struct UITimelineView: UIViewControllerRepresentable {
init(viewModelContext: RoomScreenViewModel.Context) {
context = viewModelContext
if viewModelContext.viewState.timelineViewState.itemViewStates.isEmpty {
viewModelContext.send(viewAction: .paginateBackwards)
}
}
/// Updates the specified table view's properties from the current view state.

View File

@ -57,8 +57,11 @@ class RoomTimelineController: RoomTimelineControllerProtocol {
}
.store(in: &cancellables)
// Inform the world that the initial items are loading from the store
callbacks.send(.isBackPaginating(true))
serialDispatchQueue.async {
self.updateTimelineItems()
self.callbacks.send(.isBackPaginating(false))
}
NotificationCenter.default.addObserver(self, selector: #selector(contentSizeCategoryDidChange), name: UIContentSizeCategory.didChangeNotification, object: nil)