From 03b2cbb06fc358a72e2273647e1fc4591caf1241 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 5 Jul 2023 12:01:51 +0200 Subject: [PATCH] Room: remove bestName and use displayName instead of name where it makes sense --- .../leaveroom/impl/LeaveRoomPresenterImpl.kt | 2 +- .../messages/impl/MessagesPresenter.kt | 33 +++++++++---------- .../features/messages/impl/MessagesState.kt | 4 +-- .../features/messages/impl/MessagesView.kt | 12 +++---- .../roomdetails/impl/RoomDetailsPresenter.kt | 2 +- .../roomdetails/RoomDetailsPresenterTests.kt | 2 +- .../libraries/matrix/api/room/MatrixRoom.kt | 1 - .../matrix/impl/room/RustMatrixRoom.kt | 5 --- .../matrix/test/room/FakeMatrixRoom.kt | 1 - 9 files changed, 26 insertions(+), 36 deletions(-) diff --git a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt index 68a8d80fe6..2ad35b38c9 100644 --- a/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt +++ b/features/leaveroom/impl/src/main/kotlin/io/element/android/features/leaveroom/impl/LeaveRoomPresenterImpl.kt @@ -105,7 +105,7 @@ private suspend fun MatrixClient.leaveRoom( room.leave().onSuccess { roomMembershipObserver.notifyUserLeftRoom(room.roomId) }.onFailure { - Timber.e(it, "Error while leaving room ${room.name} - ${room.roomId}") + Timber.e(it, "Error while leaving room ${room.displayName} - ${room.roomId}") error.value = LeaveRoomState.Error.Shown } } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt index f2c8deca49..ae6b65f076 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt @@ -24,6 +24,7 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.produceState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.saveable.rememberSaveable @@ -107,13 +108,12 @@ class MessagesPresenter @AssistedInject constructor( val syncUpdateFlow = room.syncUpdateFlow.collectAsState() val userHasPermissionToSendMessage by room.canSendEventAsState(type = MessageEventType.ROOM_MESSAGE, updateKey = syncUpdateFlow.value) - val roomName: MutableState = rememberSaveable { - mutableStateOf(null) + val roomName by produceState(initialValue = room.displayName, key1 = syncUpdateFlow.value){ + value = room.displayName } - val roomAvatar: MutableState = remember { - mutableStateOf(null) + val roomAvatar by produceState(initialValue = room.avatarData(), key1 = syncUpdateFlow.value){ + value = room.avatarData() } - var hasDismissedInviteDialog by rememberSaveable { mutableStateOf(false) } @@ -134,16 +134,6 @@ class MessagesPresenter @AssistedInject constructor( val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState() - LaunchedEffect(syncUpdateFlow.value) { - roomAvatar.value = - AvatarData( - id = room.roomId.value, - name = room.name, - url = room.avatarUrl, - size = AvatarSize.TimelineRoom - ) - roomName.value = room.name - } LaunchedEffect(composerState.mode.relatedEventId) { timelineState.eventSink(TimelineEvents.SetHighlightedEvent(composerState.mode.relatedEventId)) } @@ -169,8 +159,8 @@ class MessagesPresenter @AssistedInject constructor( return MessagesState( roomId = room.roomId, - roomName = roomName.value, - roomAvatar = roomAvatar.value, + roomName = roomName, + roomAvatar = roomAvatar, userHasPermissionToSendMessage = userHasPermissionToSendMessage, composerState = composerState, timelineState = timelineState, @@ -185,6 +175,15 @@ class MessagesPresenter @AssistedInject constructor( ) } + private fun MatrixRoom.avatarData(): AvatarData { + return AvatarData( + id = room.roomId.value, + name = room.displayName, + url = room.avatarUrl, + size = AvatarSize.TimelineRoom + ) + } + private fun CoroutineScope.handleTimelineAction( action: TimelineItemAction, targetEvent: TimelineItem.Event, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt index 29fbeaedd9..8a067a3a26 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesState.kt @@ -30,8 +30,8 @@ import io.element.android.libraries.matrix.api.core.RoomId @Immutable data class MessagesState( val roomId: RoomId, - val roomName: String?, - val roomAvatar: AvatarData?, + val roomName: String, + val roomAvatar: AvatarData, val userHasPermissionToSendMessage: Boolean, val composerState: MessageComposerState, val timelineState: TimelineState, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index 037199aba8..87ee434598 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -277,8 +277,8 @@ fun MessagesViewContent( @OptIn(ExperimentalMaterial3Api::class) @Composable fun MessagesViewTopBar( - roomTitle: String?, - roomAvatar: AvatarData?, + roomTitle: String, + roomAvatar: AvatarData, modifier: Modifier = Modifier, onRoomDetailsClicked: () -> Unit = {}, onBackPressed: () -> Unit = {}, @@ -293,14 +293,12 @@ fun MessagesViewTopBar( modifier = Modifier.clickable { onRoomDetailsClicked() }, verticalAlignment = Alignment.CenterVertically ) { - if (roomAvatar != null) { - Avatar(roomAvatar) - Spacer(modifier = Modifier.width(8.dp)) - } + Avatar(roomAvatar) + Spacer(modifier = Modifier.width(8.dp)) Text( fontSize = 16.sp, fontWeight = FontWeight.SemiBold, - text = roomTitle ?: "Unknown room", + text = roomTitle, maxLines = 1, overflow = TextOverflow.Ellipsis ) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt index 944049d163..2c70e66ff6 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt @@ -78,7 +78,7 @@ class RoomDetailsPresenter @Inject constructor( return RoomDetailsState( roomId = room.roomId.value, - roomName = room.name ?: room.displayName, + roomName = room.displayName, roomAlias = room.alias, roomAvatarUrl = room.avatarUrl, roomTopic = topicState, diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt index f85942c3ee..f9d947615a 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/RoomDetailsPresenterTests.kt @@ -62,7 +62,7 @@ class RoomDetailsPresenterTests { }.test { val initialState = awaitItem() assertThat(initialState.roomId).isEqualTo(room.roomId.value) - assertThat(initialState.roomName).isEqualTo(room.name) + assertThat(initialState.roomName).isEqualTo(room.displayName) assertThat(initialState.roomAvatarUrl).isEqualTo(room.avatarUrl) assertThat(initialState.roomTopic).isEqualTo(RoomTopicState.ExistingTopic(room.topic!!)) assertThat(initialState.memberCount).isEqualTo(room.joinedMemberCount) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt index 12ffde3cd9..3960f74723 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/MatrixRoom.kt @@ -35,7 +35,6 @@ interface MatrixRoom : Closeable { val sessionId: SessionId val roomId: RoomId val name: String? - val bestName: String val displayName: String val alias: String? val alternativeAliases: List diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index 680bed0cac..cc3a03e95f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -130,11 +130,6 @@ class RustMatrixRoom( return roomListItem.name() } - override val bestName: String - get() { - return name?.takeIf { it.isNotEmpty() } ?: innerRoom.id() - } - override val displayName: String get() { return innerRoom.displayName() diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt index e50fe5441e..be4cd4cbed 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeMatrixRoom.kt @@ -43,7 +43,6 @@ class FakeMatrixRoom( override val sessionId: SessionId = A_SESSION_ID, override val roomId: RoomId = A_ROOM_ID, override val name: String? = null, - override val bestName: String = "", override val displayName: String = "", override val topic: String? = null, override val avatarUrl: String? = null,