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
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(), |
|
) |
|
} |
|
}
|
|
|