diff --git a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt index 827e56ad1..2a350a3b5 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/adapters/ChatMessagesListAdapter.kt @@ -98,6 +98,10 @@ class ChatMessagesListAdapter( MutableLiveData>() } + val errorEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + private val contentClickedListener = object : OnContentClickedListener { override fun onContentClicked(content: Content) { openContentEvent.value = Event(content) @@ -110,6 +114,10 @@ class ChatMessagesListAdapter( override fun onCallConference(address: String, subject: String?) { callConferenceEvent.value = Event(Pair(address, subject)) } + + override fun onError(messageId: Int) { + errorEvent.value = Event(messageId) + } } private var advancedContextMenuOptionsDisabled: Boolean = false diff --git a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt index df0e86c83..27d086927 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/data/ChatMessageContentData.kt @@ -169,6 +169,12 @@ class ChatMessageContentData( } fun download() { + if (chatMessage.isFileTransferInProgress) { + Log.w("[Content] Another FileTransfer content for this message is currently being downloaded, can't start another one for now") + listener?.onError(R.string.chat_message_download_already_in_progress) + return + } + val content = getContent() val filePath = content.filePath if (content.isFileTransfer && (filePath == null || filePath.isEmpty())) { @@ -179,7 +185,9 @@ class ChatMessageContentData( downloadEnabled.value = false Log.i("[Content] Started downloading $contentName into ${content.filePath}") - chatMessage.downloadContent(content) + if (!chatMessage.downloadContent(content)) { + Log.e("[Content] Failed to start content download!") + } } } } @@ -451,4 +459,6 @@ interface OnContentClickedListener { fun onSipAddressClicked(sipUri: String) fun onCallConference(address: String, subject: String?) + + fun onError(messageId: Int) } 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 d933ce647..db3d6935e 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 @@ -539,6 +539,14 @@ class DetailChatRoomFragment : MasterFragment + (requireActivity() as MainActivity).showSnackBar(message) + } + } + binding.setBackClickListener { goBack() } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9bbac811d..d1dc870f6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -623,4 +623,5 @@ Débogage Ce contact ne peut être supprimé Plus de résultats sont disponibles, affinez votre recherche + Merci d\'attendre la fin du premier téléchargement avant d\'en lancer un second \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87ab6d52c..cc205d0ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -228,6 +228,7 @@ Message will be deleted Abort Failed to create chat room + Please wait for first download to finish before starting a new one No recordings