feature(space): add view members entry

This commit is contained in:
ganfra 2025-10-27 17:46:16 +01:00
parent ef52fb38f2
commit 52f48268b1
9 changed files with 57 additions and 13 deletions

View file

@ -88,6 +88,10 @@ class SpaceFlowNode(
callback.onOpenDetails()
}
override fun onOpenMemberList() {
callback.onOpenMemberList()
}
override fun onLeaveSpace() {
backstack.push(NavTarget.Leave)
}

View file

@ -42,6 +42,8 @@ class SpaceNode(
interface Callback : Plugin {
fun onOpenRoom(roomId: RoomId, viaParameters: List<String>)
fun onOpenDetails()
fun onOpenMemberList()
fun onLeaveSpace()
}
@ -83,6 +85,9 @@ class SpaceNode(
onShareSpace = {
onShareRoom(context)
},
onViewMembersClick = {
callback.onOpenMemberList()
},
acceptDeclineInviteView = {
acceptDeclineInviteView.Render(
state = state.acceptDeclineInviteState,

View file

@ -78,6 +78,7 @@ fun SpaceView(
onShareSpace: () -> Unit,
onLeaveSpaceClick: () -> Unit,
onDetailsClick: () -> Unit,
onViewMembersClick: () -> Unit,
modifier: Modifier = Modifier,
acceptDeclineInviteView: @Composable () -> Unit,
) {
@ -89,7 +90,8 @@ fun SpaceView(
onBackClick = onBackClick,
onLeaveSpaceClick = onLeaveSpaceClick,
onShareSpace = onShareSpace,
onDetailsClick = onDetailsClick
onDetailsClick = onDetailsClick,
onViewMembersClick = onViewMembersClick,
)
},
content = { padding ->
@ -256,6 +258,7 @@ private fun SpaceViewTopBar(
onLeaveSpaceClick: () -> Unit,
onDetailsClick: () -> Unit,
onShareSpace: () -> Unit,
onViewMembersClick: () -> Unit,
modifier: Modifier = Modifier,
) {
TopAppBar(
@ -304,6 +307,20 @@ private fun SpaceViewTopBar(
)
}
)
DropdownMenuItem(
onClick = {
showMenu = false
onViewMembersClick()
},
text = { Text(stringResource(id = CommonStrings.screen_space_menu_action_members)) },
leadingIcon = {
Icon(
imageVector = CompoundIcons.User(),
tint = ElementTheme.colors.iconSecondary,
contentDescription = null,
)
}
)
DropdownMenuItem(
onClick = {
showMenu = false
@ -344,10 +361,10 @@ private fun SpaceAvatarAndNameRow(
)
Text(
modifier = Modifier
.padding(horizontal = 8.dp)
.semantics {
heading()
},
.padding(horizontal = 8.dp)
.semantics {
heading()
},
text = name ?: stringResource(CommonStrings.common_no_space_name),
style = ElementTheme.typography.fontBodyLgMedium,
fontStyle = FontStyle.Italic.takeIf { name == null },
@ -403,6 +420,7 @@ internal fun SpaceViewPreview(
onLeaveSpaceClick = {},
acceptDeclineInviteView = {},
onDetailsClick = {},
onViewMembersClick = {},
onBackClick = {},
)
}

View file

@ -46,6 +46,7 @@ class DefaultSpaceEntryPointTest {
val callback = object : SpaceEntryPoint.Callback {
override fun onOpenRoom(roomId: RoomId, viaParameters: List<String>) = lambdaError()
override fun onOpenDetails() = lambdaError()
override fun onOpenMemberList() = lambdaError()
}
val result = entryPoint.nodeBuilder(parentNode, BuildContext.root(null))
.inputs(nodeInputs)

View file

@ -140,6 +140,7 @@ private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setSpace
onShareSpace: () -> Unit = EnsureNeverCalled(),
onLeaveSpaceClick: () -> Unit = EnsureNeverCalled(),
onDetailsClick: () -> Unit = EnsureNeverCalled(),
onViewMembersClick: () -> Unit = EnsureNeverCalled(),
acceptDeclineInviteView: @Composable () -> Unit = {},
) {
setContent {
@ -150,6 +151,7 @@ private fun <R : TestRule> AndroidComposeTestRule<R, ComponentActivity>.setSpace
onShareSpace = onShareSpace,
onLeaveSpaceClick = onLeaveSpaceClick,
onDetailsClick = onDetailsClick,
onViewMembersClick = onViewMembersClick,
acceptDeclineInviteView = acceptDeclineInviteView,
)
}