From d5e74907adeb7ca3f95ea9ec3df29663f617cdfe Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Tue, 12 Sep 2023 17:00:27 +0300 Subject: [PATCH] Fixes #1640 - Prevent loading skeletons from being dismissed too soon. Avoid weird animations caused by the session verification banner. --- .../Sources/Screens/HomeScreen/HomeScreenViewModel.swift | 6 ++++-- ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index c2c5d2c5b..f7ac70be5 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -148,8 +148,10 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol .sink { [weak self] state, rooms in guard let self else { return } - let isLoadingData = !state.isLoaded && rooms.isEmpty - let hasNoRooms = (state.isLoaded && state.totalNumberOfRooms == 0 && rooms.isEmpty) + // Rust sends back loaded even when no rooms are loaded yet, check room for empty to be sure + let isLoadingData = !state.isLoaded || (state.totalNumberOfRooms != 0 && rooms.isEmpty) + + let hasNoRooms = state.isLoaded && state.totalNumberOfRooms == 0 && rooms.isEmpty var roomListMode = self.state.roomListMode if isLoadingData { diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift index 10b3ed02d..9c7011986 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift @@ -82,7 +82,6 @@ struct HomeScreen: View { .scrollDismissesKeyboard(.immediately) .scrollDisabled(context.viewState.roomListMode == .skeletons) .scrollBounceBehavior(context.viewState.roomListMode == .empty ? .basedOnSize : .automatic) - .animation(.elementDefault, value: context.viewState.showSessionVerificationBanner) .animation(.elementDefault, value: context.viewState.roomListMode) .animation(.none, value: context.viewState.visibleRooms) }