From e8ab2b69425c878d9a580d5cb45c8d60c4a1b95f Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Fri, 12 Jan 2024 17:43:55 +0200 Subject: [PATCH] Improve invites filter --- .../extensions/MatrixSessionExtensions.kt | 4 ++-- .../feature/room/invites/InvitesDataSource.kt | 23 +++++++------------ .../futo/circles/core/utils/MatrixUtils.kt | 12 +++++----- 3 files changed, 16 insertions(+), 23 deletions(-) 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 c6758083f..6f57401d6 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 bfb75278c..0f03f224f 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 650d59134..ed01a8875 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 + }) -- GitLab