From cdd604634040431df5e6409a3eefffa0636c1caa Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Thu, 21 Dec 2023 15:26:24 +0200 Subject: [PATCH] Filter ignored users from people tab --- .../circles/feature/people/PeopleDataSource.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt index 7fec6884b..b98496b20 100644 --- a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt @@ -45,25 +45,34 @@ class PeopleDataSource @Inject constructor( suspend fun getPeopleList(query: String) = combine( searchUserDataSource.searchKnownUsers(query), searchUserDataSource.searchSuggestions(query), + getIgnoredUserFlow(), getProfileRoomMembersKnockFlow() - ) { knowUsers, suggestions, requests -> - withContext(Dispatchers.IO) { buildList(knowUsers, suggestions, requests) } + ) { knowUsers, suggestions, ignoredUsers, requests -> + withContext(Dispatchers.IO) { buildList(knowUsers, suggestions, ignoredUsers, requests) } }.distinctUntilChanged() suspend fun refreshRoomMembers() { searchUserDataSource.loadAllRoomMembersIfNeeded() } + private fun getIgnoredUserFlow() = + session?.userService()?.getIgnoredUsersLive()?.asFlow() ?: flowOf() + + private fun buildList( knowUsers: List<User>, suggestions: List<User>, + ignoredUsers: List<User>, requests: List<KnockRequestListItem> ): List<PeopleListItem> { + val ignoredUsersIds = ignoredUsers.map { it.userId }.toSet() val uniqueItemsList = mutableListOf<PeopleListItem>().apply { addAll(requests.map { it.toPeopleRequestListItem() }) addAll(knowUsers.map { it.toPeopleUserListItem(getKnownUserItemType(it.userId)) }) addAll(suggestions.map { it.toPeopleUserListItem(PeopleItemType.Suggestion) }) - }.distinctBy { it.id }.filterNot { it.id == session?.myUserId } + } + .distinctBy { it.id } + .filterNot { it.id == session?.myUserId || ignoredUsersIds.contains(it.id) } return mutableListOf<PeopleListItem>().apply { addSection( -- GitLab