From adffb08cd0cdc9709e344e79bfe8276545b0235f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 3 Jul 2020 18:10:40 +0200 Subject: [PATCH] Fixes related to chat rooms --- .../org/linphone/activities/main/MainActivity.kt | 2 +- .../main/chat/fragments/MasterChatRoomsFragment.kt | 2 +- .../chat/viewmodels/ChatRoomCreationViewModel.kt | 2 +- .../main/contact/viewmodels/ContactViewModel.kt | 1 + .../main/history/viewmodels/CallLogViewModel.kt | 1 + .../notifications/NotificationBroadcastReceiver.kt | 2 +- .../main/java/org/linphone/utils/LinphoneUtils.kt | 13 ++++++++----- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/MainActivity.kt b/app/src/main/java/org/linphone/activities/main/MainActivity.kt index d83af6f83..80ea6e0d1 100644 --- a/app/src/main/java/org/linphone/activities/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/activities/main/MainActivity.kt @@ -306,7 +306,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin val peerAddress = coreContext.core.interpretUrl(addressToIM)?.asStringUriOnly() val localAddress = - coreContext.core.defaultProxyConfig?.identityAddress?.asStringUriOnly() + coreContext.core.defaultProxyConfig?.contact?.asStringUriOnly() val deepLink = "linphone-android://chat-room/$localAddress/$peerAddress" Log.i("[Main Activity] Starting deep link: $deepLink") findNavController(R.id.nav_host_fragment).navigate(Uri.parse(deepLink)) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt index c39420f2d..b3d73a40e 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt @@ -202,7 +202,7 @@ class MasterChatRoomsFragment : MasterFragment() { arguments?.clear() val localAddress = Factory.instance().createAddress(localSipUri) val remoteSipAddress = Factory.instance().createAddress(remoteSipUri) - val chatRoom = coreContext.core.searchChatRoom(null, localAddress, arrayOf(remoteSipAddress)) + val chatRoom = coreContext.core.searchChatRoom(null, localAddress, remoteSipAddress, arrayOfNulls(0)) if (chatRoom != null) { Log.i("[Chat] Found matching chat room $chatRoom") chatRoom.markAsRead() diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt index 7542372d6..a3fc716c7 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt @@ -168,7 +168,7 @@ class ChatRoomCreationViewModel : ErrorReportingViewModel() { val participants = arrayOf(searchResult.address) // Use proxy config contact instead of identity because we need GRUU if FlexisipChat backend - room = coreContext.core.searchChatRoom(params, defaultProxyConfig.contact, participants) + room = coreContext.core.searchChatRoom(params, defaultProxyConfig.contact, null, participants) if (room == null) { Log.w("[Chat Room Creation] Couldn't find existing 1-1 chat room with remote ${searchResult.address.asStringUriOnly()}, encryption=$encrypted and local identity ${defaultProxyConfig.contact.asStringUriOnly()}") // Use proxy config contact instead of identity because we need GRUU if FlexisipChat backend diff --git a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt index bb9d7ba76..d79eeb2e1 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt @@ -111,6 +111,7 @@ class ContactViewModel(private val c: Contact) : ErrorReportingViewModel(), Cont } else { waitForChatRoomCreation.value = false Log.e("[Contact Detail] Couldn't create chat room with address $address") + onErrorEvent.value = Event(R.string.chat_room_creation_failed_snack) } } diff --git a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt index 0b972a90f..f9cd0bebd 100644 --- a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt @@ -142,6 +142,7 @@ class CallLogViewModel(val callLog: CallLog) : GenericContactViewModel(callLog.r } else { waitForChatRoomCreation.value = false Log.e("[History Detail] Couldn't create chat room with address ${callLog.remoteAddress}") + onErrorEvent.value = Event(R.string.chat_room_creation_failed_snack) } } diff --git a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt index 5e9795342..772855e9e 100644 --- a/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt +++ b/app/src/main/java/org/linphone/notifications/NotificationBroadcastReceiver.kt @@ -49,7 +49,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { return } - val room = core.searchChatRoom(null, localAddress, arrayOf(remoteAddress)) + val room = core.searchChatRoom(null, localAddress, remoteAddress, arrayOfNulls(0)) if (room == null) { Log.e("[Notification Broadcast Receiver] Couldn't find chat room for remote address $remoteSipAddress and local address $localIdentity") return diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 4cb630875..1969575af 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -55,15 +55,18 @@ class LinphoneUtils { val defaultProxyConfig = core.defaultProxyConfig val params = core.createDefaultChatRoomParams() - params.enableEncryption(isSecured) params.enableGroup(false) - params.backend = if (isSecured) ChatRoomBackend.FlexisipChat else ChatRoomBackend.Basic - params.subject = AppUtils.getString(R.string.chat_room_dummy_subject) + params.backend = ChatRoomBackend.Basic + if (isSecured) { + params.subject = AppUtils.getString(R.string.chat_room_dummy_subject) + params.enableEncryption(true) + params.backend = ChatRoomBackend.FlexisipChat + } val participants = arrayOf(participant) - return core.searchChatRoom(params, defaultProxyConfig?.identityAddress, participants) - ?: core.createChatRoom(params, defaultProxyConfig?.identityAddress, participants) + return core.searchChatRoom(params, defaultProxyConfig?.contact, null, participants) + ?: core.createChatRoom(params, defaultProxyConfig?.contact, participants) } fun deleteFilesAttachedToEventLog(eventLog: EventLog) {