diff --git a/lib/src/main/java/org/asamk/signal/manager/api/Contact.java b/lib/src/main/java/org/asamk/signal/manager/api/Contact.java index 3eef0117..6df4e11f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/api/Contact.java +++ b/lib/src/main/java/org/asamk/signal/manager/api/Contact.java @@ -80,6 +80,21 @@ public record Contact( return givenName + " " + familyName; } + public String getDisplayNickname() { + final var noNickGivenName = Util.isEmpty(nickNameGivenName); + final var noNickFamilyName = Util.isEmpty(nickNameFamilyName); + + if (noNickGivenName && noNickFamilyName) { + return null; + } else if (noNickGivenName) { + return nickNameFamilyName; + } else if (noNickFamilyName) { + return nickNameGivenName; + } + + return nickNameGivenName + " " + nickNameFamilyName; + } + public static final class Builder { private String givenName; diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java index a7ef717a..b1c02d7d 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java @@ -1706,8 +1706,15 @@ public class ManagerImpl implements Manager { } final var contact = account.getContactStore().getContact(recipientId); - if (contact != null && !Util.isEmpty(contact.getName())) { - return contact.getName(); + if (contact != null) { + final var nickname = contact.getDisplayNickname(); + if (!Util.isEmpty(nickname)) { + return nickname; + } + + if (!Util.isEmpty(contact.getName())) { + return contact.getName(); + } } final var profile = context.getProfileHelper().getRecipientProfile(recipientId);