Skip to content
Snippets Groups Projects
Commit c9d90643 authored by Taras's avatar Taras
Browse files

Improve known users filter

parent 05699ce9
No related branches found
No related tags found
No related merge requests found
......@@ -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()
......
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)
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment