change(space) : last admin navigate to security&privacy
This commit is contained in:
parent
591eac83bd
commit
a21b66b862
4 changed files with 19 additions and 10 deletions
|
|
@ -65,7 +65,7 @@ class SpaceFlowNode(
|
||||||
data object Root : NavTarget
|
data object Root : NavTarget
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data object Settings : NavTarget
|
data class Settings(val initialTarget: SpaceSettingsFlowNode.NavTarget = SpaceSettingsFlowNode.NavTarget.Root) : NavTarget
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data object Leave : NavTarget
|
data object Leave : NavTarget
|
||||||
|
|
@ -89,7 +89,7 @@ class SpaceFlowNode(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun navigateToRolesAndPermissions() {
|
override fun navigateToRolesAndPermissions() {
|
||||||
// TODO
|
backstack.push(NavTarget.Settings(SpaceSettingsFlowNode.NavTarget.RolesAndPermissions))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
createNode<LeaveSpaceNode>(buildContext, listOf(callback))
|
createNode<LeaveSpaceNode>(buildContext, listOf(callback))
|
||||||
|
|
@ -101,7 +101,7 @@ class SpaceFlowNode(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun navigateToSpaceSettings() {
|
override fun navigateToSpaceSettings() {
|
||||||
backstack.push(NavTarget.Settings)
|
backstack.push(NavTarget.Settings())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun navigateToRoomMemberList() {
|
override fun navigateToRoomMemberList() {
|
||||||
|
|
@ -114,8 +114,10 @@ class SpaceFlowNode(
|
||||||
}
|
}
|
||||||
createNode<SpaceNode>(buildContext, listOf(callback))
|
createNode<SpaceNode>(buildContext, listOf(callback))
|
||||||
}
|
}
|
||||||
NavTarget.Settings -> {
|
is NavTarget.Settings -> {
|
||||||
val callback = object : SpaceSettingsFlowNode.Callback {
|
val callback = object : SpaceSettingsFlowNode.Callback {
|
||||||
|
override fun initialTarget() = navTarget.initialTarget
|
||||||
|
|
||||||
override fun navigateToSpaceMembers() {
|
override fun navigateToSpaceMembers() {
|
||||||
callback.navigateToRoomMemberList()
|
callback.navigateToRoomMemberList()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,7 @@ fun LeaveSpaceView(
|
||||||
state.eventSink(LeaveSpaceEvents.LeaveSpace)
|
state.eventSink(LeaveSpaceEvents.LeaveSpace)
|
||||||
},
|
},
|
||||||
onCancel = onCancel,
|
onCancel = onCancel,
|
||||||
// TODO enable when navigation is ready
|
showRolesAndPermissionsButton = state.isLastAdmin,
|
||||||
showRolesAndPermissionsButton = false, // state.isLastAdmin,
|
|
||||||
onRolesAndPermissionsClick = onRolesAndPermissionsClick,
|
onRolesAndPermissionsClick = onRolesAndPermissionsClick,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,14 @@ class SpaceSettingsFlowNode(
|
||||||
private val roomDetailsEditEntryPoint: RoomDetailsEditEntryPoint
|
private val roomDetailsEditEntryPoint: RoomDetailsEditEntryPoint
|
||||||
) : BaseFlowNode<SpaceSettingsFlowNode.NavTarget>(
|
) : BaseFlowNode<SpaceSettingsFlowNode.NavTarget>(
|
||||||
backstack = BackStack(
|
backstack = BackStack(
|
||||||
initialElement = NavTarget.Root,
|
initialElement = initialElement(plugins),
|
||||||
savedStateMap = buildContext.savedStateMap,
|
savedStateMap = buildContext.savedStateMap,
|
||||||
),
|
),
|
||||||
buildContext = buildContext,
|
buildContext = buildContext,
|
||||||
plugins = plugins,
|
plugins = plugins,
|
||||||
) {
|
) {
|
||||||
interface Callback : Plugin {
|
interface Callback : Plugin {
|
||||||
|
fun initialTarget(): NavTarget = NavTarget.Root
|
||||||
fun navigateToSpaceMembers()
|
fun navigateToSpaceMembers()
|
||||||
fun startLeaveSpaceFlow()
|
fun startLeaveSpaceFlow()
|
||||||
fun closeSettings()
|
fun closeSettings()
|
||||||
|
|
@ -56,7 +57,7 @@ class SpaceSettingsFlowNode(
|
||||||
data object Root : NavTarget
|
data object Root : NavTarget
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data object EditDetails: NavTarget
|
data object EditDetails : NavTarget
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
data object SecurityAndPrivacy : NavTarget
|
data object SecurityAndPrivacy : NavTarget
|
||||||
|
|
@ -138,3 +139,7 @@ class SpaceSettingsFlowNode(
|
||||||
BackstackView(modifier)
|
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.node.Node
|
||||||
import com.bumble.appyx.core.plugin.Plugin
|
import com.bumble.appyx.core.plugin.Plugin
|
||||||
import com.bumble.appyx.core.plugin.plugins
|
|
||||||
|
|
||||||
inline fun <reified I : Plugin> Node.callback(): I {
|
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