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
|
||||||
|
)
|
||||||
|
}
|
||||||
+6
-16
@@ -47,7 +47,6 @@ import dev.meloda.fast.domain.GetMessageReadPeersUseCase
|
|||||||
import dev.meloda.fast.domain.LoadConvosByIdUseCase
|
import dev.meloda.fast.domain.LoadConvosByIdUseCase
|
||||||
import dev.meloda.fast.domain.LongPollUpdatesParser
|
import dev.meloda.fast.domain.LongPollUpdatesParser
|
||||||
import dev.meloda.fast.domain.MessagesUseCase
|
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.extractAvatar
|
||||||
import dev.meloda.fast.domain.util.extractReplySummary
|
import dev.meloda.fast.domain.util.extractReplySummary
|
||||||
import dev.meloda.fast.domain.util.extractReplyTitle
|
import dev.meloda.fast.domain.util.extractReplyTitle
|
||||||
@@ -1306,21 +1305,12 @@ class MessagesHistoryViewModelImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun syncUiMessages(): List<MessageUiItem> {
|
private fun syncUiMessages(): List<MessageUiItem> {
|
||||||
val messages = messages.value
|
val newUiMessages = buildMessagesHistoryUiMessages(
|
||||||
val selectedMessages = selectedMessages.value
|
messages = messages.value,
|
||||||
|
selectedMessages = selectedMessages.value,
|
||||||
val newUiMessages = messages.mapIndexed { index, message ->
|
screenState = screenState.value,
|
||||||
message.asPresentation(
|
resourceProvider = resourceProvider
|
||||||
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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
uiMessages.setValue { newUiMessages }
|
uiMessages.setValue { newUiMessages }
|
||||||
|
|
||||||
return newUiMessages
|
return newUiMessages
|
||||||
|
|||||||
Reference in New Issue
Block a user