From 4c40ec3817eb585bac9f480584e1e3141c07f89d Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 12 Jan 2024 17:53:41 +0200
Subject: [PATCH] Improve loadAllRoomMembers filter

---
 .../select_users/SearchUserDataSource.kt      |  6 ++--
 .../futo/circles/core/utils/MatrixUtils.kt    | 30 +++++++++++--------
 2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/core/src/main/java/org/futo/circles/core/feature/select_users/SearchUserDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/select_users/SearchUserDataSource.kt
index 737cb992e..7b88ab849 100644
--- a/core/src/main/java/org/futo/circles/core/feature/select_users/SearchUserDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/select_users/SearchUserDataSource.kt
@@ -10,8 +10,8 @@ import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.getKnownUsersFlow
 import org.futo.circles.core.extensions.getServerDomain
 import org.futo.circles.core.provider.MatrixSessionProvider
+import org.futo.circles.core.utils.getAllCirclesRooms
 import org.matrix.android.sdk.api.session.getRoom
-import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
 import org.matrix.android.sdk.api.session.user.model.User
 import javax.inject.Inject
 
@@ -20,8 +20,8 @@ class SearchUserDataSource @Inject constructor() {
     private val session = MatrixSessionProvider.currentSession
 
     suspend fun loadAllRoomMembersIfNeeded() {
-        session?.roomService()?.getRoomSummaries(roomSummaryQueryParams())?.forEach {
-            session.getRoom(it.roomId)?.membershipService()?.loadRoomMembersIfNeeded()
+        getAllCirclesRooms().forEach {
+            session?.getRoom(it.roomId)?.membershipService()?.loadRoomMembersIfNeeded()
         }
     }
 
diff --git a/core/src/main/java/org/futo/circles/core/utils/MatrixUtils.kt b/core/src/main/java/org/futo/circles/core/utils/MatrixUtils.kt
index ed01a8875..d6e393c12 100644
--- a/core/src/main/java/org/futo/circles/core/utils/MatrixUtils.kt
+++ b/core/src/main/java/org/futo/circles/core/utils/MatrixUtils.kt
@@ -57,23 +57,29 @@ fun getSpacesLiveData(membershipFilter: List<Membership> = Membership.activeMemb
 fun getTimelinesLiveData(membershipFilter: List<Membership> = Membership.activeMemberships()) =
     getRoomsLiveDataWithType(TIMELINE_TYPE, membershipFilter)
 
-fun getAllJoinedCirclesRoomsAndSpaces(session: Session = MatrixSessionProvider.getSessionOrThrow()) =
-    session.roomService().getRoomSummaries(roomSummaryQueryParams {
+private fun getAllRoomsAndSpacesFilter(membershipFilter: List<Membership>) =
+    roomSummaryQueryParams {
         excludeType = listOf(roomType, null)
-        memberships = listOf(Membership.JOIN)
-    })
+        memberships = membershipFilter
+    }
+
+fun getAllJoinedCirclesRoomsAndSpaces(session: Session = MatrixSessionProvider.getSessionOrThrow()) =
+    session.roomService().getRoomSummaries(getAllRoomsAndSpacesFilter(listOf(Membership.JOIN)))
 
 fun getAllJoinedCirclesRoomsAndSpacesLiveData(session: Session = MatrixSessionProvider.getSessionOrThrow()) =
-    session.roomService().getRoomSummariesLive(roomSummaryQueryParams {
-        excludeType = listOf(roomType, null)
-        memberships = listOf(Membership.JOIN)
-    })
+    session.roomService().getRoomSummariesLive(getAllRoomsAndSpacesFilter(listOf(Membership.JOIN)))
+
+private fun getAllRoomsFiler(membershipFilter: List<Membership>) = roomSummaryQueryParams {
+    excludeType = listOf(roomType, spaceType, null)
+    memberships = membershipFilter
+}
 
 fun getAllCirclesRoomsLiveData(membershipFilter: List<Membership> = Membership.activeMemberships()) =
     MatrixSessionProvider.getSessionOrThrow().roomService()
-        .getRoomSummariesLive(roomSummaryQueryParams {
-            excludeType = listOf(roomType, spaceType, null)
-            memberships = membershipFilter
-        })
+        .getRoomSummariesLive(getAllRoomsFiler(membershipFilter))
+
+fun getAllCirclesRooms(membershipFilter: List<Membership> = Membership.activeMemberships()) =
+    MatrixSessionProvider.getSessionOrThrow().roomService()
+        .getRoomSummaries(getAllRoomsFiler(membershipFilter))
 
 
-- 
GitLab