From 946a66ed38d8a420a333e98173f77ede33b6574a Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 21 Dec 2019 16:47:41 +0100 Subject: [PATCH] Fix name displaying and use AvatarDrawable --- .../ui/chatlist/ChatListRecyclerViewAdapter.java | 11 ++++++----- .../contacts/ContactListRecyclerViewAdapter.java | 7 ++++--- .../messenger/data/mapping/PeerMapping.java | 1 + .../org/mercury_im/messenger/entity/contact/Peer.java | 4 ++++ 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java index 7a03d56..cfc53b7 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java @@ -17,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.mercury_im.messenger.R; import org.mercury_im.messenger.entity.chat.DirectChat; +import org.mercury_im.messenger.ui.avatar.AvatarDrawable; import org.mercury_im.messenger.ui.chat.ChatActivity; import org.mercury_im.messenger.ui.util.AbstractRecyclerViewAdapter; import org.mercury_im.messenger.util.ColorUtil; @@ -42,15 +43,15 @@ public class ChatListRecyclerViewAdapter @Override public void onBindViewHolder(@NonNull ChatHolder holder, int position) { DirectChat model = getItemAt(position); - holder.nameView.setText(model.getPeer().getAddress() != null ? - model.getPeer().getAddress() : model.toString()); - holder.avatarView.setColorFilter(ColorUtil.consistentColor(model.getPeer().getAddress())); - + String name = model.getPeer().getDisplayName(); + String address = model.getPeer().getAddress(); + holder.nameView.setText(name); + holder.avatarView.setImageDrawable(new AvatarDrawable(name, address)); holder.itemView.setOnClickListener(view -> { Intent intent = new Intent(holder.context, ChatActivity.class); intent.putExtra(ChatActivity.EXTRA_JID, model.getPeer().getAddress()); - intent.putExtra(ChatActivity.EXTRA_ACCOUNT, model.getPeer().getAccount().getId()); + intent.putExtra(ChatActivity.EXTRA_ACCOUNT, model.getPeer().getAccount().getId().toString()); holder.context.startActivity(intent); }); diff --git a/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java index eefffda..584f866 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.mercury_im.messenger.R; import org.mercury_im.messenger.entity.contact.Peer; +import org.mercury_im.messenger.ui.avatar.AvatarDrawable; import org.mercury_im.messenger.ui.chat.ChatActivity; import org.mercury_im.messenger.ui.util.AbstractRecyclerViewAdapter; import org.mercury_im.messenger.util.ColorUtil; @@ -65,11 +66,11 @@ public class ContactListRecyclerViewAdapter } void bind(Peer contact) { - String name = contact.getName(); + String name = contact.getDisplayName(); String address = contact.getAddress(); - nameView.setText(name != null ? name : address); + nameView.setText(name); jidView.setText(address); - avatarView.setColorFilter(ColorUtil.consistentColor(address)); + avatarView.setImageDrawable(new AvatarDrawable(name, address)); view.setOnClickListener(view -> { Intent intent = new Intent(context, ChatActivity.class); diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/PeerMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/PeerMapping.java index 9e95219..864dc98 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/PeerMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/PeerMapping.java @@ -44,6 +44,7 @@ public class PeerMapping extends AbstractMapping { entity.setId(model.getId()); entity.setAccount(accountMapping.toEntity(model.getAccount(), entity.getAccount())); entity.setAddress(model.getAddress()); + entity.setName(model.getName()); entity.setSubscriptionDirection(model.getSubscriptionDirection()); entity.setSubscriptionPending(model.isSubscriptionPending()); diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java index 5d82b26..3a33a44 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java @@ -41,4 +41,8 @@ public interface Peer { void setSubscriptionApproved(boolean approved); boolean isContact(); + + default String getDisplayName() { + return getName() != null ? getName() : getAddress(); + } }