From df7f689501f63981c314d8ab533c1edb8dfd7d18 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 1 Jun 2021 10:22:29 +0200 Subject: [PATCH] Fixed auto scroll when sending 2 or more files simultaneously --- .../main/chat/data/ChatMessageContentData.kt | 30 ++++++++++++------- .../chat/fragments/DetailChatRoomFragment.kt | 2 ++ .../res/layout/chat_message_content_cell.xml | 5 ++-- app/src/main/res/values/styles.xml | 5 ++++ 4 files changed, 29 insertions(+), 13 deletions(-) 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 4bbe61061..9583929fe 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 @@ -53,7 +53,7 @@ class ChatMessageContentData( val downloadable = MutableLiveData() val downloadEnabled = MutableLiveData() - val downloadProgress = MutableLiveData() + val downloadProgressInt = MutableLiveData() val downloadProgressString = MutableLiveData() val downloadLabel = MutableLiveData() @@ -75,19 +75,23 @@ class ChatMessageContentData( offset: Int, total: Int ) { - if (c.filePath == content.filePath) { - val percent = offset * 100 / total - Log.d("[Content] Download progress is: $offset / $total ($percent%)") - downloadProgress.postValue(percent) - downloadProgressString.postValue("$percent%") + if (message == chatMessage) { + if (c.filePath == content.filePath) { + val percent = offset * 100 / total + Log.d("[Content] Download progress is: $offset / $total ($percent%)") + downloadProgressInt.postValue(percent) + downloadProgressString.postValue("$percent%") + } } } override fun onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) { - if (state == ChatMessage.State.FileTransferDone || state == ChatMessage.State.FileTransferError) { - message.removeListener(this) - } downloadEnabled.postValue(chatMessage.state != ChatMessage.State.FileTransferInProgress) + if (message == chatMessage) { + if (state == ChatMessage.State.FileTransferDone || state == ChatMessage.State.FileTransferError) { + downloadProgressInt.value = 0 + } + } } } @@ -102,8 +106,10 @@ class ChatMessageContentData( } else { content.name } + + // Display download size and underline text fileSize.value = AppUtils.bytesToDisplayableSize(content.fileSize.toLong()) - var spannable = SpannableString("${AppUtils.getString(R.string.chat_message_download_file)} (${fileSize.value})") + val spannable = SpannableString("${AppUtils.getString(R.string.chat_message_download_file)} (${fileSize.value})") spannable.setSpan(UnderlineSpan(), 0, spannable.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) downloadLabel.value = spannable @@ -143,7 +149,7 @@ class ChatMessageContentData( isGenericFile.value = !isPdf.value!! && !isAudio.value!! && !isVideo.value!! && !isImage.value!! downloadEnabled.value = !chatMessage.isFileTransferInProgress - downloadProgress.value = 0 + downloadProgressInt.value = 0 downloadProgressString.value = "0%" chatMessage.addListener(chatMessageListener) } @@ -157,6 +163,8 @@ class ChatMessageContentData( FileUtils.deleteFile(path) filePath.value = "" } + + chatMessage.removeListener(chatMessageListener) } fun download() { 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 4f84859ef..31856cbe8 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 @@ -73,6 +73,8 @@ class DetailChatRoomFragment : MasterFragment 0) { adapter.notifyItemChanged(positionStart - 1) // For grouping purposes scrollToBottom() + } else if (positionStart > 0) { + scrollToBottom() } } } diff --git a/app/src/main/res/layout/chat_message_content_cell.xml b/app/src/main/res/layout/chat_message_content_cell.xml index 3cfc13fd3..ab447e257 100644 --- a/app/src/main/res/layout/chat_message_content_cell.xml +++ b/app/src/main/res/layout/chat_message_content_cell.xml @@ -89,7 +89,7 @@ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 145af9234..efe8a63b0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -269,4 +269,9 @@ 10sp + +