From 261cb366a7466a33888e4c9bacc7f60b0f352403 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 17 Jun 2024 21:32:32 +0300 Subject: [PATCH] Fix interminable room directory search next page loading loops when results don't fill the screen --- .../RoomDirectorySearchScreenViewModel.swift | 4 ++++ .../View/RoomDirectorySearchScreen.swift | 12 +++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ElementX/Sources/Screens/RoomDirectorySearchScreen/RoomDirectorySearchScreenViewModel.swift b/ElementX/Sources/Screens/RoomDirectorySearchScreen/RoomDirectorySearchScreenViewModel.swift index 55ad1d3bc..1e5ebb557 100644 --- a/ElementX/Sources/Screens/RoomDirectorySearchScreen/RoomDirectorySearchScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomDirectorySearchScreen/RoomDirectorySearchScreenViewModel.swift @@ -104,6 +104,10 @@ class RoomDirectorySearchScreenViewModel: RoomDirectorySearchScreenViewModelType } private func loadNextPage() { + guard !state.isLoading else { + return + } + Task { state.isLoading = true let _ = await roomDirectorySearchProxy.nextPage() diff --git a/ElementX/Sources/Screens/RoomDirectorySearchScreen/View/RoomDirectorySearchScreen.swift b/ElementX/Sources/Screens/RoomDirectorySearchScreen/View/RoomDirectorySearchScreen.swift index a5b07380a..ffccf4d77 100644 --- a/ElementX/Sources/Screens/RoomDirectorySearchScreen/View/RoomDirectorySearchScreen.swift +++ b/ElementX/Sources/Screens/RoomDirectorySearchScreen/View/RoomDirectorySearchScreen.swift @@ -40,14 +40,12 @@ struct RoomDirectorySearchScreen: View { .foregroundColor(.compound.textSecondary) .frame(maxWidth: .infinity) .accessibilityIdentifier(A11yIdentifiers.startChatScreen.searchNoResults) - } else { - // This needs to be in the else as when you start a search, the results are cleared making the footer visible. - // We only want to trigger the pagination when the state is not loading. - emptyRectangle - .onAppear { - context.send(viewAction: .reachedBottom) - } } + + emptyRectangle + .onAppear { + context.send(viewAction: .reachedBottom) + } } .listRowSeparator(.hidden) }