Fixes for UI when creating a 1 vs 1 group chat room

This commit is contained in:
Sylvain Berfini 2017-11-09 11:08:29 +01:00
parent 5816c533c2
commit 4e1ac4fe18
2 changed files with 21 additions and 6 deletions

View file

@ -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);

View file

@ -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<LinphoneContact> 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());