feat: add support for reply message (#44)

Reviewed-on: https://git.reya.su/reya/coop-mobile/pulls/44
This commit is contained in:
2026-07-14 10:22:27 +00:00
parent 0e789b5d91
commit 1485a767ed
5 changed files with 172 additions and 74 deletions
@@ -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?) {