From 5519f17775c1999b93906677fae62028d56479ae Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 25 May 2023 10:58:52 +0930 Subject: [PATCH] Truncate session id when displayed as username (#1215) --- .../securesms/preferences/SettingsActivity.kt | 12 ++++++------ .../messaging/utilities/UpdateMessageBuilder.kt | 17 +++++++++-------- .../org/session/libsession/utilities/IdUtil.kt | 4 ++++ 3 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 libsession/src/main/java/org/session/libsession/utilities/IdUtil.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt index e7e3c0d268..6b6497982d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt @@ -26,11 +26,8 @@ import nl.komponents.kovenant.all import nl.komponents.kovenant.ui.alwaysUi import nl.komponents.kovenant.ui.successUi import org.session.libsession.avatars.AvatarHelper -import org.session.libsession.utilities.Address -import org.session.libsession.utilities.ProfileKeyUtil -import org.session.libsession.utilities.ProfilePictureUtilities +import org.session.libsession.utilities.* import org.session.libsession.utilities.SSKEnvironment.ProfileManagerProtocol -import org.session.libsession.utilities.TextSecurePreferences import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity import org.thoughtcrime.securesms.avatar.AvatarSelection import org.thoughtcrime.securesms.components.ProfilePictureView @@ -73,7 +70,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() { super.onCreate(savedInstanceState, isReady) binding = ActivitySettingsBinding.inflate(layoutInflater) setContentView(binding.root) - val displayName = TextSecurePreferences.getProfileName(this) ?: hexEncodedPublicKey + val displayName = getDisplayName() glide = GlideApp.with(this) with(binding) { setupProfilePictureView(profilePictureView.root) @@ -98,10 +95,13 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() { } } + private fun getDisplayName(): String = + TextSecurePreferences.getProfileName(this) ?: truncateIdForDisplay(hexEncodedPublicKey) + private fun setupProfilePictureView(view: ProfilePictureView) { view.glide = glide view.publicKey = hexEncodedPublicKey - view.displayName = TextSecurePreferences.getProfileName(this) ?: hexEncodedPublicKey + view.displayName = getDisplayName() view.isLarge = true view.update() } diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt index 52fe83170a..35328b9742 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt @@ -7,16 +7,17 @@ import org.session.libsession.messaging.calls.CallMessageType import org.session.libsession.messaging.contacts.Contact import org.session.libsession.messaging.sending_receiving.data_extraction.DataExtractionNotificationInfoMessage import org.session.libsession.utilities.ExpirationUtil +import org.session.libsession.utilities.truncateIdForDisplay object UpdateMessageBuilder { - fun buildGroupUpdateMessage(context: Context, updateMessageData: UpdateMessageData, sender: String? = null, isOutgoing: Boolean = false): String { + fun buildGroupUpdateMessage(context: Context, updateMessageData: UpdateMessageData, senderId: String? = null, isOutgoing: Boolean = false): String { var message = "" val updateData = updateMessageData.kind ?: return message - if (!isOutgoing && sender == null) return message + if (!isOutgoing && senderId == null) return message val storage = MessagingModuleConfiguration.shared.storage val senderName: String = if (!isOutgoing) { - storage.getContactWithSessionID(sender!!)?.displayName(Contact.ContactContext.REGULAR) ?: sender + storage.getContactWithSessionID(senderId!!)?.displayName(Contact.ContactContext.REGULAR) ?: truncateIdForDisplay(senderId) } else { context.getString(R.string.MessageRecord_you) } when (updateData) { @@ -77,11 +78,11 @@ object UpdateMessageBuilder { return message } - fun buildExpirationTimerMessage(context: Context, duration: Long, sender: String? = null, isOutgoing: Boolean = false): String { - if (!isOutgoing && sender == null) return "" + fun buildExpirationTimerMessage(context: Context, duration: Long, senderId: String? = null, isOutgoing: Boolean = false): String { + if (!isOutgoing && senderId == null) return "" val storage = MessagingModuleConfiguration.shared.storage val senderName: String? = if (!isOutgoing) { - storage.getContactWithSessionID(sender!!)?.displayName(Contact.ContactContext.REGULAR) ?: sender + storage.getContactWithSessionID(senderId!!)?.displayName(Contact.ContactContext.REGULAR) ?: truncateIdForDisplay(senderId) } else { context.getString(R.string.MessageRecord_you) } return if (duration <= 0) { if (isOutgoing) context.getString(R.string.MessageRecord_you_disabled_disappearing_messages) @@ -93,9 +94,9 @@ object UpdateMessageBuilder { } } - fun buildDataExtractionMessage(context: Context, kind: DataExtractionNotificationInfoMessage.Kind, sender: String? = null): String { + fun buildDataExtractionMessage(context: Context, kind: DataExtractionNotificationInfoMessage.Kind, senderId: String? = null): String { val storage = MessagingModuleConfiguration.shared.storage - val senderName = storage.getContactWithSessionID(sender!!)?.displayName(Contact.ContactContext.REGULAR) ?: sender!! + val senderName = storage.getContactWithSessionID(senderId!!)?.displayName(Contact.ContactContext.REGULAR) ?: truncateIdForDisplay(senderId) return when (kind) { DataExtractionNotificationInfoMessage.Kind.SCREENSHOT -> context.getString(R.string.MessageRecord_s_took_a_screenshot, senderName) diff --git a/libsession/src/main/java/org/session/libsession/utilities/IdUtil.kt b/libsession/src/main/java/org/session/libsession/utilities/IdUtil.kt new file mode 100644 index 0000000000..ccaa31c2f9 --- /dev/null +++ b/libsession/src/main/java/org/session/libsession/utilities/IdUtil.kt @@ -0,0 +1,4 @@ +package org.session.libsession.utilities + +fun truncateIdForDisplay(id: String): String = + id.takeIf { it.length > 8 }?.apply{ "${take(4)}…${takeLast(4)}" } ?: id