diff --git a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt index 37c4e14d62..93e0c64a7f 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/room/joined/JoinedRoomLoadedFlowNode.kt @@ -166,6 +166,9 @@ class JoinedRoomLoadedFlowNode( callbacks.forEach { it.onOpenRoom(roomId, viaParameters) } } + override fun onOpenDetails() { + backstack.push(NavTarget.RoomDetails) + } } return spaceEntryPoint.nodeBuilder(this, buildContext) .inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId)) diff --git a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt index bdea93f3ef..a5f1134bf3 100644 --- a/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt +++ b/features/space/api/src/main/kotlin/io/element/android/features/space/api/SpaceEntryPoint.kt @@ -32,5 +32,6 @@ interface SpaceEntryPoint : FeatureEntryPoint { interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) + fun onOpenDetails() } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt index 1487aa4ac7..833186958b 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/SpaceFlowNode.kt @@ -84,6 +84,10 @@ class SpaceFlowNode( callback.onOpenRoom(roomId, viaParameters) } + override fun onOpenDetails() { + callback.onOpenDetails() + } + override fun onLeaveSpace() { backstack.push(NavTarget.Leave) } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt index 52c3472182..5266ba9f46 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceNode.kt @@ -41,6 +41,7 @@ class SpaceNode( ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { fun onOpenRoom(roomId: RoomId, viaParameters: List) + fun onOpenDetails() fun onLeaveSpace() } @@ -76,6 +77,9 @@ class SpaceNode( onRoomClick = { spaceRoom -> callback.onOpenRoom(spaceRoom.roomId, spaceRoom.via) }, + onDetailsClick = { + callback.onOpenDetails() + }, onShareSpace = { onShareRoom(context) }, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt index cd722ac6f3..8f01ea3194 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpaceView.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -24,6 +25,7 @@ import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics @@ -73,6 +75,7 @@ fun SpaceView( onRoomClick: (spaceRoom: SpaceRoom) -> Unit, onShareSpace: () -> Unit, onLeaveSpaceClick: () -> Unit, + onDetailsClick: () -> Unit, modifier: Modifier = Modifier, acceptDeclineInviteView: @Composable () -> Unit, ) { @@ -84,6 +87,7 @@ fun SpaceView( onBackClick = onBackClick, onLeaveSpaceClick = onLeaveSpaceClick, onShareSpace = onShareSpace, + onDetailsClick = onDetailsClick ) }, content = { padding -> @@ -244,6 +248,7 @@ private fun SpaceViewTopBar( currentSpace: SpaceRoom?, onBackClick: () -> Unit, onLeaveSpaceClick: () -> Unit, + onDetailsClick: () -> Unit, onShareSpace: () -> Unit, modifier: Modifier = Modifier, ) { @@ -254,9 +259,14 @@ private fun SpaceViewTopBar( }, title = { if (currentSpace != null) { + val roundedCornerShape = RoundedCornerShape(8.dp) SpaceAvatarAndNameRow( name = currentSpace.displayName, avatarData = currentSpace.getAvatarData(AvatarSize.TimelineRoom), + modifier = Modifier + .clip(roundedCornerShape) + // TODO enable when screen ready for space + // .clickable(onClick = onDetailsClick) ) } }, @@ -386,6 +396,7 @@ internal fun SpaceViewPreview( onShareSpace = {}, onLeaveSpaceClick = {}, acceptDeclineInviteView = {}, + onDetailsClick = {}, onBackClick = {}, ) }