Skip to content

Commit 9d5b72d

Browse files
authored
Remove custom link launcher logic (#965)
1 parent a6dc4f2 commit 9d5b72d

File tree

3 files changed

+8
-39
lines changed

3 files changed

+8
-39
lines changed

feature/chrome-custom-tabs/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ dependencies {
1919
kapt daggerAnnotationProcessor
2020
implementation 'androidx.browser:browser:1.6.0'
2121
implementation 'androidx.core:core:1.12.0'
22-
implementation 'com.jakewharton.timber:timber:5.0.1'
2322

2423
testImplementation 'junit:junit:4.13.2'
2524
}
Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,19 @@
11
package com.jraska.github.client.chrome
22

3-
import android.content.pm.PackageManager
43
import android.net.Uri
54
import androidx.browser.customtabs.CustomTabsIntent
65
import com.jraska.github.client.WebLinkLauncher
76
import com.jraska.github.client.core.android.TopActivityProvider
87
import okhttp3.HttpUrl
9-
import timber.log.Timber
8+
import javax.inject.Inject
109

11-
private const val CHROME_BROWSER_PACKAGE = "com.android.chrome"
12-
13-
internal class ChromeCustomTabsLauncher(
14-
private val provider: TopActivityProvider, private val packageManager: PackageManager
10+
internal class ChromeCustomTabsLauncher @Inject constructor(
11+
private val provider: TopActivityProvider,
1512
) : WebLinkLauncher {
1613
override fun launchOnWeb(url: HttpUrl) {
1714
val uri = Uri.parse(url.toString())
18-
19-
val customTabsIntent = prepareIntent(uri)
20-
provider.onTopActivity { customTabsIntent.launchUrl(it, uri) }
21-
}
22-
23-
private fun prepareIntent(uri: Uri): CustomTabsIntent {
2415
val customTabsIntent = CustomTabsIntent.Builder().build()
25-
customTabsIntent.intent.data = uri
26-
27-
val browsersToHandler = packageManager.queryIntentActivities(customTabsIntent.intent, 0)
28-
return when (browsersToHandler.size) {
29-
0 -> {
30-
Timber.e("No apps found for uri: %s", uri)
31-
customTabsIntent
32-
}
3316

34-
1 -> customTabsIntent
35-
else -> {
36-
val chromeAvailable =
37-
null != browsersToHandler.find { it.activityInfo?.packageName == CHROME_BROWSER_PACKAGE }
38-
if (chromeAvailable) {
39-
customTabsIntent.intent.`package` = CHROME_BROWSER_PACKAGE
40-
}
41-
customTabsIntent
42-
}
43-
}
17+
provider.onTopActivity { customTabsIntent.launchUrl(it, uri) }
4418
}
4519
}
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package com.jraska.github.client.chrome
22

3-
import android.content.Context
43
import com.jraska.github.client.WebLinkLauncher
5-
import com.jraska.github.client.core.android.TopActivityProvider
4+
import dagger.Binds
65
import dagger.Module
7-
import dagger.Provides
86

97
@Module
10-
object ChromeCustomTabsModule {
8+
abstract class ChromeCustomTabsModule {
119

12-
@Provides
13-
fun webLinkLauncher(provider: TopActivityProvider, context: Context): WebLinkLauncher {
14-
return ChromeCustomTabsLauncher(provider, context.packageManager)
15-
}
10+
@Binds
11+
internal abstract fun webLinkLauncher(launcher: ChromeCustomTabsLauncher): WebLinkLauncher
1612
}

0 commit comments

Comments
 (0)