From c09626182c6d204c6a38b16a44e5a256fb5bca86 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 2 Jun 2020 19:31:25 +0200 Subject: [PATCH 01/18] Fix / reply ux stays too long --- .../riotx/features/home/room/detail/RoomDetailFragment.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index 3f959746c0..dc2c5389c2 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -622,6 +622,8 @@ class RoomDetailFragment @Inject constructor( return } if (text.isNotBlank()) { + // We collapse ASAP, if not there will be a slight anoying delay + composerLayout.collapse(true) lockSendButton = true roomDetailViewModel.handle(RoomDetailAction.SendMessage(text, vectorPreferences.isMarkdownEnabled())) } From a3fd49499b7ebcdfbc1a7c9c645a64ac03100d99 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 08:59:01 +0200 Subject: [PATCH 02/18] 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 c3d89168020d9e5bbc01ac4f5088c494e99f99b8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 11:40:38 +0200 Subject: [PATCH 03/18] fix param name --- .../matrix/android/internal/session/widgets/WidgetsAPI.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/widgets/WidgetsAPI.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/widgets/WidgetsAPI.kt index 922234a0b1..f798e7e25b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/widgets/WidgetsAPI.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/widgets/WidgetsAPI.kt @@ -27,7 +27,7 @@ internal interface WidgetsAPI { /** * register to the server * - * @param requestOpenIdTokenResponse the body content (Ref: https://github.com/matrix-org/matrix-doc/pull/1961) + * @param body the body content (Ref: https://github.com/matrix-org/matrix-doc/pull/1961) */ @POST("register") fun register(@Body body: RequestOpenIdTokenResponse, @Query("v") version: String?): Call From 8b7e5e527a424418fbfe9ceeb4963eb13b5973ef Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 11:41:32 +0200 Subject: [PATCH 04/18] Make Credentials.homeServer optional because it is deprecated (#1443) It is never used currently in RiotX, but if homeserver does not sent it, it would crash. --- CHANGES.md | 1 + .../java/im/vector/matrix/android/api/auth/data/Credentials.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index cd6ffe9995..d3bca0eb06 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,7 @@ Improvements 🙌: 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) + - Make Credentials.homeServer optional because it is deprecated (#1443) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/Credentials.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/Credentials.kt index d88cd5e74d..d50ed2f46e 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/Credentials.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/Credentials.kt @@ -45,7 +45,7 @@ data class Credentials( * @Deprecated. Clients should extract the server_name from user_id (by splitting at the first colon) * if they require it. Note also that homeserver is not spelt this way. */ - @Json(name = "home_server") val homeServer: String, + @Json(name = "home_server") val homeServer: String?, /** * ID of the logged-in device. Will be the same as the corresponding parameter in the request, if one was specified. */ From 2adb5af0512053832147596ae19d50e9f8ef9d14 Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 4 Jun 2020 11:43:47 +0200 Subject: [PATCH 05/18] update change log --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index ef31216264..eeff8e1e4b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,7 @@ Improvements 🙌: Bugfix 🐛: - Switch theme is not fully taken into account without restarting the app + - Reply composer overlay stays on screen too long after send (#1169) Translations 🗣: - From f28889284db8c153feda4c7d02ec6682d7e87f97 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 11:59:04 +0200 Subject: [PATCH 06/18] Wrong /query request (#1444) --- CHANGES.md | 1 + .../android/internal/crypto/model/rest/KeysQueryBody.kt | 2 +- .../android/internal/crypto/tasks/DownloadKeysForUsersTask.kt | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 638b81e0b4..3eeac46193 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) + - Wrong /query request (#1444) Translations 🗣: - diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeysQueryBody.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeysQueryBody.kt index da2dd781dd..758967d05e 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeysQueryBody.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/model/rest/KeysQueryBody.kt @@ -36,7 +36,7 @@ internal data class KeysQueryBody( * A map from user ID, to a list of device IDs, or to an empty list to indicate all devices for the corresponding user. */ @Json(name = "device_keys") - val deviceKeys: Map, + val deviceKeys: Map>, /** * If the client is fetching keys as a result of a device update received in a sync request, this should be the 'since' token diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/tasks/DownloadKeysForUsersTask.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/tasks/DownloadKeysForUsersTask.kt index 94fe3c1e8d..5e4b2184b0 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/tasks/DownloadKeysForUsersTask.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/tasks/DownloadKeysForUsersTask.kt @@ -27,7 +27,7 @@ import javax.inject.Inject internal interface DownloadKeysForUsersTask : Task { data class Params( // the list of users to get keys for. - val userIds: List?, + val userIds: List, // the up-to token val token: String? ) @@ -39,7 +39,7 @@ internal class DefaultDownloadKeysForUsers @Inject constructor( ) : DownloadKeysForUsersTask { override suspend fun execute(params: DownloadKeysForUsersTask.Params): KeysQueryResponse { - val downloadQuery = params.userIds?.associateWith { emptyMap() }.orEmpty() + val downloadQuery = params.userIds.associateWith { emptyList() } val body = KeysQueryBody( deviceKeys = downloadQuery, From aea517515c4447755296679faf498dd19de7f344 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 4 Jun 2020 12:50:42 +0200 Subject: [PATCH 07/18] 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 08/18] 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 @@