diff --git a/src/android/org/linphone/chat/ChatListFragment.java b/src/android/org/linphone/chat/ChatListFragment.java index 1258b8232..78ee2ed21 100644 --- a/src/android/org/linphone/chat/ChatListFragment.java +++ b/src/android/org/linphone/chat/ChatListFragment.java @@ -409,7 +409,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte Address address; address = Factory.instance().createAddress(sipUri); - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); + LinphoneContact contact = null; String message = ""; Long time; @@ -435,7 +435,8 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte holder.displayName.setSelected(true); // For animation - if (!chatRoom.canHandleParticipants() || (chatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject()))) { + if (!chatRoom.canHandleParticipants()) { + contact = ContactsManager.getInstance().findContactFromAddress(address); if (contact != null) { holder.displayName.setText(contact.getFullName()); LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); @@ -443,6 +444,15 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte holder.displayName.setText(LinphoneUtils.getAddressDisplayName(address)); holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap()); } + } else if (chatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject())) { + contact = ContactsManager.getInstance().findContactFromAddress(chatRoom.getParticipants()[0].getAddress()); + if (contact != null) { + holder.displayName.setText(contact.getFullName()); + LinphoneUtils.setThumbnailPictureFromUri(LinphoneActivity.instance(), holder.contactPicture, contact.getThumbnailUri()); + } else { + holder.displayName.setText(LinphoneUtils.getAddressDisplayName(chatRoom.getParticipants()[0].getAddress())); + holder.contactPicture.setImageBitmap(ContactsManager.getInstance().getDefaultAvatarBitmap()); + } } else { holder.displayName.setText(chatRoom.getSubject()); holder.contactPicture.setImageResource(R.drawable.chat_group_avatar); diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 33ad47662..6c338bc5e 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -89,7 +89,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private Uri mImageToUploadUri; private ChatEventsAdapter mEventsAdapter; private String mRemoteSipUri; - private Address mRemoteSipAddress; + private Address mRemoteSipAddress, mRemoteParticipantAddress; private ChatRoom mChatRoom; private ArrayList mParticipants; @@ -122,7 +122,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mCallButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - LinphoneActivity.instance().setAddresGoToDialerAndCall(mRemoteSipUri, null, null); + LinphoneActivity.instance().setAddresGoToDialerAndCall(mRemoteParticipantAddress.asString(), null, null); } }); @@ -411,7 +411,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private void getContactsForParticipants() { mParticipants = new ArrayList<>(); if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) { - LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteSipAddress); + LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteParticipantAddress); if (c != null) { mParticipants.add(c); } @@ -450,6 +450,11 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mChatRoom.markAsRead(); LinphoneActivity.instance().updateMissedChatCount(); + mRemoteParticipantAddress = mRemoteSipAddress; + if (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject())) { + mRemoteParticipantAddress = mChatRoom.getParticipants()[0].getAddress(); + } + getContactsForParticipants(); } @@ -470,7 +475,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con if (mParticipants.size() == 0) { // Contact not found - String displayName = LinphoneUtils.getAddressDisplayName(mRemoteSipAddress); + String displayName = LinphoneUtils.getAddressDisplayName(mRemoteParticipantAddress); mRoomLabel.setText(displayName); } else { mRoomLabel.setText(mParticipants.get(0).getFullName());