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 5914db03956e625b7a6b33d01a7bfe69dcdbdd59..e91bf990349226f66f87bdb3f5dba6a7b6bc56a8 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 bdf6532ad9611ec9f2db86c8ad7c50c291fc6238..02f1a1a0cefcefd30474222469c9dc58895904c9 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 {