diff --git a/res/raw/assistant_create.rc b/res/raw/assistant_create.rc index bcfa7a073..dc66e4efc 100644 --- a/res/raw/assistant_create.rc +++ b/res/raw/assistant_create.rc @@ -13,6 +13,7 @@ 1 nat_policy_default_values sip.linphone.org + sip:conference-factory@sip.linphone.org
stun.linphone.org diff --git a/res/raw/linphonerc_factory b/res/raw/linphonerc_factory index adc4d0a78..815e1ce9d 100644 --- a/res/raw/linphonerc_factory +++ b/res/raw/linphonerc_factory @@ -37,7 +37,6 @@ dtmf_player_amp=0.1 ec_calibrator_cool_tones=1 [misc] -conference_factory_uri=sip:conference-factory@sip.linphone.org max_calls=10 history_max_size=100 enable_basic_to_client_group_chat_room_migration=0 diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index 1879eedbe..d2a5c766a 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -3,6 +3,7 @@ sip.linphone.org + sip:conference-factory@sip.linphone.org org.linphone vnd.android.cursor.item/org.linphone.profile sip:rls@sip.linphone.org diff --git a/src/android/org/linphone/LinphoneManager.java b/src/android/org/linphone/LinphoneManager.java index 7c2047d88..1889c8f39 100644 --- a/src/android/org/linphone/LinphoneManager.java +++ b/src/android/org/linphone/LinphoneManager.java @@ -723,6 +723,15 @@ public class LinphoneManager implements CoreListener, SensorEventListener, Accou mLc.migrateLogsFromRcToDb(); + // Migrate existing linphone accounts to have conference factory uri set + for (ProxyConfig lpc : mLc.getProxyConfigList()) { + if (lpc.getConferenceFactoryUri() == null && lpc.getIdentityAddress().getDomain().equals(getString(R.string.default_domain))) { + lpc.edit(); + lpc.setConferenceFactoryUri(getString(R.string.default_conference_factory_uri)); + lpc.done(); + } + } + if (mServiceContext.getResources().getBoolean(R.bool.enable_push_id)) { initPushNotificationsService(); } diff --git a/src/android/org/linphone/chat/ChatCreationFragment.java b/src/android/org/linphone/chat/ChatCreationFragment.java index e99972bfa..090099491 100644 --- a/src/android/org/linphone/chat/ChatCreationFragment.java +++ b/src/android/org/linphone/chat/ChatCreationFragment.java @@ -45,6 +45,7 @@ import org.linphone.core.Address; import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoomListenerStub; import org.linphone.core.Core; +import org.linphone.core.ProxyConfig; import org.linphone.mediastream.Log; import org.linphone.ui.ContactSelectView; import org.linphone.contacts.ContactsUpdatedListener; @@ -336,9 +337,15 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen Address participant = mContactsSelected.get(0).getAddress(); ChatRoom chatRoom = lc.findOneToOneChatRoom(lc.getDefaultProxyConfig().getContact(), participant); if (chatRoom == null) { - mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); - mChatRoom.addListener(mChatRoomCreationListener); - mChatRoom.addParticipant(participant); + ProxyConfig lpc = lc.getDefaultProxyConfig(); + if (lpc != null && lpc.getConferenceFactoryUri() != null) { + chatRoom = lc.getChatRoom(participant); + LinphoneActivity.instance().goToChat(chatRoom.getPeerAddress().asStringUriOnly()); + } else { + mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); + mChatRoom.addListener(mChatRoomCreationListener); + mChatRoom.addParticipant(participant); + } } else { LinphoneActivity.instance().goToChat(chatRoom.getPeerAddress().asStringUriOnly()); } @@ -361,7 +368,14 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { ContactAddress ca = mSearchAdapter.getContacts().get(i); - removeContactFromSelection(ca); + Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + ProxyConfig lpc = lc.getDefaultProxyConfig(); + if (lpc == null || lpc.getConferenceFactoryUri() == null) { + ChatRoom chatRoom = lc.getChatRoom(ca.getAddress()); + LinphoneActivity.instance().goToChat(chatRoom.getPeerAddress().asStringUriOnly()); + } else { + removeContactFromSelection(ca); + } } @Override diff --git a/src/android/org/linphone/contacts/ContactDetailsFragment.java b/src/android/org/linphone/contacts/ContactDetailsFragment.java index b33d5e16c..1a36353af 100644 --- a/src/android/org/linphone/contacts/ContactDetailsFragment.java +++ b/src/android/org/linphone/contacts/ContactDetailsFragment.java @@ -78,10 +78,16 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener if (room != null) { LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly()); } else { - mWaitLayout.setVisibility(View.VISIBLE); - mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); - mChatRoom.addListener(mChatRoomCreationListener); - mChatRoom.addParticipant(participant); + ProxyConfig lpc = lc.getDefaultProxyConfig(); + if (lpc != null && lpc.getConferenceFactoryUri() != null) { + room = lc.getChatRoom(participant); + LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly()); + } else { + mWaitLayout.setVisibility(View.VISIBLE); + mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); + mChatRoom.addListener(mChatRoomCreationListener); + mChatRoom.addParticipant(participant); + } } } } diff --git a/src/android/org/linphone/fragments/HistoryDetailFragment.java b/src/android/org/linphone/fragments/HistoryDetailFragment.java index ed0033e46..b7c10e17e 100644 --- a/src/android/org/linphone/fragments/HistoryDetailFragment.java +++ b/src/android/org/linphone/fragments/HistoryDetailFragment.java @@ -41,6 +41,7 @@ import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoomListenerStub; import org.linphone.core.Core; import org.linphone.core.Factory; +import org.linphone.core.ProxyConfig; import org.linphone.mediastream.Log; public class HistoryDetailFragment extends Fragment implements OnClickListener { @@ -199,10 +200,16 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { if (room != null) { LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly()); } else { - mWaitLayout.setVisibility(View.VISIBLE); - mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); - mChatRoom.addListener(mChatRoomCreationListener); - mChatRoom.addParticipant(participant); + ProxyConfig lpc = lc.getDefaultProxyConfig(); + if (lpc != null && lpc.getConferenceFactoryUri() != null) { + room = lc.getChatRoom(participant); + LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly()); + } else { + mWaitLayout.setVisibility(View.VISIBLE); + mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject)); + mChatRoom.addListener(mChatRoomCreationListener); + mChatRoom.addParticipant(participant); + } } } else if (id == R.id.add_contact) { Address addr = Factory.instance().createAddress(sipUri);