change(space) : last admin navigate to security&privacy
This commit is contained in:
parent
ce079e84f5
commit
313aa7e3c2
4 changed files with 19 additions and 10 deletions
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue