forked from melod1n/fast-messenger
refactor(longpoll): move event listeners into LongPollEventsHandler
This commit is contained in:
@@ -27,7 +27,7 @@ import dev.meloda.fast.data.processState
|
||||
import dev.meloda.fast.datastore.UserSettings
|
||||
import dev.meloda.fast.domain.ConvoUseCase
|
||||
import dev.meloda.fast.domain.LoadConvosByIdUseCase
|
||||
import dev.meloda.fast.domain.LongPollUpdatesParser
|
||||
import dev.meloda.fast.domain.LongPollEventsHandler
|
||||
import dev.meloda.fast.domain.MessagesUseCase
|
||||
import dev.meloda.fast.domain.util.asPresentation
|
||||
import dev.meloda.fast.domain.util.extractAvatar
|
||||
@@ -46,7 +46,7 @@ import kotlinx.coroutines.flow.launchIn
|
||||
|
||||
@Immutable
|
||||
class ConvosViewModel(
|
||||
updatesParser: LongPollUpdatesParser,
|
||||
eventsHandler: LongPollEventsHandler,
|
||||
val filter: ConvosFilter,
|
||||
private val convoUseCase: ConvoUseCase,
|
||||
private val messagesUseCase: MessagesUseCase,
|
||||
@@ -74,15 +74,15 @@ class ConvosViewModel(
|
||||
init {
|
||||
loadConvos()
|
||||
|
||||
updatesParser.onNewMessage(::handleNewMessage)
|
||||
updatesParser.onMessageEdited(::handleEditedMessage)
|
||||
updatesParser.onMessageIncomingRead(::handleReadIncomingMessage)
|
||||
updatesParser.onMessageOutgoingRead(::handleReadOutgoingMessage)
|
||||
updatesParser.onInteractions(::handleInteraction)
|
||||
updatesParser.onChatMajorChanged(::handleChatMajorChanged)
|
||||
updatesParser.onChatMinorChanged(::handleChatMinorChanged)
|
||||
updatesParser.onChatCleared(::handleChatClearing)
|
||||
updatesParser.onChatArchived(::handleChatArchived)
|
||||
eventsHandler.onMessageNew(::handleNewMessage)
|
||||
eventsHandler.onMessageEdit(::handleEditedMessage)
|
||||
eventsHandler.onMessageIncomingRead(::handleReadIncomingMessage)
|
||||
eventsHandler.onMessageOutgoingRead(::handleReadOutgoingMessage)
|
||||
eventsHandler.onInteraction(::handleInteraction)
|
||||
eventsHandler.onChatMajorChange(::handleChatMajorChanged)
|
||||
eventsHandler.onChatMinorChange(::handleChatMinorChanged)
|
||||
eventsHandler.onChatClear(::handleChatClearing)
|
||||
eventsHandler.onChatArchive(::handleChatArchived)
|
||||
|
||||
userSettings.useContactNames.listenValue(viewModelScope) {
|
||||
syncUiConvos()
|
||||
@@ -382,7 +382,7 @@ class ConvosViewModel(
|
||||
}
|
||||
|
||||
// TODO: 03-Apr-25, Danil Nikolaev: handle business messages
|
||||
private fun handleNewMessage(event: LongPollParsedEvent.NewMessage) {
|
||||
private fun handleNewMessage(event: LongPollParsedEvent.MessageNew) {
|
||||
val message = event.message
|
||||
|
||||
val newConvos = convos.toMutableList()
|
||||
|
||||
@@ -25,7 +25,7 @@ val convosModule = module {
|
||||
private fun Scope.createConvosViewModel(filter: ConvosFilter): ConvosViewModel {
|
||||
return ConvosViewModel(
|
||||
filter = filter,
|
||||
updatesParser = get(),
|
||||
eventsHandler = get(),
|
||||
convoUseCase = get(),
|
||||
messagesUseCase = get(),
|
||||
resources = get(),
|
||||
|
||||
+12
-12
@@ -39,7 +39,7 @@ import dev.meloda.fast.datastore.UserSettings
|
||||
import dev.meloda.fast.domain.ConvoUseCase
|
||||
import dev.meloda.fast.domain.GetMessageReadPeersUseCase
|
||||
import dev.meloda.fast.domain.LoadConvosByIdUseCase
|
||||
import dev.meloda.fast.domain.LongPollUpdatesParser
|
||||
import dev.meloda.fast.domain.LongPollEventsHandler
|
||||
import dev.meloda.fast.domain.MessagesUseCase
|
||||
import dev.meloda.fast.domain.util.asPresentation
|
||||
import dev.meloda.fast.domain.util.extractAvatar
|
||||
@@ -84,7 +84,7 @@ class MessagesHistoryViewModelImpl(
|
||||
private val userSettings: UserSettings,
|
||||
private val loadConvosByIdUseCase: LoadConvosByIdUseCase,
|
||||
private val getMessageReadPeersUseCase: GetMessageReadPeersUseCase,
|
||||
updatesParser: LongPollUpdatesParser,
|
||||
eventsHandler: LongPollEventsHandler,
|
||||
savedStateHandle: SavedStateHandle
|
||||
) : MessagesHistoryViewModel, ViewModel() {
|
||||
|
||||
@@ -124,15 +124,15 @@ class MessagesHistoryViewModelImpl(
|
||||
loadConvo()
|
||||
loadMessagesHistory()
|
||||
|
||||
updatesParser.onNewMessage(::handleNewMessage)
|
||||
updatesParser.onMessageEdited(::handleEditedMessage)
|
||||
updatesParser.onMessageIncomingRead(::handleReadIncomingEvent)
|
||||
updatesParser.onMessageOutgoingRead(::handleReadOutgoingEvent)
|
||||
updatesParser.onMessageDeleted(::handleMessageDeleted)
|
||||
updatesParser.onMessageRestored(::handleMessageRestored)
|
||||
updatesParser.onMessageMarkedAsImportant(::handleMessageMarkedAsImportant)
|
||||
updatesParser.onMessageMarkedAsSpam(::handleMessageMarkedAsSpam)
|
||||
updatesParser.onMessageMarkedAsNotSpam(::handleMessageMarkedAsNotSpam)
|
||||
eventsHandler.onMessageNew(::handleNewMessage)
|
||||
eventsHandler.onMessageEdit(::handleEditedMessage)
|
||||
eventsHandler.onMessageIncomingRead(::handleReadIncomingEvent)
|
||||
eventsHandler.onMessageOutgoingRead(::handleReadOutgoingEvent)
|
||||
eventsHandler.onMessageDelete(::handleMessageDeleted)
|
||||
eventsHandler.onMessageRestore(::handleMessageRestored)
|
||||
eventsHandler.onMessageMarkAsImportant(::handleMessageMarkedAsImportant)
|
||||
eventsHandler.onMessageMarkAsSpam(::handleMessageMarkedAsSpam)
|
||||
eventsHandler.onMessageMarkAsNotSpam(::handleMessageMarkedAsNotSpam)
|
||||
}
|
||||
|
||||
override fun onNavigationConsumed() {
|
||||
@@ -681,7 +681,7 @@ class MessagesHistoryViewModelImpl(
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleNewMessage(event: LongPollParsedEvent.NewMessage) {
|
||||
private fun handleNewMessage(event: LongPollParsedEvent.MessageNew) {
|
||||
val message = event.message
|
||||
|
||||
if (message.peerId != screenState.value.convoId) return
|
||||
|
||||
Reference in New Issue
Block a user