mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-16 12:00:03 +03:00
Hide left rooms in breadcrumbs (#766)
This commit is contained in:
parent
3dc2cd4d7a
commit
a3fd49499b
5 changed files with 21 additions and 12 deletions
|
@ -8,6 +8,7 @@ Features ✨:
|
|||
Improvements 🙌:
|
||||
- New wording for notice when current user is the sender
|
||||
- Hide "X made no changes" event by default in timeline (#1430)
|
||||
- Hide left rooms in breadcrumbs (#766)
|
||||
|
||||
Bugfix 🐛:
|
||||
- Switch theme is not fully taken into account without restarting the app
|
||||
|
|
|
@ -29,6 +29,7 @@ import im.vector.matrix.android.api.session.room.model.RoomSummary
|
|||
import im.vector.matrix.android.api.session.room.model.create.CreateRoomParams
|
||||
import im.vector.matrix.android.api.session.sync.SyncState
|
||||
import im.vector.matrix.android.api.session.user.model.User
|
||||
import im.vector.matrix.android.api.session.widgets.model.Widget
|
||||
import im.vector.matrix.android.api.util.JsonDict
|
||||
import im.vector.matrix.android.api.util.Optional
|
||||
import im.vector.matrix.android.api.util.toOptional
|
||||
|
@ -36,7 +37,6 @@ import im.vector.matrix.android.internal.crypto.model.CryptoDeviceInfo
|
|||
import im.vector.matrix.android.internal.crypto.model.rest.DeviceInfo
|
||||
import im.vector.matrix.android.internal.crypto.store.PrivateKeysInfo
|
||||
import im.vector.matrix.android.internal.session.sync.model.accountdata.UserAccountDataEvent
|
||||
import im.vector.matrix.android.api.session.widgets.model.Widget
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.Single
|
||||
|
||||
|
@ -56,10 +56,10 @@ class RxSession(private val session: Session) {
|
|||
}
|
||||
}
|
||||
|
||||
fun liveBreadcrumbs(): Observable<List<RoomSummary>> {
|
||||
return session.getBreadcrumbsLive().asObservable()
|
||||
fun liveBreadcrumbs(onlyJoinedRooms: Boolean): Observable<List<RoomSummary>> {
|
||||
return session.getBreadcrumbsLive(onlyJoinedRooms).asObservable()
|
||||
.startWithCallable {
|
||||
session.getBreadcrumbs()
|
||||
session.getBreadcrumbs(onlyJoinedRooms)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -73,15 +73,17 @@ interface RoomService {
|
|||
|
||||
/**
|
||||
* Get a snapshot list of Breadcrumbs
|
||||
* @param onlyJoinedRooms set to true to keep only joined rooms, and filter out left rooms
|
||||
* @return the immutable list of [RoomSummary]
|
||||
*/
|
||||
fun getBreadcrumbs(): List<RoomSummary>
|
||||
fun getBreadcrumbs(onlyJoinedRooms: Boolean): List<RoomSummary>
|
||||
|
||||
/**
|
||||
* Get a live list of Breadcrumbs
|
||||
* @param onlyJoinedRooms set to true to keep only joined rooms, and filter out left rooms
|
||||
* @return the [LiveData] of [RoomSummary]
|
||||
*/
|
||||
fun getBreadcrumbsLive(): LiveData<List<RoomSummary>>
|
||||
fun getBreadcrumbsLive(onlyJoinedRooms: Boolean): LiveData<List<RoomSummary>>
|
||||
|
||||
/**
|
||||
* Inform the Matrix SDK that a room is displayed.
|
||||
|
|
|
@ -22,6 +22,7 @@ import im.vector.matrix.android.api.MatrixCallback
|
|||
import im.vector.matrix.android.api.session.room.Room
|
||||
import im.vector.matrix.android.api.session.room.RoomService
|
||||
import im.vector.matrix.android.api.session.room.RoomSummaryQueryParams
|
||||
import im.vector.matrix.android.api.session.room.model.Membership
|
||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||
import im.vector.matrix.android.api.session.room.model.VersioningState
|
||||
import im.vector.matrix.android.api.session.room.model.create.CreateRoomParams
|
||||
|
@ -111,24 +112,29 @@ internal class DefaultRoomService @Inject constructor(
|
|||
return query
|
||||
}
|
||||
|
||||
override fun getBreadcrumbs(): List<RoomSummary> {
|
||||
override fun getBreadcrumbs(onlyJoinedRooms: Boolean): List<RoomSummary> {
|
||||
return monarchy.fetchAllMappedSync(
|
||||
{ breadcrumbsQuery(it) },
|
||||
{ breadcrumbsQuery(it, onlyJoinedRooms) },
|
||||
{ roomSummaryMapper.map(it) }
|
||||
)
|
||||
}
|
||||
|
||||
override fun getBreadcrumbsLive(): LiveData<List<RoomSummary>> {
|
||||
override fun getBreadcrumbsLive(onlyJoinedRooms: Boolean): LiveData<List<RoomSummary>> {
|
||||
return monarchy.findAllMappedWithChanges(
|
||||
{ breadcrumbsQuery(it) },
|
||||
{ breadcrumbsQuery(it, onlyJoinedRooms) },
|
||||
{ roomSummaryMapper.map(it) }
|
||||
)
|
||||
}
|
||||
|
||||
private fun breadcrumbsQuery(realm: Realm): RealmQuery<RoomSummaryEntity> {
|
||||
private fun breadcrumbsQuery(realm: Realm, onlyJoinedRooms: Boolean): RealmQuery<RoomSummaryEntity> {
|
||||
return RoomSummaryEntity.where(realm)
|
||||
.isNotEmpty(RoomSummaryEntityFields.DISPLAY_NAME)
|
||||
.notEqualTo(RoomSummaryEntityFields.VERSIONING_STATE_STR, VersioningState.UPGRADED_ROOM_JOINED.name)
|
||||
.apply {
|
||||
if (onlyJoinedRooms) {
|
||||
equalTo(RoomSummaryEntityFields.MEMBERSHIP_STR, Membership.JOIN.name)
|
||||
}
|
||||
}
|
||||
.greaterThan(RoomSummaryEntityFields.BREADCRUMBS_INDEX, RoomSummary.NOT_IN_BREADCRUMBS)
|
||||
.sort(RoomSummaryEntityFields.BREADCRUMBS_INDEX)
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ class BreadcrumbsViewModel @AssistedInject constructor(@Assisted initialState: B
|
|||
|
||||
private fun observeBreadcrumbs() {
|
||||
session.rx()
|
||||
.liveBreadcrumbs()
|
||||
.liveBreadcrumbs(true)
|
||||
.observeOn(Schedulers.computation())
|
||||
.execute { asyncBreadcrumbs ->
|
||||
copy(asyncBreadcrumbs = asyncBreadcrumbs)
|
||||
|
|
Loading…
Add table
Reference in a new issue