From 035738f4c572c3d12042acbda9611c9ad2f043d6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 15 Nov 2023 13:33:46 +0100 Subject: [PATCH] Proper display of group conversation events --- .../org/linphone/contacts/ContactsManager.kt | 4 +- .../linphone/ui/main/chat/model/EventModel.kt | 60 ++++++++++++++++++- app/src/main/res/values/strings.xml | 10 ++++ 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index db5f6368a..d65ca14ab 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -172,7 +172,9 @@ class ContactsManager @UiThread constructor(context: Context) { @WorkerThread fun findDisplayName(address: Address): String { - return findContactByAddress(address)?.name ?: LinphoneUtils.getDisplayName(address) + return getContactAvatarModelForAddress(address).friend.name ?: LinphoneUtils.getDisplayName( + address + ) } @WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/EventModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/EventModel.kt index 72be4b6bb..6bb545c08 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/EventModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/EventModel.kt @@ -20,8 +20,64 @@ package org.linphone.ui.main.chat.model import androidx.annotation.WorkerThread +import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.R import org.linphone.core.EventLog +import org.linphone.utils.AppUtils -class EventModel @WorkerThread constructor(eventLog: EventLog) { - val text = eventLog.type.name // TODO FIXME: use proper translated string instead +class EventModel @WorkerThread constructor(private val eventLog: EventLog) { + val text: String + + init { + text = when (eventLog.type) { + EventLog.Type.ConferenceCreated -> AppUtils.getString( + R.string.conversation_event_conference_created + ) + EventLog.Type.ConferenceTerminated -> AppUtils.getString( + R.string.conversation_event_conference_destroyed + ) + EventLog.Type.ConferenceParticipantAdded -> AppUtils.getFormattedString( + R.string.conversation_event_participant_added, + getName() + ) + EventLog.Type.ConferenceParticipantRemoved -> AppUtils.getFormattedString( + R.string.conversation_event_participant_removed, + getName() + ) + EventLog.Type.ConferenceSubjectChanged -> AppUtils.getFormattedString( + R.string.conversation_event_subject_changed, + getName() + ) + EventLog.Type.ConferenceParticipantSetAdmin -> AppUtils.getFormattedString( + R.string.conversation_event_admin_set, + getName() + ) + EventLog.Type.ConferenceParticipantUnsetAdmin -> AppUtils.getFormattedString( + R.string.conversation_event_admin_unset, + getName() + ) + EventLog.Type.ConferenceParticipantDeviceAdded -> AppUtils.getFormattedString( + R.string.conversation_event_device_added, + getName() + ) + EventLog.Type.ConferenceParticipantDeviceRemoved -> AppUtils.getFormattedString( + R.string.conversation_event_device_removed, + getName() + ) + else -> { + eventLog.type.name + } + } + } + + @WorkerThread + fun getName(): String { + val address = eventLog.participantAddress ?: eventLog.peerAddress + val name = if (address != null) { + coreContext.contactsManager.findDisplayName(address) + } else { + "" + } + return name + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d6fb00d56..e1fc7896e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -369,6 +369,16 @@ Give admin rights Remove admin rights + You have joined the group + You have left the group + %s has joined + %s has left + new device for %s + device for %s removed + new subject: %s + %s is admin + %s is no longer admin + Read %s Received %s Sent %s