Improved typing performances

This commit is contained in:
Sylvain Berfini 2020-04-02 16:27:08 +02:00
parent a8b057c05a
commit e96d073ff0
2 changed files with 23 additions and 19 deletions

View file

@ -129,6 +129,10 @@ class DetailChatRoomFragment : MasterFragment() {
} }
binding.chatMessagesList.addOnScrollListener(chatScrollListener) binding.chatMessagesList.addOnScrollListener(chatScrollListener)
chatSendingViewModel.textToSend.observe(viewLifecycleOwner, Observer {
chatSendingViewModel.onTextToSendChanged(it)
})
listViewModel.events.observe(viewLifecycleOwner, Observer { events -> listViewModel.events.observe(viewLifecycleOwner, Observer { events ->
adapter.submitList(events) adapter.submitList(events)
}) })

View file

@ -47,11 +47,20 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel()
val isReadOnly = MutableLiveData<Boolean>() val isReadOnly = MutableLiveData<Boolean>()
var textToSend: String = "" var textToSend = MutableLiveData<String>()
set(value) {
init {
attachments.value = arrayListOf()
attachFileEnabled.value = true
sendMessageEnabled.value = false
isReadOnly.value = chatRoom.hasBeenLeft()
}
fun onTextToSendChanged(value: String) {
sendMessageEnabled.value = value.isNotEmpty() || attachments.value?.isNotEmpty() ?: false sendMessageEnabled.value = value.isNotEmpty() || attachments.value?.isNotEmpty() ?: false
if (value.isNotEmpty()) { if (value.isNotEmpty()) {
if (!corePreferences.allowMultipleFilesAndTextInSameMessage) { if (attachFileEnabled.value == true && !corePreferences.allowMultipleFilesAndTextInSameMessage) {
attachFileEnabled.value = false attachFileEnabled.value = false
} }
chatRoom.compose() chatRoom.compose()
@ -60,15 +69,6 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel()
attachFileEnabled.value = attachments.value?.isEmpty() ?: true attachFileEnabled.value = attachments.value?.isEmpty() ?: true
} }
} }
field = value
}
init {
attachments.value = arrayListOf()
attachFileEnabled.value = true
sendMessageEnabled.value = false
isReadOnly.value = chatRoom.hasBeenLeft()
} }
fun addAttachment(path: String) { fun addAttachment(path: String) {
@ -79,7 +79,7 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel()
}) })
attachments.value = list attachments.value = list
sendMessageEnabled.value = textToSend.isNotEmpty() || list.isNotEmpty() sendMessageEnabled.value = textToSend.value.orEmpty().isNotEmpty() || list.isNotEmpty()
if (!corePreferences.allowMultipleFilesAndTextInSameMessage) { if (!corePreferences.allowMultipleFilesAndTextInSameMessage) {
attachFileEnabled.value = false attachFileEnabled.value = false
} }
@ -91,7 +91,7 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel()
list.remove(attachment) list.remove(attachment)
attachments.value = list attachments.value = list
sendMessageEnabled.value = textToSend.isNotEmpty() || list.isNotEmpty() sendMessageEnabled.value = textToSend.value.orEmpty().isNotEmpty() || list.isNotEmpty()
if (!corePreferences.allowMultipleFilesAndTextInSameMessage) { if (!corePreferences.allowMultipleFilesAndTextInSameMessage) {
attachFileEnabled.value = list.isEmpty() attachFileEnabled.value = list.isEmpty()
} }
@ -101,8 +101,8 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel()
val isBasicChatRoom: Boolean = chatRoom.hasCapability(ChatRoomCapabilities.Basic.toInt()) val isBasicChatRoom: Boolean = chatRoom.hasCapability(ChatRoomCapabilities.Basic.toInt())
val message: ChatMessage = chatRoom.createEmptyMessage() val message: ChatMessage = chatRoom.createEmptyMessage()
if (textToSend.isNotEmpty()) { if (textToSend.value.orEmpty().isNotEmpty()) {
message.addTextContent(textToSend) message.addTextContent(textToSend.value)
} }
for (attachment in attachments.value.orEmpty()) { for (attachment in attachments.value.orEmpty()) {