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 {