[Room details] Open room member details when clicking on user data in timeline (#482)

This commit is contained in:
Jorge Martin Espinosa
2023-06-01 12:03:27 +02:00
committed by GitHub
parent d7448c7acc
commit b50350aaa0
15 changed files with 99 additions and 16 deletions

View File

@@ -39,6 +39,7 @@ import io.element.android.libraries.architecture.NodeInputs
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
import io.element.android.libraries.architecture.inputs
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.MatrixRoom
import io.element.android.libraries.matrix.api.room.RoomMembershipObserver
import io.element.android.services.appnavstate.api.AppNavigationStateService
@@ -119,11 +120,20 @@ class RoomFlowNode @AssistedInject constructor(
override fun onRoomDetailsClicked() {
backstack.push(NavTarget.RoomDetails)
}
override fun onUserDataClicked(userId: UserId) {
backstack.push(NavTarget.RoomMemberDetails(userId))
}
}
messagesEntryPoint.createNode(this, buildContext, callback)
}
NavTarget.RoomDetails -> {
roomDetailsEntryPoint.createNode(this, buildContext, emptyList())
val inputs = RoomDetailsEntryPoint.Inputs(RoomDetailsEntryPoint.InitialTarget.RoomDetails)
roomDetailsEntryPoint.createNode(this, buildContext, inputs, emptyList())
}
is NavTarget.RoomMemberDetails -> {
val inputs = RoomDetailsEntryPoint.Inputs(RoomDetailsEntryPoint.InitialTarget.RoomMemberDetails(navTarget.userId))
roomDetailsEntryPoint.createNode(this, buildContext, inputs, emptyList())
}
}
}
@@ -134,6 +144,9 @@ class RoomFlowNode @AssistedInject constructor(
@Parcelize
object RoomDetails : NavTarget
@Parcelize
data class RoomMemberDetails(val userId: UserId) : NavTarget
}
private val timeline = inputs.room.timeline()

View File

@@ -60,7 +60,12 @@ class RoomFlowNodeTest {
var nodeId: String? = null
override fun createNode(parentNode: Node, buildContext: BuildContext, plugins: List<Plugin>): Node {
override fun createNode(
parentNode: Node,
buildContext: BuildContext,
inputs: RoomDetailsEntryPoint.Inputs,
plugins: List<Plugin>
): Node {
return node(buildContext) {}.also {
nodeId = it.id
}