From 9e3a7055fe045c0009f66a3c3c98245db7f3deb8 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 6 Aug 2024 09:43:22 +0200 Subject: [PATCH] Fixed contact avatars in group chat room messages after reload --- .gitignore | 8 - .idea/other.xml | 263 ------------------ .../ui/main/chat/model/EventLogModel.kt | 3 - .../ui/main/chat/model/MessageModel.kt | 13 +- .../chat/viewmodel/ConversationViewModel.kt | 10 +- .../SendMessageInConversationViewModel.kt | 2 +- 6 files changed, 19 insertions(+), 280 deletions(-) delete mode 100644 .idea/other.xml diff --git a/.gitignore b/.gitignore index f7247d082..d5f70d215 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,6 @@ *.iml .gradle /local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.idea/deploymentTargetDropDown.xml -.idea/deploymentTargetSelector.xml .DS_Store /build /captures diff --git a/.idea/other.xml b/.idea/other.xml deleted file mode 100644 index 0d3a1fbb1..000000000 --- a/.idea/other.xml +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt index debac6393..b0ca39f3b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/EventLogModel.kt @@ -23,12 +23,10 @@ import androidx.annotation.WorkerThread import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.core.EventLog import org.linphone.core.tools.Log -import org.linphone.ui.main.contacts.model.ContactAvatarModel import org.linphone.utils.LinphoneUtils class EventLogModel @WorkerThread constructor( val eventLog: EventLog, - val avatarModel: ContactAvatarModel, isFromGroup: Boolean = false, isGroupedWithPreviousOne: Boolean = false, isGroupedWithNextOne: Boolean = false, @@ -74,7 +72,6 @@ class EventLogModel @WorkerThread constructor( MessageModel( chatMessage, - avatarModel, isFromGroup, isReply, replyTo, diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt index dac228528..71d193daf 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt @@ -67,7 +67,6 @@ import org.linphone.utils.TimestampUtils class MessageModel @WorkerThread constructor( val chatMessage: ChatMessage, - val avatarModel: ContactAvatarModel, val isFromGroup: Boolean, val isReply: Boolean, val replyTo: String, @@ -106,6 +105,8 @@ class MessageModel @WorkerThread constructor( val chatRoomIsReadOnly = chatMessage.chatRoom.isReadOnly || (!chatMessage.chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt()) && isEndToEndEncryptionMandatory()) + val avatarModel = MutableLiveData() + val groupedWithNextMessage = MutableLiveData() val groupedWithPreviousMessage = MutableLiveData() @@ -257,6 +258,8 @@ class MessageModel @WorkerThread constructor( } init { + updateAvatarModel() + groupedWithNextMessage.postValue(isGroupedWithNextOne) groupedWithPreviousMessage.postValue(isGroupedWithPreviousOne) isPlayingVoiceRecord.postValue(false) @@ -337,6 +340,14 @@ class MessageModel @WorkerThread constructor( } } + @WorkerThread + fun updateAvatarModel() { + val avatar = coreContext.contactsManager.getContactAvatarModelForAddress( + chatMessage.fromAddress + ) + avatarModel.postValue(avatar) + } + @WorkerThread private fun computeContentsList() { Log.d("$TAG Computing message contents list") diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 1c2a99be8..1451839dc 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -320,6 +320,12 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo override fun onContactsLoaded() { Log.i("$TAG Contacts have been (re)loaded, updating list") computeParticipantsInfo() + + if (isGroup.value == true) { + for (event in eventsList) { + (event.model as? MessageModel)?.updateAvatarModel() + } + } } } @@ -724,12 +730,8 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo var index = 0 for (groupedEvent in groupedEventLogs) { - val avatar = coreContext.contactsManager.getContactAvatarModelForAddress( - groupedEvent.chatMessage?.fromAddress - ) val model = EventLogModel( groupedEvent, - avatar, groupChatRoom, index > 0, index != groupedEventLogs.size - 1, diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt index 956620968..687c43626 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/SendMessageInConversationViewModel.kt @@ -210,7 +210,7 @@ class SendMessageInConversationViewModel @UiThread constructor() : GenericViewMo val message = model.chatMessage Log.i("$TAG Pending reply to message [${message.messageId}]") chatMessageToReplyTo = message - isReplyingTo.postValue(model.avatarModel.friend.name) + isReplyingTo.postValue(model.avatarModel.value?.friend?.name) isReplyingToMessage.postValue(LinphoneUtils.getTextDescribingMessage(message)) isReplying.postValue(true) }