diff --git a/app/build.gradle b/app/build.gradle index 8ea052f08..c878aea7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -100,7 +100,7 @@ android { defaultConfig { minSdkVersion 23 targetSdkVersion 29 - versionCode 4319 + versionCode 4320 versionName "${project.version}" applicationId getPackageName() multiDexEnabled true diff --git a/app/src/main/java/org/linphone/chat/ChatActivity.java b/app/src/main/java/org/linphone/chat/ChatActivity.java index 9646da8bc..56c494edc 100644 --- a/app/src/main/java/org/linphone/chat/ChatActivity.java +++ b/app/src/main/java/org/linphone/chat/ChatActivity.java @@ -297,6 +297,7 @@ public class ChatActivity extends MainActivity { public void showChatRoomGroupInfo( Address peerAddress, + Address localAddress, ArrayList participants, String subject, boolean encrypted) { @@ -304,6 +305,9 @@ public class ChatActivity extends MainActivity { if (peerAddress != null) { extras.putSerializable("RemoteSipUri", peerAddress.asStringUriOnly()); } + if (localAddress != null) { + extras.putSerializable("LocalSipUri", localAddress.asStringUriOnly()); + } extras.putSerializable("Participants", participants); extras.putString("Subject", subject); extras.putBoolean("Encrypted", encrypted); @@ -313,11 +317,14 @@ public class ChatActivity extends MainActivity { changeFragment(fragment, "Chat room group info", true); } - public void showChatRoomEphemeral(Address peerAddress) { + public void showChatRoomEphemeral(Address peerAddress, Address localAddress) { Bundle extras = new Bundle(); if (peerAddress != null) { extras.putSerializable("RemoteSipUri", peerAddress.asStringUriOnly()); } + if (localAddress != null) { + extras.putSerializable("LocalSipUri", localAddress.asStringUriOnly()); + } EphemeralFragment fragment = new EphemeralFragment(); fragment.setArguments(extras); changeFragment(fragment, "Chat room ephemeral", true); diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index ee6d2c735..440f85b6d 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -1215,12 +1215,16 @@ public class ChatMessagesFragment extends Fragment boolean encrypted = mChatRoom.hasCapability(ChatRoomCapabilities.Encrypted.toInt()); ((ChatActivity) getActivity()) .showChatRoomGroupInfo( - mRemoteSipAddress, participants, mChatRoom.getSubject(), encrypted); + mRemoteSipAddress, + mLocalSipAddress, + participants, + mChatRoom.getSubject(), + encrypted); } private void goToEphemeral() { if (mChatRoom == null) return; - ((ChatActivity) getActivity()).showChatRoomEphemeral(mRemoteSipAddress); + ((ChatActivity) getActivity()).showChatRoomEphemeral(mRemoteSipAddress, mLocalSipAddress); } /* diff --git a/app/src/main/java/org/linphone/chat/ChatRoomCreationFragment.java b/app/src/main/java/org/linphone/chat/ChatRoomCreationFragment.java index bce06962a..190ee1476 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomCreationFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomCreationFragment.java @@ -154,6 +154,7 @@ public class ChatRoomCreationFragment extends Fragment ? null : Factory.instance() .createAddress(mChatRoomAddress), + mChatRoom == null ? null : mChatRoom.getLocalAddress(), mSearchAdapter.getContactsSelectedList(), mChatRoomSubject, mSecurityToggle.isChecked()); diff --git a/app/src/main/java/org/linphone/chat/EphemeralFragment.java b/app/src/main/java/org/linphone/chat/EphemeralFragment.java index 8f5553671..ef9a3906b 100644 --- a/app/src/main/java/org/linphone/chat/EphemeralFragment.java +++ b/app/src/main/java/org/linphone/chat/EphemeralFragment.java @@ -58,12 +58,14 @@ public class EphemeralFragment extends Fragment { String address = getArguments().getString("RemoteSipUri"); Address peerAddress = null; + String localSipUri = getArguments().getString("LocalSipUri"); + Address localSipAddress = Factory.instance().createAddress(localSipUri); mChatRoom = null; if (address != null && address.length() > 0) { peerAddress = Factory.instance().createAddress(address); } if (peerAddress != null) { - mChatRoom = LinphoneManager.getCore().getChatRoom(peerAddress); + mChatRoom = LinphoneManager.getCore().getChatRoom(peerAddress, localSipAddress); } if (mChatRoom == null) { return null; diff --git a/app/src/main/java/org/linphone/chat/GroupInfoFragment.java b/app/src/main/java/org/linphone/chat/GroupInfoFragment.java index 331200c2d..127fde021 100644 --- a/app/src/main/java/org/linphone/chat/GroupInfoFragment.java +++ b/app/src/main/java/org/linphone/chat/GroupInfoFragment.java @@ -95,9 +95,16 @@ public class GroupInfoFragment extends Fragment { mGroupChatRoomAddress = Factory.instance().createAddress(address); } + Address localSipAddress = null; + String localSipUri = getArguments().getString("LocalSipUri"); + if (localSipUri != null && localSipUri.length() > 0) { + localSipAddress = Factory.instance().createAddress(localSipUri); + } + mIsAlreadyCreatedGroup = mGroupChatRoomAddress != null; if (mIsAlreadyCreatedGroup) { - mChatRoom = LinphoneManager.getCore().getChatRoom(mGroupChatRoomAddress); + mChatRoom = + LinphoneManager.getCore().getChatRoom(mGroupChatRoomAddress, localSipAddress); } if (mChatRoom == null) {