diff --git a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
index 5bf4b8e6f860a45716fbdf38f7d7a71538c64879..f9a914ec779f990689372fdb824a63ddd4936b98 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactItem.kt
@@ -3,6 +3,7 @@ package org.briarproject.briar.desktop.contact
 import org.briarproject.bramble.api.contact.Contact
 import org.briarproject.bramble.api.identity.AuthorId
 import org.briarproject.briar.api.client.MessageTracker
+import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName
 import kotlin.math.max
 
 data class ContactItem(
@@ -16,7 +17,7 @@ data class ContactItem(
     override val timestamp: Long
 ) : BaseContactItem {
 
-    override val displayName = if (alias == null) name else "$alias ($name)"
+    override val displayName = getContactDisplayName(name, alias)
 
     constructor(contact: Contact, isConnected: Boolean, groupCount: MessageTracker.GroupCount) : this(
         idWrapper = RealContactIdWrapper(contact.id),
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
index a17f736652d198c8c25d08e1eaf0747ba07498b0..6ea0b61aee65c0ad25e4b241ac73d8c48092098d 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationVisitor.kt
@@ -15,6 +15,7 @@ import org.briarproject.briar.api.messaging.PrivateMessageHeader
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18nF
+import org.briarproject.briar.desktop.utils.UiUtils.getContactDisplayName
 
 internal class ConversationVisitor(
     private val contactName: String,
@@ -143,8 +144,7 @@ internal class ConversationVisitor(
     }
 
     override fun visitIntroductionRequest(r: IntroductionRequest): ConversationItem {
-        // todo: use displayName logic somehow?
-        val name = r.nameable.name
+        val name = getContactDisplayName(r.nameable.name, r.alias)
         return if (r.isLocal)
             ConversationNoticeItem(
                 i18nF("introduction_request_sent", contactName, name),
@@ -167,8 +167,7 @@ internal class ConversationVisitor(
     }
 
     override fun visitIntroductionResponse(r: IntroductionResponse): ConversationItem {
-        // todo: use displayName logic somehow?
-        val name = r.introducedAuthor.name
+        val name = getContactDisplayName(r.introducedAuthor.name, r.introducedAuthorInfo.alias)
         return if (r.isLocal) {
             val text = when {
                 r.wasAccepted() -> {
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt b/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt
new file mode 100644
index 0000000000000000000000000000000000000000..53d5b339c1468815237c4efbfac8110076b9b74d
--- /dev/null
+++ b/src/main/kotlin/org/briarproject/briar/desktop/utils/UiUtils.kt
@@ -0,0 +1,6 @@
+package org.briarproject.briar.desktop.utils
+
+object UiUtils {
+    fun getContactDisplayName(name: String, alias: String?) =
+        if (alias == null) name else "$alias ($name)"
+}