From cc6201ed31d6cee7c7b60369b7bb790c10d1fd14 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Mon, 20 Feb 2023 17:14:02 +0200 Subject: [PATCH] Fix incorrect visible room ranges: correctly remove duplicates and ignore appearance changes while filtering --- ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift | 2 +- ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift | 4 ++++ changelog.d/pr-603.bugfix | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changelog.d/pr-603.bugfix diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 6722a03e6..1b181f0c7 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -179,8 +179,8 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol } visibleItemRangeObservationToken = visibleItemRangePublisher - .removeDuplicates(by: { $0.isScrolling == $1.isScrolling && $0.range == $1.range }) .throttle(for: 0.5, scheduler: DispatchQueue.main, latest: true) + .removeDuplicates(by: { $0.isScrolling == $1.isScrolling && $0.range == $1.range }) .sink { [weak self] value in guard let self else { return } diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift index 4159ec6d3..819b924b3 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreen.swift @@ -54,9 +54,13 @@ struct HomeScreen: View { } } .onAppear { + // Ignore while filtering rooms + guard context.searchQuery.isEmpty else { return } visibleItemIdentifiers.insert(room.id) } .onDisappear { + // Ignore while filtering rooms + guard context.searchQuery.isEmpty else { return } visibleItemIdentifiers.remove(room.id) } } diff --git a/changelog.d/pr-603.bugfix b/changelog.d/pr-603.bugfix new file mode 100644 index 000000000..12b009781 --- /dev/null +++ b/changelog.d/pr-603.bugfix @@ -0,0 +1 @@ +Fix incorrect visible room ranges: correctly remove duplicates and ignore appearance changes while filtering \ No newline at end of file