Avoid using runBlocking in Node resolve function.
This commit is contained in:
parent
037e5dbce4
commit
476a2b9007
10 changed files with 159 additions and 26 deletions
|
|
@ -26,16 +26,13 @@ import io.element.android.libraries.architecture.BackstackView
|
|||
import io.element.android.libraries.architecture.BaseFlowNode
|
||||
import io.element.android.libraries.architecture.createNode
|
||||
import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@ContributesNode(SessionScope::class)
|
||||
class CreateRoomFlowNode @AssistedInject constructor(
|
||||
@Assisted buildContext: BuildContext,
|
||||
@Assisted plugins: List<Plugin>,
|
||||
private val client: MatrixClient,
|
||||
) : BaseFlowNode<CreateRoomFlowNode.NavTarget>(
|
||||
backstack = BackStack(
|
||||
initialElement = NavTarget.ConfigureRoom,
|
||||
|
|
@ -59,8 +56,7 @@ class CreateRoomFlowNode @AssistedInject constructor(
|
|||
createNode<ConfigureRoomNode>(buildContext, plugins = listOf(callback))
|
||||
}
|
||||
is NavTarget.AddPeople -> {
|
||||
val joinedRoom = runBlocking { client.getJoinedRoom(navTarget.roomId) } ?: error("Room not found")
|
||||
val inputs = AddPeopleNode.Inputs(joinedRoom)
|
||||
val inputs = AddPeopleNode.Inputs(navTarget.roomId)
|
||||
val callback: AddPeopleNode.Callback = object : AddPeopleNode.Callback {
|
||||
override fun onFinish() {
|
||||
onRoomCreated(navTarget.roomId)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import io.element.android.features.invitepeople.api.InvitePeopleRenderer
|
|||
import io.element.android.libraries.architecture.NodeInputs
|
||||
import io.element.android.libraries.architecture.inputs
|
||||
import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
|
||||
@ContributesNode(SessionScope::class)
|
||||
class AddPeopleNode @AssistedInject constructor(
|
||||
|
|
@ -31,7 +31,7 @@ class AddPeopleNode @AssistedInject constructor(
|
|||
private val invitePeopleRenderer: InvitePeopleRenderer,
|
||||
) : Node(buildContext, plugins = plugins) {
|
||||
data class Inputs(
|
||||
val joinedRoom: JoinedRoom
|
||||
val roomId: RoomId,
|
||||
) : NodeInputs
|
||||
|
||||
interface Callback : Plugin {
|
||||
|
|
@ -42,8 +42,11 @@ class AddPeopleNode @AssistedInject constructor(
|
|||
plugins<Callback>().forEach { it.onFinish() }
|
||||
}
|
||||
|
||||
private val joinedRoom = inputs<Inputs>().joinedRoom
|
||||
private val invitePeoplePresenter = invitePeoplePresenterFactory.create(joinedRoom)
|
||||
private val roomId = inputs<Inputs>().roomId
|
||||
private val invitePeoplePresenter = invitePeoplePresenterFactory.create(
|
||||
joinedRoom = null,
|
||||
roomId = roomId,
|
||||
)
|
||||
|
||||
@Composable
|
||||
override fun View(modifier: Modifier) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue