Fix dm filtering
This commit is contained in:
parent
b635663ae3
commit
a3b9d187ce
@ -50,7 +50,9 @@ import org.matrix.android.sdk.api.session.room.RoomSummaryQueryParams
|
|||||||
import org.matrix.android.sdk.api.session.room.UpdatableLivePageResult
|
import org.matrix.android.sdk.api.session.room.UpdatableLivePageResult
|
||||||
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
|
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
|
||||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
|
import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
|
||||||
|
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
|
||||||
import org.matrix.android.sdk.api.session.room.state.isPublic
|
import org.matrix.android.sdk.api.session.room.state.isPublic
|
||||||
import org.matrix.android.sdk.internal.util.awaitCallback
|
import org.matrix.android.sdk.internal.util.awaitCallback
|
||||||
import org.matrix.android.sdk.rx.asObservable
|
import org.matrix.android.sdk.rx.asObservable
|
||||||
@ -162,16 +164,44 @@ class RoomListViewModel @Inject constructor(
|
|||||||
it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null)
|
it.roomTagQueryFilter = RoomTagQueryFilter(true, null, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
addSection(
|
// For DMs we still need some post query filter :/
|
||||||
sections,
|
// It's probably less important as home is not filtering at all
|
||||||
activeSpaceAwareQueries,
|
val dmList = MutableLiveData<List<RoomSummary>>()
|
||||||
R.string.bottom_action_people_x,
|
Observables.combineLatest(
|
||||||
false,
|
session.getRoomSummariesLive(
|
||||||
SpaceFilterStrategy.NORMAL
|
roomSummaryQueryParams {
|
||||||
) {
|
memberships = listOf(Membership.JOIN)
|
||||||
it.memberships = listOf(Membership.JOIN)
|
roomCategoryFilter = RoomCategoryFilter.ONLY_DM
|
||||||
it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM
|
}
|
||||||
}
|
).asObservable(),
|
||||||
|
appStateHandler.selectedSpaceDataSource.observe()
|
||||||
|
|
||||||
|
) { rooms, currentSpaceOption ->
|
||||||
|
val currentSpace = currentSpaceOption.orNull()
|
||||||
|
.takeIf {
|
||||||
|
// the +ALL trick is annoying, should find a way to fix that at the source!
|
||||||
|
MatrixPatterns.isRoomId(it?.roomId)
|
||||||
|
}
|
||||||
|
if (currentSpace == null) {
|
||||||
|
rooms
|
||||||
|
} else {
|
||||||
|
rooms.filter {
|
||||||
|
it.otherMemberIds
|
||||||
|
.intersect(currentSpace.otherMemberIds)
|
||||||
|
.isNotEmpty()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.subscribe {
|
||||||
|
dmList.postValue(it)
|
||||||
|
}.disposeOnClear()
|
||||||
|
|
||||||
|
sections.add(
|
||||||
|
RoomsSection(
|
||||||
|
sectionName = stringProvider.getString(R.string.bottom_action_people_x),
|
||||||
|
liveList = dmList,
|
||||||
|
notifyOfLocalEcho = false
|
||||||
|
)
|
||||||
|
)
|
||||||
} else if (initialState.displayMode == RoomListDisplayMode.ROOMS) {
|
} else if (initialState.displayMode == RoomListDisplayMode.ROOMS) {
|
||||||
addSection(
|
addSection(
|
||||||
sections, activeSpaceAwareQueries,
|
sections, activeSpaceAwareQueries,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user