From f8417bda21cc0af7f26cc9ca1a1677800aa02354 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 29 Aug 2023 10:05:59 +0200 Subject: [PATCH 1/2] Format file. --- .../kotlin/io/element/android/x/MainNode.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/io/element/android/x/MainNode.kt b/app/src/main/kotlin/io/element/android/x/MainNode.kt index 44006a6da5..ce894ec2d6 100644 --- a/app/src/main/kotlin/io/element/android/x/MainNode.kt +++ b/app/src/main/kotlin/io/element/android/x/MainNode.kt @@ -28,8 +28,8 @@ import com.bumble.appyx.core.node.Node import com.bumble.appyx.core.node.ParentNode import com.bumble.appyx.core.plugin.Plugin import io.element.android.appnav.LoggedInAppScopeFlowNode -import io.element.android.appnav.room.RoomLoadedFlowNode import io.element.android.appnav.RootFlowNode +import io.element.android.appnav.room.RoomLoadedFlowNode import io.element.android.libraries.architecture.bindings import io.element.android.libraries.architecture.createNode import io.element.android.libraries.di.DaggerComponentOwner @@ -45,15 +45,14 @@ class MainNode( buildContext: BuildContext, private val mainDaggerComponentOwner: MainDaggerComponentsOwner, plugins: List, -) : - ParentNode( - navModel = PermanentNavModel( - navTargets = setOf(RootNavTarget), - savedStateMap = buildContext.savedStateMap, - ), - buildContext = buildContext, - plugins = plugins, +) : ParentNode( + navModel = PermanentNavModel( + navTargets = setOf(RootNavTarget), + savedStateMap = buildContext.savedStateMap, ), + buildContext = buildContext, + plugins = plugins, +), DaggerComponentOwner by mainDaggerComponentOwner { private val loggedInFlowNodeCallback = object : LoggedInAppScopeFlowNode.LifecycleCallback { From 79d4a4c1be22048ba1f79dbea7b104105a607d9a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 29 Aug 2023 10:08:59 +0200 Subject: [PATCH 2/2] `LoggedInAppScopeFlowNode` is just having one permanent child: `LoggedInFlowNode`. So no need to have a Backstack here, a ParentNode with PermanentNavModel is enough. --- .../appnav/LoggedInAppScopeFlowNode.kt | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt index 6fbe63c1e8..6a0e60aaaf 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInAppScopeFlowNode.kt @@ -23,16 +23,15 @@ import coil.Coil import com.bumble.appyx.core.composable.Children import com.bumble.appyx.core.lifecycle.subscribe import com.bumble.appyx.core.modality.BuildContext +import com.bumble.appyx.core.navigation.model.permanent.PermanentNavModel import com.bumble.appyx.core.node.Node +import com.bumble.appyx.core.node.ParentNode import com.bumble.appyx.core.plugin.Plugin import com.bumble.appyx.core.plugin.plugins -import com.bumble.appyx.navmodel.backstack.BackStack 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.NodeInputs -import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler import io.element.android.libraries.architecture.bindings import io.element.android.libraries.architecture.createNode import io.element.android.libraries.architecture.inputs @@ -51,9 +50,9 @@ import kotlinx.parcelize.Parcelize class LoggedInAppScopeFlowNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, -) : BackstackNode( - backstack = BackStack( - initialElement = NavTarget.Root, +) : ParentNode( + navModel = PermanentNavModel( + navTargets = setOf(NavTarget), savedStateMap = buildContext.savedStateMap, ), buildContext = buildContext, @@ -63,10 +62,8 @@ class LoggedInAppScopeFlowNode @AssistedInject constructor( fun onOpenBugReport() } - sealed interface NavTarget : Parcelable { - @Parcelize - data object Root : NavTarget - } + @Parcelize + object NavTarget : Parcelable interface LifecycleCallback : NodeLifecycleCallback { fun onFlowCreated(identifier: String, client: MatrixClient) @@ -95,31 +92,24 @@ class LoggedInAppScopeFlowNode @AssistedInject constructor( } override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { - return when (navTarget) { - NavTarget.Root -> { - val callback = object : LoggedInFlowNode.Callback { - override fun onOpenBugReport() { - plugins().forEach { it.onOpenBugReport() } - } - } - val nodeLifecycleCallbacks = plugins() - createNode(buildContext, nodeLifecycleCallbacks + callback) + val callback = object : LoggedInFlowNode.Callback { + override fun onOpenBugReport() { + plugins().forEach { it.onOpenBugReport() } } } + val nodeLifecycleCallbacks = plugins() + return createNode(buildContext, nodeLifecycleCallbacks + callback) } suspend fun attachSession(): LoggedInFlowNode { - return waitForChildAttached { navTarget -> - navTarget is NavTarget.Root - } + return waitForChildAttached { _ -> true } } @Composable override fun View(modifier: Modifier) { Children( - navModel = backstack, + navModel = navModel, modifier = modifier, - transitionHandler = rememberDefaultTransitionHandler(), ) } }