Ensure a Callback and only one is provided in the Plugin. Also reduce boilerplate code in Nodes.
This commit is contained in:
committed by
Benoit Marty
parent
596b7f00fc
commit
5197154f54
@@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier
|
||||
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.core.plugin.plugins
|
||||
import com.bumble.appyx.navmodel.backstack.BackStack
|
||||
import com.bumble.appyx.navmodel.backstack.operation.replace
|
||||
import dev.zacsweers.metro.Assisted
|
||||
@@ -24,6 +23,7 @@ import io.element.android.features.createroom.impl.addpeople.AddPeopleNode
|
||||
import io.element.android.features.createroom.impl.configureroom.ConfigureRoomNode
|
||||
import io.element.android.libraries.architecture.BackstackView
|
||||
import io.element.android.libraries.architecture.BaseFlowNode
|
||||
import io.element.android.libraries.architecture.callback
|
||||
import io.element.android.libraries.architecture.createNode
|
||||
import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
@@ -42,9 +42,7 @@ class CreateRoomFlowNode(
|
||||
buildContext = buildContext,
|
||||
plugins = plugins
|
||||
) {
|
||||
private fun onRoomCreated(roomId: RoomId) {
|
||||
plugins<CreateRoomEntryPoint.Callback>().forEach { it.onRoomCreated(roomId) }
|
||||
}
|
||||
private val callback: CreateRoomEntryPoint.Callback = callback()
|
||||
|
||||
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {
|
||||
return when (navTarget) {
|
||||
@@ -60,7 +58,7 @@ class CreateRoomFlowNode(
|
||||
val inputs = AddPeopleNode.Inputs(navTarget.roomId)
|
||||
val callback: AddPeopleNode.Callback = object : AddPeopleNode.Callback {
|
||||
override fun onFinish() {
|
||||
onRoomCreated(navTarget.roomId)
|
||||
callback.onRoomCreated(navTarget.roomId)
|
||||
}
|
||||
}
|
||||
createNode<AddPeopleNode>(buildContext, plugins = listOf(inputs, callback))
|
||||
|
||||
@@ -12,13 +12,13 @@ import androidx.compose.ui.Modifier
|
||||
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.core.plugin.plugins
|
||||
import dev.zacsweers.metro.Assisted
|
||||
import dev.zacsweers.metro.AssistedInject
|
||||
import io.element.android.annotations.ContributesNode
|
||||
import io.element.android.features.invitepeople.api.InvitePeoplePresenter
|
||||
import io.element.android.features.invitepeople.api.InvitePeopleRenderer
|
||||
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.di.SessionScope
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
@@ -39,10 +39,7 @@ class AddPeopleNode(
|
||||
fun onFinish()
|
||||
}
|
||||
|
||||
private fun onFinish() {
|
||||
plugins<Callback>().forEach { it.onFinish() }
|
||||
}
|
||||
|
||||
private val callback: Callback = callback()
|
||||
private val roomId = inputs<Inputs>().roomId
|
||||
private val invitePeoplePresenter = invitePeoplePresenterFactory.create(
|
||||
joinedRoom = null,
|
||||
@@ -54,7 +51,7 @@ class AddPeopleNode(
|
||||
val state = invitePeoplePresenter.present()
|
||||
AddPeopleView(
|
||||
state = state,
|
||||
onFinish = ::onFinish,
|
||||
onFinish = callback::onFinish,
|
||||
) {
|
||||
invitePeopleRenderer.Render(state, Modifier)
|
||||
}
|
||||
|
||||
@@ -13,11 +13,11 @@ import com.bumble.appyx.core.lifecycle.subscribe
|
||||
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.core.plugin.plugins
|
||||
import dev.zacsweers.metro.Assisted
|
||||
import dev.zacsweers.metro.AssistedInject
|
||||
import im.vector.app.features.analytics.plan.MobileScreen
|
||||
import io.element.android.annotations.ContributesNode
|
||||
import io.element.android.libraries.architecture.callback
|
||||
import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
@@ -42,9 +42,7 @@ class ConfigureRoomNode(
|
||||
)
|
||||
}
|
||||
|
||||
private fun onCreateRoomSuccess(roomId: RoomId) {
|
||||
plugins<Callback>().forEach { it.onCreateRoomSuccess(roomId) }
|
||||
}
|
||||
private val callback: Callback = callback()
|
||||
|
||||
@Composable
|
||||
override fun View(modifier: Modifier) {
|
||||
@@ -53,7 +51,7 @@ class ConfigureRoomNode(
|
||||
state = state,
|
||||
modifier = modifier,
|
||||
onBackClick = this::navigateUp,
|
||||
onCreateRoomSuccess = ::onCreateRoomSuccess,
|
||||
onCreateRoomSuccess = callback::onCreateRoomSuccess,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user