Use OneToOne capability instead of participants count and dummy chatroom subject

This commit is contained in:
Sylvain Berfini 2018-01-30 10:56:32 +01:00
parent 00721dc10d
commit 40e614b36a
3 changed files with 26 additions and 20 deletions

View file

@ -90,6 +90,7 @@ import org.linphone.core.CallParams;
import org.linphone.core.CallStats;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.Content;
import org.linphone.core.Core;
import org.linphone.core.Core.AuthMethod;
@ -1066,7 +1067,7 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou
String textMessage = (message.getFileTransferInformation() != null) ? getString(R.string.content_description_incoming_file) : message.getText();
if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat_message_notification)) {
if (!cr.canHandleParticipants() || (cr.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(cr.getSubject()))) {
if (cr.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
if (contact != null) {
LinphoneService.instance().displayMessageNotification(cr.getPeerAddress().asStringUriOnly(), contact.getFullName(), contact.getThumbnailUri(), textMessage);
} else {

View file

@ -39,6 +39,7 @@ import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.EventLog;
import org.linphone.mediastream.Log;
import org.linphone.ui.ListSelectionAdapter;
@ -137,7 +138,8 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
ChatRoom chatRoom = mRooms.get(position);
Address remoteAddress = chatRoom.getPeerAddress();
Address contactAddress = remoteAddress;
if (chatRoom.getNbParticipants() == 1 && mContext.getString(R.string.dummy_group_chat_subject).equals(chatRoom.getSubject())) {
if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) && chatRoom.getParticipants().length > 0) {
contactAddress = chatRoom.getParticipants()[0].getAddress();
}
@ -165,9 +167,18 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
}
holder.displayName.setSelected(true); // For animation
holder.contactPicture.setImageBitmap(mDefaultBitmap);
if (!chatRoom.canHandleParticipants()) {
if (chatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
if (chatRoom.getParticipants().length > 0) {
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()));
}
} else {
contact = ContactsManager.getInstance().findContactFromAddress(contactAddress);
if (contact != null) {
holder.displayName.setText(contact.getFullName());
@ -175,13 +186,6 @@ public class ChatRoomsAdapter extends ListSelectionAdapter {
} else {
holder.displayName.setText(LinphoneUtils.getAddressDisplayName(contactAddress));
}
} else if (chatRoom.getNbParticipants() == 1 && mContext.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()));
}
} else {
holder.displayName.setText(chatRoom.getSubject());

View file

@ -57,6 +57,7 @@ import org.linphone.contacts.LinphoneContact;
import org.linphone.core.Address;
import org.linphone.core.ChatMessage;
import org.linphone.core.ChatRoom;
import org.linphone.core.ChatRoomCapabilities;
import org.linphone.core.ChatRoomListener;
import org.linphone.core.Content;
import org.linphone.core.Core;
@ -330,7 +331,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()))) {
if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(mRemoteParticipantAddress);
if (c != null) {
mParticipants.add(c);
@ -376,7 +377,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
LinphoneActivity.instance().updateMissedChatCount();
mRemoteParticipantAddress = mRemoteSipAddress;
if (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject())) {
if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) && mChatRoom.getParticipants().length > 0) {
mRemoteParticipantAddress = mChatRoom.getParticipants()[0].getAddress();
}
@ -393,7 +394,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
mBackToCallButton.setVisibility(View.VISIBLE);
} else {
mBackToCallButton.setVisibility(View.GONE);
if (!mChatRoom.canHandleParticipants() || (mChatRoom.getNbParticipants() == 1 && getString(R.string.dummy_group_chat_subject).equals(mChatRoom.getSubject()))) {
if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
mCallButton.setVisibility(View.VISIBLE);
mGroupInfosButton.setVisibility(View.GONE);
mParticipantsLabel.setVisibility(View.GONE);