From a757b097faa95b6d037b9185c8d672cd6cc97760 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 2 Feb 2021 11:55:48 +0100 Subject: [PATCH] Added use of LocusId to conversations notifications & shortcuts --- app/build.gradle | 6 +++--- app/src/main/AndroidManifest.xml | 4 ++++ .../linphone/activities/main/MainActivity.kt | 18 +++++++++++++++++ .../chat/fragments/DetailChatRoomFragment.kt | 8 +++++++- .../compatibility/Api29Compatibility.kt | 20 +++++++++++++++++++ .../compatibility/Api30Compatibility.kt | 4 +++- .../linphone/compatibility/Compatibility.kt | 15 ++++++++++++++ .../notifications/NotificationsManager.kt | 13 +++++++----- .../java/org/linphone/utils/LinphoneUtils.kt | 5 ++++- .../org/linphone/utils/ShortcutsHelper.kt | 5 ++++- 10 files changed, 86 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6d2a2dd79..e12ebdbc8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -185,7 +185,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.media:media:1.2.0' implementation 'androidx.fragment:fragment-ktx:1.2.5' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.core:core-ktx:1.5.0-beta01' implementation 'androidx.navigation:navigation-fragment-ktx:2.3.2' implementation 'androidx.navigation:navigation-ui-ktx:2.3.2' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' @@ -199,8 +199,8 @@ dependencies { implementation 'androidx.emoji:emoji:1.1.0' implementation 'androidx.emoji:emoji-bundled:1.1.0' - implementation 'com.github.bumptech.glide:glide:4.11.0' - kapt 'com.github.bumptech.glide:compiler:4.11.0' + implementation 'com.github.bumptech.glide:glide:4.12.0' + kapt 'com.github.bumptech.glide:compiler:4.12.0' if (firebaseEnabled()) { implementation 'com.google.firebase:firebase-messaging:19.0.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa31d6ff7..1cb580d2a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,6 +52,10 @@ android:windowSoftInputMode="adjustResize"> + + + + 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 c83af23cd..3f3f44d19 100644 --- a/app/src/main/java/org/linphone/activities/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/activities/main/MainActivity.kt @@ -211,6 +211,11 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin handleTelOrSipUri(uri) } } + Intent.ACTION_VIEW_LOCUS -> { + if (corePreferences.disableChat) return + val locus = Compatibility.extractLocusIdFromIntent(intent) + if (locus != null) handleLocus(locus) + } else -> { when { intent.hasExtra("ContactId") -> { @@ -365,4 +370,17 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin findNavController(R.id.nav_host_fragment).navigate(Uri.parse(deepLink)) } } + + private fun handleLocus(id: String) { + Log.i("[Main Activity] Found chat room locus intent extra: $id") + val split = id.split("~") + if (split.size == 2) { + val localAddress = split[0] + val peerAddress = split[1] + val deepLink = "linphone-android://chat-room/$localAddress/$peerAddress" + findNavController(R.id.nav_host_fragment).navigate(Uri.parse(deepLink)) + } else { + Log.e("[Main Activity] Failed to parse locus id: $id") + } + } } diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 1a2f7386e..dbd28774d 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -50,6 +50,7 @@ import org.linphone.activities.main.chat.viewmodels.* import org.linphone.activities.main.fragments.MasterFragment import org.linphone.activities.main.viewmodels.DialogViewModel import org.linphone.activities.main.viewmodels.SharedMainViewModel +import org.linphone.compatibility.Compatibility import org.linphone.core.* import org.linphone.core.tools.Log import org.linphone.databinding.ChatRoomDetailFragmentBinding @@ -118,6 +119,8 @@ class DetailChatRoomFragment : MasterFragment