diff --git a/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt b/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt index 311d5febc9164dfa15150b6016b046de1ec0f945..c6758083f5237a49f659a5621a286022fc8daea9 100644 --- a/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt +++ b/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt @@ -6,14 +6,13 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.flow.mapLatest -import org.matrix.android.sdk.api.extensions.tryOrNull +import org.futo.circles.core.utils.getAllJoinedCirclesRoomsLiveData import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.content.ContentUrlResolver import org.matrix.android.sdk.api.session.getRoom import org.matrix.android.sdk.api.session.getUser import org.matrix.android.sdk.api.session.room.members.roomMemberQueryParams import org.matrix.android.sdk.api.session.room.model.Membership -import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams import org.matrix.android.sdk.api.session.user.model.User private val sessionCoroutineScopes = HashMap<String, CoroutineScope>(1) @@ -52,11 +51,8 @@ fun Session.getUserIdsToExclude() = mutableListOf( fun Session.getServerDomain() = myUserId.substringAfter(":") -fun Session.getKnownUsersFlow() = roomService().getRoomSummariesLive(roomSummaryQueryParams { - excludeType = null - memberships = listOf(Membership.JOIN) -}).asFlow() - .mapLatest { roomSummaries -> +fun Session.getKnownUsersFlow() = + getAllJoinedCirclesRoomsLiveData().asFlow().mapLatest { roomSummaries -> val knowUsers = mutableSetOf<User>() roomSummaries.forEach { summary -> val joinedMembersIds = getRoom(summary.roomId)?.membershipService() 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 db72dff03630b1e9bc65106da9d04ab86dba967d..470cd82a2e4011ca872734193312f8ab1e8da18e 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 @@ -1,10 +1,12 @@ package org.futo.circles.core.utils +import androidx.lifecycle.asFlow import org.futo.circles.core.model.GALLERY_TYPE import org.futo.circles.core.model.GROUP_TYPE import org.futo.circles.core.model.TIMELINE_TYPE import org.futo.circles.core.provider.MatrixSessionProvider import org.matrix.android.sdk.api.query.RoomCategoryFilter +import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.Membership import org.matrix.android.sdk.api.session.room.model.RoomType import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams @@ -13,6 +15,7 @@ const val roomType = "m.room" const val spaceType = RoomType.SPACE private val roomTypes = listOf( + null, roomType, spaceType, GALLERY_TYPE, @@ -32,7 +35,7 @@ private fun getRoomsWithType( ) = MatrixSessionProvider.getSessionOrThrow().roomService() .getRoomSummaries(getCirclesRoomTypeFilter(type, membershipFilter)) -private fun getCirclesRoomTypeFilter(type:String, membershipFilter: List<Membership>) = +private fun getCirclesRoomTypeFilter(type: String, membershipFilter: List<Membership>) = roomSummaryQueryParams { memberships = membershipFilter includeType = listOf(type) @@ -55,4 +58,16 @@ 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 { + excludeType = listOf(roomType, null) + memberships = listOf(Membership.JOIN) + }) + +fun getAllJoinedCirclesRoomsLiveData() = MatrixSessionProvider.getSessionOrThrow().roomService() + .getRoomSummariesLive(roomSummaryQueryParams { + excludeType = listOf(roomType, spaceType, null) + memberships = listOf(Membership.JOIN) + }) +