From 50ddd3cf3118e8d91ec9d8adf2569b2d1a7b11ff Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 24 Nov 2020 16:14:38 +0100 Subject: [PATCH] Small cleanup, handle case of no local alias, handle unpublish of canonical alias --- .../sdk/internal/session/room/RoomAPI.kt | 3 ++- .../session/room/alias/GetAliasesResponse.kt | 2 +- .../roomprofile/alias/RoomAliasController.kt | 17 ++++++++++++----- .../roomprofile/alias/RoomAliasViewModel.kt | 3 ++- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt index 44f52f5f3a..955a251b52 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt @@ -320,7 +320,8 @@ internal interface RoomAPI { @Body body: ReportContentBody): Call /** - * Get local aliases of this room + * Get a list of aliases maintained by the local server for the given room. + * Ref: https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-rooms-roomid-aliases */ @GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "org.matrix.msc2432/rooms/{roomId}/aliases") fun getAliases(@Path("roomId") roomId: String): Call diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/alias/GetAliasesResponse.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/alias/GetAliasesResponse.kt index 499abf33aa..5965924085 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/alias/GetAliasesResponse.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/alias/GetAliasesResponse.kt @@ -22,7 +22,7 @@ import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) internal data class GetAliasesResponse( /** - * The list of aliases currently defined on the local server for the given room + * Required. The server's local aliases on the room. Can be empty. */ @Json(name = "aliases") val aliases: List = emptyList() ) diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt index 64caa1e525..e1c8a3803e 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt @@ -199,11 +199,18 @@ class RoomAliasController @Inject constructor( } } is Success -> { - localAliases().forEachIndexed { idx, localAlias -> - profileActionItem { - id("loc_$idx") - title(localAlias) - listener { callback?.openAliasDetail(localAlias) } + if (localAliases().isEmpty()) { + settingsInfoItem { + id("locEmpty") + helperTextResId(R.string.room_alias_local_address_empty) + } + } else { + localAliases().forEachIndexed { idx, localAlias -> + profileActionItem { + id("loc_$idx") + title(localAlias) + listener { callback?.openAliasDetail(localAlias) } + } } } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt index 66daf6e5db..5873d9ce8a 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasViewModel.kt @@ -283,7 +283,8 @@ class RoomAliasViewModel @AssistedInject constructor(@Assisted initialState: Roo private fun handleUnpublishAlias(action: RoomAliasAction.UnpublishAlias) = withState { state -> updateCanonicalAlias( - canonicalAlias = state.canonicalAlias, + // We can also unpublish the canonical alias + canonicalAlias = state.canonicalAlias.takeIf { it != action.alias }, alternativeAliases = state.alternativeAliases - action.alias, closeForm = false )