Avoid using navigateUp.
This commit is contained in:
parent
914a44c6dc
commit
6c8dfff963
4 changed files with 27 additions and 5 deletions
|
|
@ -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.appyx.canPop
|
||||||
import io.element.android.libraries.architecture.callback
|
import io.element.android.libraries.architecture.callback
|
||||||
import io.element.android.libraries.architecture.createNode
|
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.di.SessionScope
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
|
|
@ -267,7 +268,8 @@ class PreferencesFlowNode(
|
||||||
}
|
}
|
||||||
is NavTarget.UserProfile -> {
|
is NavTarget.UserProfile -> {
|
||||||
val inputs = EditUserProfileNode.Inputs(navTarget.matrixUser)
|
val inputs = EditUserProfileNode.Inputs(navTarget.matrixUser)
|
||||||
createNode<EditUserProfileNode>(buildContext, listOf(inputs))
|
val callback = BaseCallback { backstack.pop() }
|
||||||
|
createNode<EditUserProfileNode>(buildContext, listOf(inputs, callback))
|
||||||
}
|
}
|
||||||
NavTarget.LockScreenSettings -> {
|
NavTarget.LockScreenSettings -> {
|
||||||
lockScreenEntryPoint.createNode(
|
lockScreenEntryPoint.createNode(
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ import dev.zacsweers.metro.Assisted
|
||||||
import dev.zacsweers.metro.AssistedInject
|
import dev.zacsweers.metro.AssistedInject
|
||||||
import io.element.android.annotations.ContributesNode
|
import io.element.android.annotations.ContributesNode
|
||||||
import io.element.android.libraries.architecture.NodeInputs
|
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.inputs
|
||||||
|
import io.element.android.libraries.architecture.navigation.BaseCallback
|
||||||
import io.element.android.libraries.architecture.navigation.BaseNavigator
|
import io.element.android.libraries.architecture.navigation.BaseNavigator
|
||||||
import io.element.android.libraries.di.SessionScope
|
import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
|
|
@ -35,6 +37,7 @@ class EditUserProfileNode(
|
||||||
) : NodeInputs
|
) : NodeInputs
|
||||||
|
|
||||||
val matrixUser = inputs<Inputs>().matrixUser
|
val matrixUser = inputs<Inputs>().matrixUser
|
||||||
|
val callback: BaseCallback = callback()
|
||||||
val presenter = presenterFactory.create(
|
val presenter = presenterFactory.create(
|
||||||
matrixUser = matrixUser,
|
matrixUser = matrixUser,
|
||||||
navigator = this,
|
navigator = this,
|
||||||
|
|
@ -50,8 +53,5 @@ class EditUserProfileNode(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun close() {
|
override fun close() = callback.onDone()
|
||||||
// TODO Invoke callback
|
|
||||||
navigateUp()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025 Element Creations Ltd.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||||
|
* Please see LICENSE files in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.element.android.libraries.architecture.navigation
|
||||||
|
|
||||||
|
import com.bumble.appyx.core.plugin.Plugin
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base callback interface to be implemented by callers to handle results from nodes.
|
||||||
|
*/
|
||||||
|
fun interface BaseCallback : Plugin {
|
||||||
|
fun onDone()
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,9 @@
|
||||||
|
|
||||||
package io.element.android.libraries.architecture.navigation
|
package io.element.android.libraries.architecture.navigation
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base navigator interface to be implemented by nodes to handle navigation actions from presenters.
|
||||||
|
*/
|
||||||
fun interface BaseNavigator {
|
fun interface BaseNavigator {
|
||||||
fun close()
|
fun close()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue