From a3fd49499b7ebcdfbc1a7c9c645a64ac03100d99 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 08:59:01 +0200 Subject: [PATCH 01/13] Hide left rooms in breadcrumbs (#766) --- CHANGES.md | 1 + .../main/java/im/vector/matrix/rx/RxSession.kt | 8 ++++---- .../android/api/session/room/RoomService.kt | 6 ++++-- .../internal/session/room/DefaultRoomService.kt | 16 +++++++++++----- .../room/breadcrumbs/BreadcrumbsViewModel.kt | 2 +- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index cd6ffe9995..344f884908 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -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 diff --git a/matrix-sdk-android-rx/src/main/java/im/vector/matrix/rx/RxSession.kt b/matrix-sdk-android-rx/src/main/java/im/vector/matrix/rx/RxSession.kt index d2d9eb4d5a..0e198e9679 100644 --- a/matrix-sdk-android-rx/src/main/java/im/vector/matrix/rx/RxSession.kt +++ b/matrix-sdk-android-rx/src/main/java/im/vector/matrix/rx/RxSession.kt @@ -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> { - return session.getBreadcrumbsLive().asObservable() + fun liveBreadcrumbs(onlyJoinedRooms: Boolean): Observable> { + return session.getBreadcrumbsLive(onlyJoinedRooms).asObservable() .startWithCallable { - session.getBreadcrumbs() + session.getBreadcrumbs(onlyJoinedRooms) } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/RoomService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/RoomService.kt index 93761dfd26..c4aeb1da9e 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/RoomService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/RoomService.kt @@ -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 + fun getBreadcrumbs(onlyJoinedRooms: Boolean): List /** * 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> + fun getBreadcrumbsLive(onlyJoinedRooms: Boolean): LiveData> /** * Inform the Matrix SDK that a room is displayed. diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/DefaultRoomService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/DefaultRoomService.kt index 84fc357160..dfcf6fae41 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/DefaultRoomService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/DefaultRoomService.kt @@ -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 { + override fun getBreadcrumbs(onlyJoinedRooms: Boolean): List { return monarchy.fetchAllMappedSync( - { breadcrumbsQuery(it) }, + { breadcrumbsQuery(it, onlyJoinedRooms) }, { roomSummaryMapper.map(it) } ) } - override fun getBreadcrumbsLive(): LiveData> { + override fun getBreadcrumbsLive(onlyJoinedRooms: Boolean): LiveData> { return monarchy.findAllMappedWithChanges( - { breadcrumbsQuery(it) }, + { breadcrumbsQuery(it, onlyJoinedRooms) }, { roomSummaryMapper.map(it) } ) } - private fun breadcrumbsQuery(realm: Realm): RealmQuery { + private fun breadcrumbsQuery(realm: Realm, onlyJoinedRooms: Boolean): RealmQuery { 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) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsViewModel.kt index f8a1e302af..d0e51c5171 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsViewModel.kt @@ -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) From aea517515c4447755296679faf498dd19de7f344 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 12:50:42 +0200 Subject: [PATCH 02/13] Fix navigation bar icon contrast on API in [21,27[ (#1342) --- CHANGES.md | 1 + vector/src/main/res/values-v21/theme_light.xml | 3 ++- vector/src/main/res/values-v21/theme_status.xml | 3 ++- vector/src/main/res/values-v27/theme_light.xml | 1 + vector/src/main/res/values-v27/theme_status.xml | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 638b81e0b4..29be0e2668 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -13,6 +13,7 @@ Bugfix 🐛: - Switch theme is not fully taken into account without restarting the app - Temporary fix to show error when user is creating an account on matrix.org with userId containing only digits (#1410) - Reply composer overlay stays on screen too long after send (#1169) + - Fix navigation bar icon contrast on API in [21,27[ (#1342) Translations 🗣: - diff --git a/vector/src/main/res/values-v21/theme_light.xml b/vector/src/main/res/values-v21/theme_light.xml index d5a31ad36f..6f24c4d432 100644 --- a/vector/src/main/res/values-v21/theme_light.xml +++ b/vector/src/main/res/values-v21/theme_light.xml @@ -3,7 +3,8 @@ diff --git a/vector/src/main/res/values-v27/theme_status.xml b/vector/src/main/res/values-v27/theme_status.xml index 3c72ede37d..f29383f8a3 100644 --- a/vector/src/main/res/values-v27/theme_status.xml +++ b/vector/src/main/res/values-v27/theme_status.xml @@ -2,6 +2,7 @@ From 3b256a708e79c6cc3341881635519e2e1791f4fb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 12:55:27 +0200 Subject: [PATCH 03/13] Fix status bar icon contrast on API in [21,23[ --- CHANGES.md | 1 + vector/src/main/res/values-v21/theme_light.xml | 3 ++- vector/src/main/res/values-v21/theme_status.xml | 3 ++- vector/src/main/res/values-v23/theme_light.xml | 1 + vector/src/main/res/values-v23/theme_status.xml | 3 ++- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 29be0e2668..7a130d10c2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -14,6 +14,7 @@ Bugfix 🐛: - Temporary fix to show error when user is creating an account on matrix.org with userId containing only digits (#1410) - Reply composer overlay stays on screen too long after send (#1169) - Fix navigation bar icon contrast on API in [21,27[ (#1342) + - Fix status bar icon contrast on API in [21,23[ Translations 🗣: - diff --git a/vector/src/main/res/values-v21/theme_light.xml b/vector/src/main/res/values-v21/theme_light.xml index 6f24c4d432..8f52615316 100644 --- a/vector/src/main/res/values-v21/theme_light.xml +++ b/vector/src/main/res/values-v21/theme_light.xml @@ -2,7 +2,8 @@ diff --git a/vector/src/main/res/values-v23/theme_status.xml b/vector/src/main/res/values-v23/theme_status.xml index 054e9fcbc1..b2e12ab55d 100644 --- a/vector/src/main/res/values-v23/theme_status.xml +++ b/vector/src/main/res/values-v23/theme_status.xml @@ -2,7 +2,8 @@