diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java index 78baec54194dd5f9690a7e315c5d908432fea129..940efdd1c2c6bffe200f3d190c1d8fe7ef2f9bbf 100644 --- a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java +++ b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java @@ -80,7 +80,7 @@ public class ContactDetailsTask implements Runnable { } public interface DetailsLoadedCallback { - void onDetailsLoaded(String formattedName); + void onDetailsLoaded(Bitmap bmp, String formattedName, String username); } public ContactDetailsTask(Context context, ImageView element, CallContact item) { @@ -187,7 +187,7 @@ public class ContactDetailsTask implements Runnable { mImageViewWeakRef.clear(); if (v == null) { for (DetailsLoadedCallback cb : mCallbacks) { - cb.onDetailsLoaded(formattedName); + cb.onDetailsLoaded(externalBMP, formattedName, mContact.getUsername()); } } else { v.post(new Runnable() { diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java index 1e9293b3f3bf5955db7cab36dfa75ee796e2f632..df0657b14a82e4fec064c64f94c7aec6ce5c5e39 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java @@ -322,10 +322,13 @@ public class ConversationFragment extends BaseFragment<ConversationPresenter> im } @Override - public void onDetailsLoaded(String formattedName) { + public void onDetailsLoaded(Bitmap bmp, String formattedName, String username) { ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); if (actionBar != null && formattedName != null) { actionBar.setTitle(formattedName); + if (username != null && !username.equals(formattedName)) { + actionBar.setSubtitle(username); + } } } diff --git a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java index 71175b64eb2c9c87979c4cda0aaa894fc2d1c56b..f60fec7995781574895d857fd90c6f48199a5e3b 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java +++ b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java @@ -222,8 +222,12 @@ public class ConversationFacade extends Observable implements Observer<ServiceEv } CallContact contact = conversation.getContact(); - if (contact == null || contact.getDisplayName().equals(newDisplayName) - || !contact.getDisplayName().contains(ringId)) { + if (contact == null || contact.getDisplayName().equals(newDisplayName)) { + return; + } + + if (!contact.getDisplayName().contains(ringId)) { + contact.setUsername(newDisplayName); return; } @@ -231,6 +235,7 @@ public class ConversationFacade extends Observable implements Observer<ServiceEv contact.getPhones().clear(); contact.getPhones().add(new cx.ring.model.Phone(ringIdUri, 0)); contact.setDisplayName(newDisplayName); + contact.setUsername(newDisplayName); setChanged(); ServiceEvent event = new ServiceEvent(ServiceEvent.EventType.USERNAME_CHANGED); diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java index 3b7197837c3e02340969c82a82464cb7c53735d6..a6fedd40ca8be226aae3dda13fb5072540d036cb 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java +++ b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java @@ -35,6 +35,7 @@ public class CallContact { private long mId; private String mKey; private String mDisplayName; + private String mUsername; private long mPhotoId; private final ArrayList<Phone> mPhones; private boolean isUser; @@ -55,6 +56,7 @@ public class CallContact { mId = cID; mKey = k; mDisplayName = displayName; + mUsername = displayName; mPhones = p; mPhotoId = photoID; isUser = user; @@ -97,6 +99,9 @@ public class CallContact { mKey = k; mDisplayName = displayName; this.mPhotoId = photo_id; + if (mUsername == null && displayName.contains(PREFIX_RING)) { + mUsername = displayName; + } } public static String canonicalNumber(String number) { @@ -242,6 +247,14 @@ public class CallContact { mDisplayName = displayName; } + public String getUsername() { + return mUsername; + } + + public void setUsername(String mUsername) { + this.mUsername = mUsername; + } + //region Equals @Override public boolean equals(Object o) {