Search an existing one to one chatroom to not create a new one if not necessary
This commit is contained in:
parent
83657e33a1
commit
cdec808f28
3 changed files with 61 additions and 45 deletions
|
@ -44,6 +44,8 @@ import org.linphone.contacts.SearchContactsListAdapter;
|
||||||
import org.linphone.core.Address;
|
import org.linphone.core.Address;
|
||||||
import org.linphone.core.ChatRoom;
|
import org.linphone.core.ChatRoom;
|
||||||
import org.linphone.core.ChatRoomListenerStub;
|
import org.linphone.core.ChatRoomListenerStub;
|
||||||
|
import org.linphone.core.Core;
|
||||||
|
import org.linphone.core.Factory;
|
||||||
import org.linphone.mediastream.Log;
|
import org.linphone.mediastream.Log;
|
||||||
import org.linphone.ui.ContactSelectView;
|
import org.linphone.ui.ContactSelectView;
|
||||||
import org.linphone.contacts.ContactsUpdatedListener;
|
import org.linphone.contacts.ContactsUpdatedListener;
|
||||||
|
@ -297,25 +299,29 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen
|
||||||
if (mContactsSelected.size() == 1) {
|
if (mContactsSelected.size() == 1) {
|
||||||
mContactsSelectedLayout.removeAllViews();
|
mContactsSelectedLayout.removeAllViews();
|
||||||
mWaitLayout.setVisibility(View.VISIBLE);
|
mWaitLayout.setVisibility(View.VISIBLE);
|
||||||
ChatRoom chatRoom = LinphoneManager.getLc().createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
Core lc = LinphoneManager.getLc();
|
||||||
chatRoom.setListener(new ChatRoomListenerStub() {
|
Address participant = Factory.instance().createAddress(mContactsSelected.get(0).getAddress());
|
||||||
@Override
|
ChatRoom chatRoom = lc.findOneToOneChatRoom(lc.getDefaultProxyConfig().getContact(), participant);
|
||||||
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
if (chatRoom == null) {
|
||||||
if (newState == ChatRoom.State.Created) {
|
chatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
chatRoom.setListener(new ChatRoomListenerStub() {
|
||||||
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
@Override
|
||||||
} else if (newState == ChatRoom.State.CreationFailed) {
|
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
if (newState == ChatRoom.State.Created) {
|
||||||
LinphoneActivity.instance().displayChatRoomError();
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
||||||
|
} else if (newState == ChatRoom.State.CreationFailed) {
|
||||||
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
|
LinphoneActivity.instance().displayChatRoomError();
|
||||||
|
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
|
||||||
Address addresses[] = new Address[1];
|
chatRoom.addParticipant(participant);
|
||||||
String addr = mContactsSelected.get(0).getAddress();
|
} else {
|
||||||
addresses[0] = LinphoneManager.getLc().interpretUrl(addr);
|
LinphoneActivity.instance().goToChat(chatRoom.getPeerAddress().asStringUriOnly());
|
||||||
chatRoom.addParticipants(addresses);
|
}
|
||||||
} else {
|
} else {
|
||||||
mContactsSelectedLayout.removeAllViews();
|
mContactsSelectedLayout.removeAllViews();
|
||||||
LinphoneActivity.instance().goToChatGroupInfos(null, mContactsSelected, null, true, false);
|
LinphoneActivity.instance().goToChatGroupInfos(null, mContactsSelected, null, true, false);
|
||||||
|
|
|
@ -77,21 +77,26 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
|
||||||
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
||||||
} else {
|
} else {
|
||||||
mWaitLayout.setVisibility(View.VISIBLE);
|
mWaitLayout.setVisibility(View.VISIBLE);
|
||||||
ChatRoom chatRoom = LinphoneManager.getLc().createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
room = lc.findOneToOneChatRoom(lc.getDefaultProxyConfig().getContact(), participant);
|
||||||
chatRoom.setListener(new ChatRoomListenerStub() {
|
if (room == null) {
|
||||||
@Override
|
room = LinphoneManager.getLc().createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
||||||
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
room.setListener(new ChatRoomListenerStub() {
|
||||||
if (newState == ChatRoom.State.Created) {
|
@Override
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
||||||
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
if (newState == ChatRoom.State.Created) {
|
||||||
} else if (newState == ChatRoom.State.CreationFailed) {
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
||||||
LinphoneActivity.instance().displayChatRoomError();
|
} else if (newState == ChatRoom.State.CreationFailed) {
|
||||||
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
|
LinphoneActivity.instance().displayChatRoomError();
|
||||||
|
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
room.addParticipant(participant);
|
||||||
chatRoom.addParticipant(participant);
|
} else {
|
||||||
|
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,21 +176,26 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
|
||||||
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
||||||
} else {
|
} else {
|
||||||
mWaitLayout.setVisibility(View.VISIBLE);
|
mWaitLayout.setVisibility(View.VISIBLE);
|
||||||
ChatRoom chatRoom = LinphoneManager.getLc().createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
room = lc.findOneToOneChatRoom(lc.getDefaultProxyConfig().getContact(), participant);
|
||||||
chatRoom.setListener(new ChatRoomListenerStub() {
|
if (room == null) {
|
||||||
@Override
|
room = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
|
||||||
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
room.setListener(new ChatRoomListenerStub() {
|
||||||
if (newState == ChatRoom.State.Created) {
|
@Override
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
public void onStateChanged(ChatRoom cr, ChatRoom.State newState) {
|
||||||
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
if (newState == ChatRoom.State.Created) {
|
||||||
} else if (newState == ChatRoom.State.CreationFailed) {
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
mWaitLayout.setVisibility(View.GONE);
|
LinphoneActivity.instance().goToChat(cr.getPeerAddress().asStringUriOnly());
|
||||||
LinphoneActivity.instance().displayChatRoomError();
|
} else if (newState == ChatRoom.State.CreationFailed) {
|
||||||
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
mWaitLayout.setVisibility(View.GONE);
|
||||||
|
LinphoneActivity.instance().displayChatRoomError();
|
||||||
|
Log.e("Group chat room for address " + cr.getPeerAddress() + " has failed !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
room.addParticipant(participant);
|
||||||
chatRoom.addParticipant(participant);
|
} else {
|
||||||
|
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (id == R.id.add_contact) {
|
} else if (id == R.id.add_contact) {
|
||||||
Address addr = Factory.instance().createAddress(sipUri);
|
Address addr = Factory.instance().createAddress(sipUri);
|
||||||
|
|
Loading…
Reference in a new issue