32 lines
980 B
Kotlin
32 lines
980 B
Kotlin
package dev.lonami.talaria.ui.state
|
|
|
|
import androidx.lifecycle.ViewModel
|
|
import dev.lonami.talaria.data.MessageRepository
|
|
import dev.lonami.talaria.data.NativeMessageRepository
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
import kotlinx.coroutines.flow.update
|
|
|
|
class ChatViewModel(private val repository: MessageRepository = NativeMessageRepository()) :
|
|
ViewModel() {
|
|
private val _uiState = MutableStateFlow(ChatUiState())
|
|
val uiState: StateFlow<ChatUiState> = _uiState.asStateFlow()
|
|
|
|
fun loadMessages(chat: String) {
|
|
_uiState.update {
|
|
it.messages.clear()
|
|
it.messages.addAll(repository.loadMessages(chat))
|
|
it
|
|
}
|
|
}
|
|
|
|
fun sendMessage(dialog: String, message: String) {
|
|
val sent = repository.sendMessage(dialog, message)
|
|
_uiState.update {
|
|
it.messages.add(sent)
|
|
it
|
|
}
|
|
}
|
|
}
|