From 7a6dda041f70df66af3cbafd4646fb3eb0556a2b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 17:10:39 +0100 Subject: [PATCH] Ignore Launcher intent (was printing a warning). --- .../element/android/appnav/intent/IntentResolver.kt | 7 +++++++ .../android/appnav/intent/IntentResolverTest.kt | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/intent/IntentResolver.kt b/appnav/src/main/kotlin/io/element/android/appnav/intent/IntentResolver.kt index b567395c1e..96febc3751 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/intent/IntentResolver.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/intent/IntentResolver.kt @@ -34,6 +34,8 @@ class IntentResolver @Inject constructor( private val oidcIntentResolver: OidcIntentResolver ) { fun resolve(intent: Intent): ResolvedIntent? { + if (intent.canBeIgnored()) return null + val deepLinkData = deeplinkParser.getFromIntent(intent) if (deepLinkData != null) return ResolvedIntent.Navigation(deepLinkData) @@ -45,3 +47,8 @@ class IntentResolver @Inject constructor( return null } } + +private fun Intent.canBeIgnored(): Boolean { + return action == Intent.ACTION_MAIN && + categories?.contains(Intent.CATEGORY_LAUNCHER) == true +} diff --git a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt index c2a4bcbd3a..3ad11787df 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/intent/IntentResolverTest.kt @@ -37,6 +37,17 @@ import org.robolectric.RuntimeEnvironment @RunWith(RobolectricTestRunner::class) class IntentResolverTest { + @Test + fun `resolve launcher intent should return null`() { + val sut = createIntentResolver() + val intent = Intent(RuntimeEnvironment.getApplication(), Activity::class.java).apply { + action = Intent.ACTION_MAIN + addCategory(Intent.CATEGORY_LAUNCHER) + } + val result = sut.resolve(intent) + assertThat(result).isNull() + } + @Test fun `test resolve navigation intent root`() { val sut = createIntentResolver()