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