Avoid using navigateUp.

This commit is contained in:
Benoit Marty 2025-11-21 15:13:23 +01:00
parent 4a90186bd1
commit f05a00b9b3
4 changed files with 27 additions and 5 deletions

View file

@ -40,6 +40,7 @@ import io.element.android.libraries.architecture.BaseFlowNode
import io.element.android.libraries.architecture.appyx.canPop
import io.element.android.libraries.architecture.callback
import io.element.android.libraries.architecture.createNode
import io.element.android.libraries.architecture.navigation.BaseCallback
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId
@ -267,7 +268,8 @@ class PreferencesFlowNode(
}
is NavTarget.UserProfile -> {
val inputs = EditUserProfileNode.Inputs(navTarget.matrixUser)
createNode<EditUserProfileNode>(buildContext, listOf(inputs))
val callback = BaseCallback { backstack.pop() }
createNode<EditUserProfileNode>(buildContext, listOf(inputs, callback))
}
NavTarget.LockScreenSettings -> {
lockScreenEntryPoint.createNode(

View file

@ -17,7 +17,9 @@ import dev.zacsweers.metro.Assisted
import dev.zacsweers.metro.AssistedInject
import io.element.android.annotations.ContributesNode
import io.element.android.libraries.architecture.NodeInputs
import io.element.android.libraries.architecture.callback
import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.architecture.navigation.BaseCallback
import io.element.android.libraries.architecture.navigation.BaseNavigator
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.user.MatrixUser
@ -35,6 +37,7 @@ class EditUserProfileNode(
) : NodeInputs
val matrixUser = inputs<Inputs>().matrixUser
val callback: BaseCallback = callback()
val presenter = presenterFactory.create(
matrixUser = matrixUser,
navigator = this,
@ -50,8 +53,5 @@ class EditUserProfileNode(
)
}
override fun close() {
// TODO Invoke callback
navigateUp()
}
override fun close() = callback.onDone()
}