From 1e8d9fd6b2dce311e40457623436196fd99a1032 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Wed, 22 Feb 2023 17:58:06 +0200 Subject: [PATCH] Fix visible room sliding sync view ranges changing while inside rooms --- .../HomeScreen/HomeScreenViewModel.swift | 9 +------- .../Screens/HomeScreen/View/HomeScreen.swift | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 10 deletions(-) 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..