change(space) : last admin navigate to security&privacy

This commit is contained in:
ganfra 2025-12-15 20:46:23 +01:00
parent ce079e84f5
commit 313aa7e3c2
4 changed files with 19 additions and 10 deletions

View file

@ -65,7 +65,7 @@ class SpaceFlowNode(
data object Root : NavTarget
@Parcelize
data object Settings : NavTarget
data class Settings(val initialTarget: SpaceSettingsFlowNode.NavTarget = SpaceSettingsFlowNode.NavTarget.Root) : NavTarget
@Parcelize
data object Leave : NavTarget
@ -89,7 +89,7 @@ class SpaceFlowNode(
}
override fun navigateToRolesAndPermissions() {
// TODO
backstack.push(NavTarget.Settings(SpaceSettingsFlowNode.NavTarget.RolesAndPermissions))
}
}
createNode<LeaveSpaceNode>(buildContext, listOf(callback))
@ -101,7 +101,7 @@ class SpaceFlowNode(
}
override fun navigateToSpaceSettings() {
backstack.push(NavTarget.Settings)
backstack.push(NavTarget.Settings())
}
override fun navigateToRoomMemberList() {
@ -114,8 +114,10 @@ class SpaceFlowNode(
}
createNode<SpaceNode>(buildContext, listOf(callback))
}
NavTarget.Settings -> {
is NavTarget.Settings -> {
val callback = object : SpaceSettingsFlowNode.Callback {
override fun initialTarget() = navTarget.initialTarget
override fun navigateToSpaceMembers() {
callback.navigateToRoomMemberList()
}

View file

@ -132,8 +132,7 @@ fun LeaveSpaceView(
state.eventSink(LeaveSpaceEvents.LeaveSpace)
},
onCancel = onCancel,
// TODO enable when navigation is ready
showRolesAndPermissionsButton = false, // state.isLastAdmin,
showRolesAndPermissionsButton = state.isLastAdmin,
onRolesAndPermissionsClick = onRolesAndPermissionsClick,
)
}

View file

@ -39,13 +39,14 @@ class SpaceSettingsFlowNode(
private val roomDetailsEditEntryPoint: RoomDetailsEditEntryPoint
) : BaseFlowNode<SpaceSettingsFlowNode.NavTarget>(
backstack = BackStack(
initialElement = NavTarget.Root,
initialElement = initialElement(plugins),
savedStateMap = buildContext.savedStateMap,
),
buildContext = buildContext,
plugins = plugins,
) {
interface Callback : Plugin {
fun initialTarget(): NavTarget = NavTarget.Root
fun navigateToSpaceMembers()
fun startLeaveSpaceFlow()
fun closeSettings()
@ -56,7 +57,7 @@ class SpaceSettingsFlowNode(
data object Root : NavTarget
@Parcelize
data object EditDetails: NavTarget
data object EditDetails : NavTarget
@Parcelize
data object SecurityAndPrivacy : NavTarget
@ -138,3 +139,7 @@ class SpaceSettingsFlowNode(
BackstackView(modifier)
}
}
fun initialElement(plugins: List<Plugin>): SpaceSettingsFlowNode.NavTarget {
return plugins.callback<SpaceSettingsFlowNode.Callback>().initialTarget()
}

View file

@ -10,8 +10,11 @@ package io.element.android.libraries.architecture
import com.bumble.appyx.core.node.Node
import com.bumble.appyx.core.plugin.Plugin
import com.bumble.appyx.core.plugin.plugins
inline fun <reified I : Plugin> Node.callback(): I {
return requireNotNull(plugins<I>().singleOrNull()) { "Make sure to actually pass a Callback plugin to your node" }
return plugins.callback()
}
inline fun <reified I : Plugin> List<Plugin>.callback(): I {
return requireNotNull(filterIsInstance<I>().singleOrNull()) { "Make sure to actually pass a Callback plugin to your node" }
}