From b709637cf47a7c032240a061313576078e7bfe74 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 12 Jan 2024 14:35:23 +0200
Subject: [PATCH] Improve filter for select galleries

---
 .../futo/circles/core/utils/MatrixUtils.kt    | 19 +++++++++++++++++--
 .../select/SelectGalleriesDataSource.kt       | 17 +++--------------
 2 files changed, 20 insertions(+), 16 deletions(-)

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 5914db039..e91bf9903 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
@@ -14,17 +14,32 @@ private fun getRoomsLiveDataWithType(
     type: String,
     membershipFilter: List<Membership> = Membership.activeMemberships()
 ) = MatrixSessionProvider.getSessionOrThrow().roomService()
-    .getRoomSummariesLive(roomSummaryQueryParams {
+    .getRoomSummariesLive(getCirclesRoomTypeFilter(type, membershipFilter))
+
+private fun getRoomsWithType(
+    type: String,
+    membershipFilter: List<Membership> = Membership.activeMemberships()
+) = MatrixSessionProvider.getSessionOrThrow().roomService()
+    .getRoomSummaries(getCirclesRoomTypeFilter(type, membershipFilter))
+
+private fun getCirclesRoomTypeFilter(type: String, membershipFilter: List<Membership>) =
+    roomSummaryQueryParams {
         memberships = membershipFilter
         includeType = listOf(type)
         excludeType = listOf(roomType, spaceType)
-    })
+    }
 
 fun getGroupsLiveData(membershipFilter: List<Membership> = Membership.activeMemberships()) =
     getRoomsLiveDataWithType(GROUP_TYPE, membershipFilter)
 
+fun getGroups(membershipFilter: List<Membership> = Membership.activeMemberships()) =
+    getRoomsWithType(GROUP_TYPE, membershipFilter)
+
 fun getGalleriesLiveData(membershipFilter: List<Membership> = Membership.activeMemberships()) =
     getRoomsLiveDataWithType(GALLERY_TYPE, membershipFilter)
 
+fun getGalleries(membershipFilter: List<Membership> = Membership.activeMemberships()) =
+    getRoomsWithType(GROUP_TYPE, membershipFilter)
+
 
 
diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
index bdf6532ad..02f1a1a0c 100644
--- a/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
+++ b/gallery/src/main/java/org/futo/circles/gallery/feature/select/SelectGalleriesDataSource.kt
@@ -2,28 +2,17 @@ package org.futo.circles.gallery.feature.select
 
 import androidx.lifecycle.MutableLiveData
 import org.futo.circles.core.mapping.toSelectableRoomListItem
-import org.futo.circles.core.model.GALLERY_TYPE
 import org.futo.circles.core.model.SelectableRoomListItem
-import org.futo.circles.core.provider.MatrixSessionProvider
+import org.futo.circles.core.utils.getGalleries
 import org.matrix.android.sdk.api.session.room.model.Membership
-import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
 import javax.inject.Inject
 
 class SelectGalleriesDataSource @Inject constructor() {
-
-    private val session by lazy { MatrixSessionProvider.currentSession }
-
+    
     val galleriesLiveData = MutableLiveData(getInitialGalleriesList())
 
     private fun getInitialGalleriesList(): List<SelectableRoomListItem> =
-        session?.roomService()?.getRoomSummaries(roomSummaryQueryParams {
-            excludeType = null
-        })?.mapNotNull { summary ->
-            if (summary.roomType == GALLERY_TYPE && summary.membership == Membership.JOIN)
-                summary.toSelectableRoomListItem()
-            else null
-        } ?: emptyList()
-
+        getGalleries(membershipFilter = listOf(Membership.JOIN)).map { it.toSelectableRoomListItem() }
 
     fun toggleGallerySelect(gallery: SelectableRoomListItem) {
         val newList = galleriesLiveData.value?.toMutableList()?.map {
-- 
GitLab