Show message to user when trying to download two files from same message at the same time + fixed issue where second file download can't be started once the first one has finished

This commit is contained in:
Sylvain Berfini 2022-03-18 10:24:31 +01:00
parent f07bc19d5f
commit 154659c083
5 changed files with 29 additions and 1 deletions

View file

@ -98,6 +98,10 @@ class ChatMessagesListAdapter(
MutableLiveData<Event<ChatMessage>>() MutableLiveData<Event<ChatMessage>>()
} }
val errorEvent: MutableLiveData<Event<Int>> by lazy {
MutableLiveData<Event<Int>>()
}
private val contentClickedListener = object : OnContentClickedListener { private val contentClickedListener = object : OnContentClickedListener {
override fun onContentClicked(content: Content) { override fun onContentClicked(content: Content) {
openContentEvent.value = Event(content) openContentEvent.value = Event(content)
@ -110,6 +114,10 @@ class ChatMessagesListAdapter(
override fun onCallConference(address: String, subject: String?) { override fun onCallConference(address: String, subject: String?) {
callConferenceEvent.value = Event(Pair(address, subject)) callConferenceEvent.value = Event(Pair(address, subject))
} }
override fun onError(messageId: Int) {
errorEvent.value = Event(messageId)
}
} }
private var advancedContextMenuOptionsDisabled: Boolean = false private var advancedContextMenuOptionsDisabled: Boolean = false

View file

@ -169,6 +169,12 @@ class ChatMessageContentData(
} }
fun download() { 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 content = getContent()
val filePath = content.filePath val filePath = content.filePath
if (content.isFileTransfer && (filePath == null || filePath.isEmpty())) { if (content.isFileTransfer && (filePath == null || filePath.isEmpty())) {
@ -179,7 +185,9 @@ class ChatMessageContentData(
downloadEnabled.value = false downloadEnabled.value = false
Log.i("[Content] Started downloading $contentName into ${content.filePath}") 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 onSipAddressClicked(sipUri: String)
fun onCallConference(address: String, subject: String?) fun onCallConference(address: String, subject: String?)
fun onError(messageId: Int)
} }

View file

@ -539,6 +539,14 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
} }
} }
adapter.errorEvent.observe(
viewLifecycleOwner
) {
it.consume { message ->
(requireActivity() as MainActivity).showSnackBar(message)
}
}
binding.setBackClickListener { binding.setBackClickListener {
goBack() goBack()
} }

View file

@ -623,4 +623,5 @@
<string name="contacts_settings_ldap_debug_title">Débogage</string> <string name="contacts_settings_ldap_debug_title">Débogage</string>
<string name="contact_cant_be_deleted">Ce contact ne peut être supprimé</string> <string name="contact_cant_be_deleted">Ce contact ne peut être supprimé</string>
<string name="contacts_ldap_query_more_results_available">Plus de résultats sont disponibles, affinez votre recherche</string> <string name="contacts_ldap_query_more_results_available">Plus de résultats sont disponibles, affinez votre recherche</string>
<string name="chat_message_download_already_in_progress">Merci d\'attendre la fin du premier téléchargement avant d\'en lancer un second</string>
</resources> </resources>

View file

@ -228,6 +228,7 @@
<string name="chat_message_removal_info">Message will be deleted</string> <string name="chat_message_removal_info">Message will be deleted</string>
<string name="chat_message_abort_removal">Abort</string> <string name="chat_message_abort_removal">Abort</string>
<string name="chat_room_failed_to_create">Failed to create chat room</string> <string name="chat_room_failed_to_create">Failed to create chat room</string>
<string name="chat_message_download_already_in_progress">Please wait for first download to finish before starting a new one</string>
<!-- Recordings --> <!-- Recordings -->
<string name="recordings_empty_list">No recordings</string> <string name="recordings_empty_list">No recordings</string>