2022-10-11 18:58:40 +00:00
|
|
|
package dev.lonami.talaria.ui
|
|
|
|
|
|
|
|
import androidx.lifecycle.ViewModel
|
2022-10-12 19:26:51 +00:00
|
|
|
import dev.lonami.talaria.bindings.Native
|
2022-10-11 18:58:40 +00:00
|
|
|
import dev.lonami.talaria.data.MessageSource
|
2022-10-11 19:26:11 +00:00
|
|
|
import dev.lonami.talaria.model.Message
|
2022-10-11 18:58:40 +00:00
|
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
|
|
import kotlinx.coroutines.flow.asStateFlow
|
2022-10-11 19:37:42 +00:00
|
|
|
import kotlinx.coroutines.flow.update
|
2022-10-11 18:58:40 +00:00
|
|
|
|
|
|
|
class ChatViewModel : ViewModel() {
|
|
|
|
private val _uiState = MutableStateFlow(ChatUiState())
|
|
|
|
val uiState: StateFlow<ChatUiState> = _uiState.asStateFlow()
|
|
|
|
|
|
|
|
private fun loadMessages() {
|
2022-10-11 19:26:11 +00:00
|
|
|
_uiState.value = ChatUiState(MessageSource.loadMessages().toMutableList())
|
|
|
|
}
|
|
|
|
|
2022-10-12 19:26:51 +00:00
|
|
|
fun sendMessage(dialog: String, message: String) {
|
|
|
|
Native.sendMessage(dialog, message)
|
2022-10-11 19:37:42 +00:00
|
|
|
_uiState.update { state ->
|
|
|
|
state.messages.add(Message("You", message))
|
|
|
|
state
|
|
|
|
}
|
2022-10-11 18:58:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
init {
|
|
|
|
loadMessages()
|
|
|
|
}
|
|
|
|
}
|