From e57ee00a9153090c0b1dad12268484313c10f024 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 8 Apr 2024 15:54:08 +0200 Subject: [PATCH] Join Room : improve a bit --- .../appnav/room/join/JoinRoomPresenter.kt | 8 ++- .../android/appnav/room/join/JoinRoomView.kt | 50 +++++++++++-------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomPresenter.kt index 3dda190d33..d80fb99b3e 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomPresenter.kt @@ -48,7 +48,7 @@ class JoinRoomPresenter @AssistedInject constructor( val userMembership by roomListService.getUserMembershipForRoom(roomId).collectAsState(initial = Optional.empty()) val joinAuthorisationStatus = joinAuthorisationStatus(userMembership) val roomInfo by produceState>(initialValue = AsyncData.Uninitialized, key1 = userMembership) { - when { + value = when { userMembership.isPresent -> { val roomInfo = matrixClient.getRoom(roomId)?.use { RoomInfo( @@ -59,11 +59,9 @@ class JoinRoomPresenter @AssistedInject constructor( roomAvatarUrl = it.avatarUrl ) } - value = roomInfo?.let { AsyncData.Success(it) } ?: AsyncData.Failure(Exception("Failed to load room info")) - } - else -> { - value = AsyncData.Uninitialized + roomInfo?.let { AsyncData.Success(it) } ?: AsyncData.Failure(Exception("Failed to load room info")) } + else -> AsyncData.Uninitialized } } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomView.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomView.kt index 9a4b805176..eff9181c11 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/join/JoinRoomView.kt @@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.widthIn @@ -132,7 +131,9 @@ private fun JoinRoomContent( modifier: Modifier = Modifier, ) { Column( - modifier = modifier.padding(all = 16.dp), + modifier = modifier + .fillMaxWidth() + .padding(all = 16.dp), horizontalAlignment = Alignment.CenterHorizontally ) { when (state.roomInfo) { @@ -159,30 +160,35 @@ private fun JoinRoomContent( color = ElementTheme.colors.textSecondary, ) if (state.showMemberCount) { - Spacer(modifier = Modifier.height(8.dp)) - Row( - modifier = Modifier - .background(color = ElementTheme.colors.bgSubtleSecondary, shape = CircleShape) - .widthIn(min = 48.dp) - .padding(all = 2.dp), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(4.dp) - ) { - Icon( - imageVector = CompoundIcons.UserProfile(), - contentDescription = null, - tint = ElementTheme.colors.iconSecondary, - ) - Text( - text = "${state.roomInfo.dataOrNull()?.memberCount}", - style = ElementTheme.typography.fontBodySmMedium, - color = ElementTheme.colors.textSecondary, - ) - } + JoinRoomMembersCount(memberCount = state.roomInfo.dataOrNull()?.memberCount ?: 0) } } } +@Composable +fun JoinRoomMembersCount(memberCount: Long) { + Spacer(modifier = Modifier.height(8.dp)) + Row( + modifier = Modifier + .background(color = ElementTheme.colors.bgSubtleSecondary, shape = CircleShape) + .widthIn(min = 48.dp) + .padding(all = 2.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + Icon( + imageVector = CompoundIcons.UserProfile(), + contentDescription = null, + tint = ElementTheme.colors.iconSecondary, + ) + Text( + text = "$memberCount", + style = ElementTheme.typography.fontBodySmMedium, + color = ElementTheme.colors.textSecondary, + ) + } +} + @OptIn(ExperimentalMaterial3Api::class) @Composable private fun JoinRoomTopBar(