diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 561e92cc4..ed96dc37c 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -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) }) diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt index f57eb4b7d..3cafc7e8c 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatMessageSendingViewModel.kt @@ -47,21 +47,7 @@ class ChatMessageSendingViewModel(private val chatRoom: ChatRoom) : ViewModel() val isReadOnly = MutableLiveData() - 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() 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() 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()) {