misc(navigation) : add onDetailsClick on SpaceView

This commit is contained in:
ganfra
2025-10-27 09:53:09 +01:00
parent 06c26582f2
commit 2949dfb426
5 changed files with 23 additions and 0 deletions

View File

@@ -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))

View File

@@ -32,5 +32,6 @@ interface SpaceEntryPoint : FeatureEntryPoint {
interface Callback : Plugin {
fun onOpenRoom(roomId: RoomId, viaParameters: List<String>)
fun onOpenDetails()
}
}

View File

@@ -84,6 +84,10 @@ class SpaceFlowNode(
callback.onOpenRoom(roomId, viaParameters)
}
override fun onOpenDetails() {
callback.onOpenDetails()
}
override fun onLeaveSpace() {
backstack.push(NavTarget.Leave)
}

View File

@@ -41,6 +41,7 @@ class SpaceNode(
) : Node(buildContext, plugins = plugins) {
interface Callback : Plugin {
fun onOpenRoom(roomId: RoomId, viaParameters: List<String>)
fun onOpenDetails()
fun onLeaveSpace()
}
@@ -76,6 +77,9 @@ class SpaceNode(
onRoomClick = { spaceRoom ->
callback.onOpenRoom(spaceRoom.roomId, spaceRoom.via)
},
onDetailsClick = {
callback.onOpenDetails()
},
onShareSpace = {
onShareRoom(context)
},

View File

@@ -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 = {},
)
}