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)
chatSendingViewModel.textToSend.observe(viewLifecycleOwner, Observer {
chatSendingViewModel.onTextToSendChanged(it)
})
listViewModel.events.observe(viewLifecycleOwner, Observer { events ->
adapter.submitList(events)
})

View file

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