Use the new fromPinnedEvents parameter in JoinedRoomLoadedFlowNode through TimelineBindings

This commit is contained in:
Jorge Martín
2025-11-03 14:44:29 +01:00
parent 7421e6545c
commit 0bed2ae386

View File

@@ -22,10 +22,12 @@ import dev.zacsweers.metro.Assisted
import dev.zacsweers.metro.AssistedInject
import io.element.android.annotations.ContributesNode
import io.element.android.appnav.di.RoomGraphFactory
import io.element.android.appnav.di.TimelineBindings
import io.element.android.appnav.room.RoomNavigationTarget
import io.element.android.features.forward.api.ForwardEntryPoint
import io.element.android.features.messages.api.MessagesEntryPoint
import io.element.android.features.messages.api.MessagesEntryPointNode
import io.element.android.features.messages.api.pinned.PinnedEventsTimelineProvider
import io.element.android.features.roomdetails.api.RoomDetailsEntryPoint
import io.element.android.features.space.api.SpaceEntryPoint
import io.element.android.libraries.architecture.BackstackView
@@ -44,6 +46,7 @@ import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.permalink.PermalinkData
import io.element.android.libraries.matrix.api.room.JoinedRoom
import io.element.android.libraries.matrix.api.timeline.TimelineProvider
import io.element.android.services.appnavstate.api.ActiveRoomsHolder
import io.element.android.services.appnavstate.api.AppNavigationStateService
import kotlinx.coroutines.CoroutineScope
@@ -136,8 +139,8 @@ class JoinedRoomLoadedFlowNode(
callback.handlePermalinkClick(data, pushToBackstack)
}
override fun startForwardEventFlow(eventId: EventId) {
backstack.push(NavTarget.ForwardEvent(eventId))
override fun startForwardEventFlow(eventId: EventId, fromPinnedEvents: Boolean) {
backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents))
}
}
return roomDetailsEntryPoint.createNode(
@@ -169,7 +172,11 @@ class JoinedRoomLoadedFlowNode(
createSpaceNode(buildContext)
}
is NavTarget.ForwardEvent -> {
val timelineProvider = { MutableStateFlow(inputs.room.liveTimeline).asStateFlow() }
val timelineProvider = if (navTarget.fromPinnedEvents) {
(graph as TimelineBindings).pinnedEventsTimelineProvider
} else {
(graph as TimelineBindings).timelineProvider
}
val params = ForwardEntryPoint.Params(navTarget.eventId, timelineProvider)
val callback = object : ForwardEntryPoint.Callback {
override fun onDone(roomIds: List<RoomId>) {
@@ -228,8 +235,8 @@ class JoinedRoomLoadedFlowNode(
callback.handlePermalinkClick(data, pushToBackstack)
}
override fun forwardEvent(eventId: EventId) {
backstack.push(NavTarget.ForwardEvent(eventId))
override fun forwardEvent(eventId: EventId, fromPinnedEvents: Boolean) {
backstack.push(NavTarget.ForwardEvent(eventId, fromPinnedEvents))
}
override fun navigateToRoom(roomId: RoomId) {
@@ -266,7 +273,7 @@ class JoinedRoomLoadedFlowNode(
data class RoomMemberDetails(val userId: UserId) : NavTarget
@Parcelize
data class ForwardEvent(val eventId: EventId) : NavTarget
data class ForwardEvent(val eventId: EventId, val fromPinnedEvents: Boolean) : NavTarget
@Parcelize
data object RoomNotificationSettings : NavTarget