forked from reya/coop-mobile
feat: add support for reply message (#44)
Reviewed-on: https://git.reya.su/reya/coop-mobile/pulls/44
This commit is contained in:
@@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import rust.nostr.sdk.EventId
|
||||
import rust.nostr.sdk.UnsignedEvent
|
||||
import su.reya.coop.Profile
|
||||
import su.reya.coop.Room
|
||||
@@ -39,7 +40,7 @@ class ChatScreenViewModel(
|
||||
private fun loadMessages() {
|
||||
chatRepository.loadChatRoomMessages(id) { initialMessages ->
|
||||
messages.clear()
|
||||
messages.addAll(initialMessages)
|
||||
messages.addAll(initialMessages.distinctBy { it.id() })
|
||||
loading = false
|
||||
}
|
||||
}
|
||||
@@ -52,7 +53,7 @@ class ChatScreenViewModel(
|
||||
viewModelScope.launch {
|
||||
chatRepository.newEvents.collect { event ->
|
||||
if (event.roomId() == id) {
|
||||
if (event.id() !in messages.map { it.id() }) {
|
||||
if (messages.none { it.id() == event.id() }) {
|
||||
messages.add(0, event)
|
||||
}
|
||||
} else {
|
||||
@@ -62,8 +63,9 @@ class ChatScreenViewModel(
|
||||
}
|
||||
}
|
||||
|
||||
fun sendMessage(text: String) {
|
||||
chatRepository.sendMessage(id, text)
|
||||
fun sendMessage(text: String, replyTo: EventId? = null) {
|
||||
val replyToList = if (replyTo != null) listOf(replyTo) else emptyList()
|
||||
chatRepository.sendMessage(id, text, replyToList)
|
||||
}
|
||||
|
||||
fun sendFileMessage(file: ByteArray?, type: String?) {
|
||||
|
||||
Reference in New Issue
Block a user