From 003dfd599603d246623dc4b9578b7cee7ff24173 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 24 Apr 2023 17:42:51 +0300 Subject: [PATCH] Fixes #641 - Prevent large ranges before the view renders the room list --- ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift index b1f10b1d8..fbc731500 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift @@ -216,12 +216,16 @@ struct HomeScreen: View { private func updateVisibleRange() { guard let scrollView = scrollViewAdapter.scrollView, - context.viewState.rooms.count > 0 else { + context.viewState.visibleRooms.count > 0 else { + return + } + + guard scrollView.contentSize.height > scrollView.bounds.height else { return } let adjustedContentSize = max(scrollView.contentSize.height - scrollView.contentInset.top - scrollView.contentInset.bottom, scrollView.bounds.height) - let cellHeight = adjustedContentSize / Double(context.viewState.rooms.count) + let cellHeight = adjustedContentSize / Double(context.viewState.visibleRooms.count) let firstIndex = Int(max(0.0, scrollView.contentOffset.y + scrollView.contentInset.top) / cellHeight) let lastIndex = Int(max(0.0, scrollView.contentOffset.y + scrollView.bounds.height) / cellHeight)