|
|
@ -28,7 +28,7 @@ class MessagesViewModel( |
|
|
|
private val client: MatrixClient, |
|
|
|
private val client: MatrixClient, |
|
|
|
private val room: MatrixRoom, |
|
|
|
private val room: MatrixRoom, |
|
|
|
private val timeline: MatrixTimeline, |
|
|
|
private val timeline: MatrixTimeline, |
|
|
|
private val messageTimelineItemStateMapper: MessageTimelineItemStateMapper, |
|
|
|
private val messageTimelineItemStateFactory: MessageTimelineItemStateFactory, |
|
|
|
private val initialState: MessagesViewState |
|
|
|
private val initialState: MessagesViewState |
|
|
|
) : |
|
|
|
) : |
|
|
|
MavericksViewModel<MessagesViewState>(initialState) { |
|
|
|
MavericksViewModel<MessagesViewState>(initialState) { |
|
|
@ -42,13 +42,13 @@ class MessagesViewModel( |
|
|
|
val matrix = MatrixInstance.getInstance() |
|
|
|
val matrix = MatrixInstance.getInstance() |
|
|
|
val client = matrix.activeClient() |
|
|
|
val client = matrix.activeClient() |
|
|
|
val room = client.getRoom(state.roomId) ?: return null |
|
|
|
val room = client.getRoom(state.roomId) ?: return null |
|
|
|
val messageTimelineItemStateMapper = |
|
|
|
val messageTimelineItemStateFactory = |
|
|
|
MessageTimelineItemStateMapper(client, room, Dispatchers.Default) |
|
|
|
MessageTimelineItemStateFactory(client, room, Dispatchers.Default) |
|
|
|
return MessagesViewModel( |
|
|
|
return MessagesViewModel( |
|
|
|
client, |
|
|
|
client, |
|
|
|
room, |
|
|
|
room, |
|
|
|
room.timeline(), |
|
|
|
room.timeline(), |
|
|
|
messageTimelineItemStateMapper, |
|
|
|
messageTimelineItemStateFactory, |
|
|
|
state |
|
|
|
state |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
@ -191,20 +191,18 @@ class MessagesViewModel( |
|
|
|
|
|
|
|
|
|
|
|
combine( |
|
|
|
combine( |
|
|
|
timeline.timelineItems(), |
|
|
|
timeline.timelineItems(), |
|
|
|
stateFlow |
|
|
|
stateFlow.map { |
|
|
|
.map { it.composerMode } |
|
|
|
when (it.composerMode) { |
|
|
|
.distinctUntilChanged() |
|
|
|
|
|
|
|
) { timelineItems, messageComposerMode -> |
|
|
|
|
|
|
|
// Set the highlightedEventId to messageTimelineItemStateMapper, before the mapping occurs |
|
|
|
|
|
|
|
messageTimelineItemStateMapper.highlightedEventId = when (messageComposerMode) { |
|
|
|
|
|
|
|
is MessageComposerMode.Normal -> null |
|
|
|
is MessageComposerMode.Normal -> null |
|
|
|
is MessageComposerMode.Edit -> messageComposerMode.eventId |
|
|
|
is MessageComposerMode.Edit -> it.composerMode.eventId |
|
|
|
is MessageComposerMode.Quote -> null |
|
|
|
is MessageComposerMode.Quote -> null |
|
|
|
is MessageComposerMode.Reply -> messageComposerMode.eventId |
|
|
|
is MessageComposerMode.Reply -> it.composerMode.eventId |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
timelineItems |
|
|
|
.distinctUntilChanged() |
|
|
|
|
|
|
|
) { timelineItems, highlightedEventId -> |
|
|
|
|
|
|
|
messageTimelineItemStateFactory.create(timelineItems, highlightedEventId) |
|
|
|
} |
|
|
|
} |
|
|
|
.map(messageTimelineItemStateMapper::map) |
|
|
|
|
|
|
|
.execute { |
|
|
|
.execute { |
|
|
|
copy(timelineItems = it) |
|
|
|
copy(timelineItems = it) |
|
|
|
} |
|
|
|
} |
|
|
|