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 c6758083f5237a49f659a5621a286022fc8daea9..6f57401d67d6b27a49fefcf85462d97677ca3a4b 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,7 +6,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.flow.mapLatest -import org.futo.circles.core.utils.getAllJoinedCirclesRoomsLiveData +import org.futo.circles.core.utils.getAllCirclesRoomsLiveData 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 @@ -52,7 +52,7 @@ fun Session.getServerDomain() = myUserId.substringAfter(":") fun Session.getKnownUsersFlow() = - getAllJoinedCirclesRoomsLiveData().asFlow().mapLatest { roomSummaries -> + getAllCirclesRoomsLiveData(listOf(Membership.JOIN)).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/feature/room/invites/InvitesDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt index bfb75278ca2c52401e6d0a5fa21b7edba227e9e2..0f03f224f806d2cfcdbca5ff17125c2ed2bb8b78 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt @@ -28,6 +28,8 @@ import org.futo.circles.core.model.convertToCircleRoomType import org.futo.circles.core.model.toCircleUser import org.futo.circles.core.model.toRoomInviteListItem import org.futo.circles.core.provider.MatrixSessionProvider +import org.futo.circles.core.utils.getAllCirclesRoomsLiveData +import org.futo.circles.core.utils.getSpacesLiveData import org.matrix.android.sdk.api.session.getRoom import org.matrix.android.sdk.api.session.getUserOrDefault import org.matrix.android.sdk.api.session.room.model.Membership @@ -72,28 +74,19 @@ class InvitesDataSource @Inject constructor( }?.asFlow() ?: flowOf() private fun getProfileSpaceInvitesFlow(): Flow<List<ConnectionInviteListItem>> = - session?.roomService()?.getRoomSummariesLive( - roomSummaryQueryParams { - excludeType = null - memberships = listOf(Membership.INVITE) - })?.map { - it.filter { it.roomType == RoomType.SPACE }.map { + getSpacesLiveData(listOf(Membership.INVITE)).map { + it.filter { it.roomType == RoomType.SPACE }.map { summary -> ConnectionInviteListItem( - it.roomId, - session.getUserOrDefault(it.inviterId ?: "").toCirclesUserSummary() + summary.roomId, + session.getUserOrDefault(summary.inviterId ?: "").toCirclesUserSummary() ) } - }?.asFlow() ?: flowOf() + }.asFlow() private fun getRoomInvitesFlow( inviteType: InviteTypeArg ): Flow<List<RoomInviteListItem>> = combine( - MatrixSessionProvider.getSessionOrThrow().roomService() - .getRoomSummariesLive(roomSummaryQueryParams { - excludeType = listOf(RoomType.SPACE) - memberships = listOf(Membership.INVITE) - }) - .asFlow(), + getAllCirclesRoomsLiveData(listOf(Membership.INVITE)).asFlow(), MatrixSessionProvider.getSessionOrThrow().getKnownUsersFlow(), roomIdsToUnblurProfile ) { roomSummaries, knownUsers, roomIdsToUnblur -> 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 650d5913448afa108de461cb91094deb9ca566a8..ed01a8875f1e6a7612b6af000542d9edce730595 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,6 +1,5 @@ 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 @@ -70,10 +69,11 @@ fun getAllJoinedCirclesRoomsAndSpacesLiveData(session: Session = MatrixSessionPr memberships = listOf(Membership.JOIN) }) -fun getAllJoinedCirclesRoomsLiveData() = MatrixSessionProvider.getSessionOrThrow().roomService() - .getRoomSummariesLive(roomSummaryQueryParams { - excludeType = listOf(roomType, spaceType, null) - memberships = listOf(Membership.JOIN) - }) +fun getAllCirclesRoomsLiveData(membershipFilter: List<Membership> = Membership.activeMemberships()) = + MatrixSessionProvider.getSessionOrThrow().roomService() + .getRoomSummariesLive(roomSummaryQueryParams { + excludeType = listOf(roomType, spaceType, null) + memberships = membershipFilter + })