refactor: extract message ui mapper
This commit is contained in:
+27
@@ -0,0 +1,27 @@
|
||||
package dev.meloda.fast.messageshistory
|
||||
|
||||
import com.conena.nanokt.collections.indexOfFirstOrNull
|
||||
import dev.meloda.fast.common.provider.ResourceProvider
|
||||
import dev.meloda.fast.datastore.AppSettings
|
||||
import dev.meloda.fast.domain.util.asPresentation
|
||||
import dev.meloda.fast.messageshistory.model.MessagesHistoryScreenState
|
||||
import dev.meloda.fast.model.api.domain.VkMessage
|
||||
import dev.meloda.fast.ui.model.vk.MessageUiItem
|
||||
|
||||
fun buildMessagesHistoryUiMessages(
|
||||
messages: List<VkMessage>,
|
||||
selectedMessages: List<VkMessage>,
|
||||
screenState: MessagesHistoryScreenState,
|
||||
resourceProvider: ResourceProvider,
|
||||
): List<MessageUiItem> = messages.mapIndexed { index, message ->
|
||||
message.asPresentation(
|
||||
resourceProvider = resourceProvider,
|
||||
showName = true,
|
||||
prevMessage = messages.getOrNull(index + 1),
|
||||
nextMessage = messages.getOrNull(index - 1),
|
||||
showTimeInActionMessages = AppSettings.Experimental.showTimeInActionMessages,
|
||||
convo = screenState.convo,
|
||||
isSelected = screenState.editCmId == message.cmId ||
|
||||
selectedMessages.indexOfFirstOrNull { it.id == message.id } != null
|
||||
)
|
||||
}
|
||||
+5
-15
@@ -47,7 +47,6 @@ import dev.meloda.fast.domain.GetMessageReadPeersUseCase
|
||||
import dev.meloda.fast.domain.LoadConvosByIdUseCase
|
||||
import dev.meloda.fast.domain.LongPollUpdatesParser
|
||||
import dev.meloda.fast.domain.MessagesUseCase
|
||||
import dev.meloda.fast.domain.util.asPresentation
|
||||
import dev.meloda.fast.domain.util.extractAvatar
|
||||
import dev.meloda.fast.domain.util.extractReplySummary
|
||||
import dev.meloda.fast.domain.util.extractReplyTitle
|
||||
@@ -1306,21 +1305,12 @@ class MessagesHistoryViewModelImpl(
|
||||
}
|
||||
|
||||
private fun syncUiMessages(): List<MessageUiItem> {
|
||||
val messages = messages.value
|
||||
val selectedMessages = selectedMessages.value
|
||||
|
||||
val newUiMessages = messages.mapIndexed { index, message ->
|
||||
message.asPresentation(
|
||||
resourceProvider = resourceProvider,
|
||||
showName = true,
|
||||
prevMessage = messages.getOrNull(index + 1),
|
||||
nextMessage = messages.getOrNull(index - 1),
|
||||
showTimeInActionMessages = AppSettings.Experimental.showTimeInActionMessages,
|
||||
convo = screenState.value.convo,
|
||||
isSelected = screenState.value.editCmId == message.cmId ||
|
||||
selectedMessages.indexOfFirstOrNull { it.id == message.id } != null
|
||||
val newUiMessages = buildMessagesHistoryUiMessages(
|
||||
messages = messages.value,
|
||||
selectedMessages = selectedMessages.value,
|
||||
screenState = screenState.value,
|
||||
resourceProvider = resourceProvider
|
||||
)
|
||||
}
|
||||
uiMessages.setValue { newUiMessages }
|
||||
|
||||
return newUiMessages
|
||||
|
||||
Reference in New Issue
Block a user