2022-10-21 18:31:29 +00:00
|
|
|
package dev.lonami.talaria.ui.state
|
2022-10-11 18:58:40 +00:00
|
|
|
|
|
|
|
import androidx.lifecycle.ViewModel
|
2022-10-21 18:23:51 +00:00
|
|
|
import dev.lonami.talaria.data.MessageRepository
|
2022-10-29 11:06:38 +00:00
|
|
|
import dev.lonami.talaria.data.NativeMessageRepository
|
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
|
|
|
|
2022-10-29 11:06:38 +00:00
|
|
|
class ChatViewModel(private val repository: MessageRepository = NativeMessageRepository()) :
|
|
|
|
ViewModel() {
|
2022-10-11 18:58:40 +00:00
|
|
|
private val _uiState = MutableStateFlow(ChatUiState())
|
|
|
|
val uiState: StateFlow<ChatUiState> = _uiState.asStateFlow()
|
|
|
|
|
2022-10-29 11:06:38 +00:00
|
|
|
fun loadMessages(chat: String) {
|
|
|
|
_uiState.update {
|
|
|
|
it.messages.clear()
|
|
|
|
it.messages.addAll(repository.loadMessages(chat))
|
|
|
|
it
|
|
|
|
}
|
2022-10-11 19:26:11 +00:00
|
|
|
}
|
|
|
|
|
2022-10-12 19:26:51 +00:00
|
|
|
fun sendMessage(dialog: String, message: String) {
|
2022-10-29 11:06:38 +00:00
|
|
|
val sent = repository.sendMessage(dialog, message)
|
|
|
|
_uiState.update {
|
|
|
|
it.messages.add(sent)
|
|
|
|
it
|
2022-10-11 19:37:42 +00:00
|
|
|
}
|
2022-10-11 18:58:40 +00:00
|
|
|
}
|
|
|
|
}
|