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

@ -22,8 +22,6 @@ import dev.zacsweers.metro.AssistedInject
import io.element.android.annotations.ContributesNode
import io.element.android.appnav.di.RoomGraphFactory
import io.element.android.appnav.room.RoomNavigationTarget
import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.Inputs
import io.element.android.appnav.room.joined.JoinedRoomLoadedFlowNode.NavTarget
import io.element.android.features.messages.api.MessagesEntryPoint
import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint
import io.element.android.features.space.api.SpaceEntryPoint
@ -154,6 +152,9 @@ class JoinedRoomLoadedFlowNode(
NavTarget.RoomNotificationSettings -> {
createRoomDetailsNode(buildContext, RoomDetailsEntryPoint.InitialTarget.RoomNotificationSettings)
}
NavTarget.RoomMemberList -> {
createRoomDetailsNode(buildContext, RoomDetailsEntryPoint.InitialTarget.RoomMemberList)
}
NavTarget.Space -> {
createSpaceNode(buildContext)
}
@ -169,6 +170,10 @@ class JoinedRoomLoadedFlowNode(
override fun onOpenDetails() {
backstack.push(NavTarget.RoomDetails)
}
override fun onOpenMemberList() {
backstack.push(NavTarget.RoomMemberList)
}
}
return spaceEntryPoint.nodeBuilder(this, buildContext)
.inputs(SpaceEntryPoint.Inputs(roomId = inputs.room.roomId))
@ -216,6 +221,9 @@ class JoinedRoomLoadedFlowNode(
@Parcelize
data object RoomDetails : NavTarget
@Parcelize
data object RoomMemberList : NavTarget
@Parcelize
data class RoomMemberDetails(val userId: UserId) : NavTarget
@ -229,17 +237,17 @@ class JoinedRoomLoadedFlowNode(
}
}
private fun initialElement(plugins: List<Plugin>): NavTarget {
val input = plugins.filterIsInstance<Inputs>().single()
private fun initialElement(plugins: List<Plugin>): JoinedRoomLoadedFlowNode.NavTarget {
val input = plugins.filterIsInstance<JoinedRoomLoadedFlowNode.Inputs>().single()
return when (input.initialElement) {
is RoomNavigationTarget.Root -> {
if (input.room.roomInfoFlow.value.isSpace) {
NavTarget.Space
JoinedRoomLoadedFlowNode.NavTarget.Space
} else {
NavTarget.Messages(input.initialElement.eventId)
JoinedRoomLoadedFlowNode.NavTarget.Messages(input.initialElement.eventId)
}
}
RoomNavigationTarget.Details -> NavTarget.RoomDetails
RoomNavigationTarget.NotificationSettings -> NavTarget.RoomNotificationSettings
RoomNavigationTarget.Details -> JoinedRoomLoadedFlowNode.NavTarget.RoomDetails
RoomNavigationTarget.NotificationSettings -> JoinedRoomLoadedFlowNode.NavTarget.RoomNotificationSettings
}
}