diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 1b181f0c7..0f2289e94 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -20,10 +20,6 @@ import SwiftUI typealias HomeScreenViewModelType = StateStoreViewModel class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol { - enum Constants { - static let slidingWindowBoundsPadding = 5 - } - private let userSession: UserSessionProtocol private let visibleRoomsSummaryProvider: RoomSummaryProviderProtocol? private let allRoomsSummaryProvider: RoomSummaryProviderProtocol? @@ -277,9 +273,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol return } - let lowerBound = max(0, range.lowerBound - Constants.slidingWindowBoundsPadding) - let upperBound = min(Int(visibleRoomsSummaryProvider.countPublisher.value), range.upperBound + Constants.slidingWindowBoundsPadding) - - visibleRoomsSummaryProvider.updateVisibleRange(lowerBound..() { didSet { - updateVisibleRange() + if isViewVisible { + updateVisibleRange() + } } } @@ -69,6 +77,12 @@ struct HomeScreen: View { .disableAutocorrection(true) } } + .onAppear { + isViewVisible = true + } + .onDisappear { + isViewVisible = false + } .introspectScrollView { scrollView in guard scrollView != scrollViewAdapter.scrollView else { return } scrollViewAdapter.scrollView = scrollView @@ -198,7 +212,10 @@ struct HomeScreen: View { return } - context.send(viewAction: .updateVisibleItemRange(range: firstIndex..