Merge pull request #2035 from element-hq/feature/bma/scrollOnNewMessage

Scroll to bottom if the new event is from me, even if sent from another session
This commit is contained in:
Benoit Marty 2023-12-15 11:29:32 +01:00 committed by GitHub
commit 4584e6839d
2 changed files with 4 additions and 4 deletions

View file

@ -213,7 +213,8 @@ class TimelinePresenter @AssistedInject constructor(
newMostRecentItemId != prevMostRecentItemIdValue newMostRecentItemId != prevMostRecentItemIdValue
if (hasNewEvent) { if (hasNewEvent) {
val newMostRecentEvent = newMostRecentItem as? TimelineItem.Event val newMostRecentEvent = newMostRecentItem as? TimelineItem.Event
val fromMe = newMostRecentEvent?.localSendState != null // Scroll to bottom if the new event is from me, even if sent from another device
val fromMe = newMostRecentEvent?.isMine == true
newEventState.value = if (fromMe) { newEventState.value = if (fromMe) {
NewEventState.FromMe NewEventState.FromMe
} else { } else {

View file

@ -37,7 +37,6 @@ import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.timeline.MatrixTimeline import io.element.android.libraries.matrix.api.timeline.MatrixTimeline
import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem
import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction import io.element.android.libraries.matrix.api.timeline.item.event.EventReaction
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
import io.element.android.libraries.matrix.api.timeline.item.event.ReactionSender import io.element.android.libraries.matrix.api.timeline.item.event.ReactionSender
import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem import io.element.android.libraries.matrix.api.timeline.item.virtual.VirtualTimelineItem
import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.AN_EVENT_ID
@ -205,7 +204,7 @@ class TimelinePresenterTest {
consumeItemsUntilPredicate { it.timelineItems.size == 1 } consumeItemsUntilPredicate { it.timelineItems.size == 1 }
// Mimics sending a message, and assert newEventState is FromMe // Mimics sending a message, and assert newEventState is FromMe
timeline.updateTimelineItems { items -> timeline.updateTimelineItems { items ->
val event = anEventTimelineItem(content = aMessageContent(), localSendState = LocalEventSendState.Sent(AN_EVENT_ID)) val event = anEventTimelineItem(content = aMessageContent(), isOwn = true)
items + listOf(MatrixTimelineItem.Event(1, event)) items + listOf(MatrixTimelineItem.Event(1, event))
} }
consumeItemsUntilPredicate { it.timelineItems.size == 2 } consumeItemsUntilPredicate { it.timelineItems.size == 2 }
@ -366,7 +365,7 @@ class TimelinePresenterTest {
messagesNavigator: FakeMessagesNavigator = FakeMessagesNavigator(), messagesNavigator: FakeMessagesNavigator = FakeMessagesNavigator(),
endPollAction: EndPollAction = FakeEndPollAction(), endPollAction: EndPollAction = FakeEndPollAction(),
sendPollResponseAction: SendPollResponseAction = FakeSendPollResponseAction(), sendPollResponseAction: SendPollResponseAction = FakeSendPollResponseAction(),
): TimelinePresenter { ): TimelinePresenter {
return TimelinePresenter( return TimelinePresenter(
timelineItemsFactory = timelineItemsFactory, timelineItemsFactory = timelineItemsFactory,
room = FakeMatrixRoom(matrixTimeline = timeline), room = FakeMatrixRoom(matrixTimeline = timeline),