You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
12 months ago
|
package io.element.android.features.${MODULE_NAME}.impl
|
||
|
|
||
|
import android.os.Parcelable
|
||
|
import androidx.compose.runtime.Composable
|
||
|
import androidx.compose.ui.Modifier
|
||
|
import com.bumble.appyx.core.composable.Children
|
||
|
import com.bumble.appyx.core.modality.BuildContext
|
||
|
import com.bumble.appyx.core.node.Node
|
||
|
import com.bumble.appyx.core.plugin.Plugin
|
||
|
import com.bumble.appyx.navmodel.backstack.BackStack
|
||
|
import com.bumble.appyx.navmodel.backstack.operation.push
|
||
|
import dagger.assisted.Assisted
|
||
|
import dagger.assisted.AssistedInject
|
||
|
import io.element.android.anvilannotations.ContributesNode
|
||
|
import io.element.android.libraries.architecture.BackstackNode
|
||
|
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
|
||
|
import io.element.android.libraries.architecture.createNode
|
||
|
import io.element.android.libraries.di.AppScope
|
||
|
import kotlinx.parcelize.Parcelize
|
||
|
|
||
|
// CHANGE THE SCOPE
|
||
|
@ContributesNode(AppScope::class)
|
||
|
class ${FEATURE_NAME}FlowNode @AssistedInject constructor(
|
||
|
@Assisted buildContext: BuildContext,
|
||
|
@Assisted plugins: List<Plugin>,
|
||
|
) : BackstackNode<${FEATURE_NAME}FlowNode.NavTarget>(
|
||
|
backstack = BackStack(
|
||
|
initialElement = NavTarget.Root,
|
||
|
savedStateMap = buildContext.savedStateMap,
|
||
|
),
|
||
|
buildContext = buildContext,
|
||
|
plugins = plugins,
|
||
|
) {
|
||
|
|
||
|
sealed interface NavTarget : Parcelable {
|
||
|
@Parcelize
|
||
|
object Root : NavTarget
|
||
|
}
|
||
|
|
||
|
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
|
||
|
return when (navTarget) {
|
||
|
NavTarget.Root -> {
|
||
|
//Give your root node or completely delete this FlowNode if you have only one node.
|
||
|
createNode<>(buildContext)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Composable
|
||
|
override fun View(modifier: Modifier) {
|
||
|
Children(
|
||
|
navModel = backstack,
|
||
|
modifier = modifier,
|
||
|
transitionHandler = rememberDefaultTransitionHandler(),
|
||
|
)
|
||
|
}
|
||
|
}
|