From 2cc2a90941bf36a937226e7a6983dd6be22ba4b5 Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 13 Dec 2020 22:30:27 -0500 Subject: [PATCH] Refactor CustomTabsIntent creation --- .../ui/setting/SettingsTrackingController.kt | 27 +++++++------------ .../util/system/ContextExtensions.kt | 17 +++++++++--- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt index 315e117e41..7875658801 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.setting import android.app.Activity import android.content.Intent -import androidx.browser.customtabs.CustomTabsIntent import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.track.TrackManager @@ -20,7 +19,7 @@ import eu.kanade.tachiyomi.util.preference.onClick import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes -import eu.kanade.tachiyomi.util.system.getResourceColor +import eu.kanade.tachiyomi.util.system.openInBrowser import eu.kanade.tachiyomi.widget.preference.LoginPreference import uy.kohesive.injekt.injectLazy import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys @@ -47,11 +46,9 @@ class SettingsTrackingController : startActivity(MyAnimeListLoginActivity.newIntent(activity!!)) } trackPreference(trackManager.aniList) { - val tabsIntent = CustomTabsIntent.Builder() - .setToolbarColor(context.getResourceColor(R.attr.colorPrimary)) - .build() - tabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) - tabsIntent.launchUrl(activity!!, AnilistApi.authUrl()) + activity?.openInBrowser(AnilistApi.authUrl(), trackManager.aniList.getLogoColor()) { + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + } } trackPreference(trackManager.kitsu) { val dialog = TrackLoginDialog(trackManager.kitsu, R.string.email) @@ -59,18 +56,14 @@ class SettingsTrackingController : dialog.showDialog(router) } trackPreference(trackManager.shikimori) { - val tabsIntent = CustomTabsIntent.Builder() - .setToolbarColor(context.getResourceColor(R.attr.colorPrimary)) - .build() - tabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) - tabsIntent.launchUrl(activity!!, ShikimoriApi.authUrl()) + activity?.openInBrowser(ShikimoriApi.authUrl(), trackManager.shikimori.getLogoColor()) { + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + } } trackPreference(trackManager.bangumi) { - val tabsIntent = CustomTabsIntent.Builder() - .setToolbarColor(context.getResourceColor(R.attr.colorPrimary)) - .build() - tabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) - tabsIntent.launchUrl(activity!!, BangumiApi.authUrl()) + activity?.openInBrowser(BangumiApi.authUrl(), trackManager.bangumi.getLogoColor()) { + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + } } } preferenceCategory { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 6d2ff415e1..ed72751704 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -13,12 +13,14 @@ import android.content.pm.PackageManager import android.content.res.Resources import android.graphics.Color import android.net.ConnectivityManager +import android.net.Uri import android.os.PowerManager import android.view.View import android.widget.Toast import androidx.annotation.AttrRes import androidx.annotation.ColorInt import androidx.annotation.StringRes +import androidx.browser.customtabs.CustomTabColorSchemeParams import androidx.browser.customtabs.CustomTabsIntent import androidx.core.app.NotificationCompat import androidx.core.content.ContextCompat @@ -224,12 +226,21 @@ fun Context.isServiceRunning(serviceClass: Class<*>): Boolean { /** * Opens a URL in a custom tab. */ -fun Context.openInBrowser(url: String) { +fun Context.openInBrowser(url: String, @ColorInt toolbarColor: Int? = null, block: CustomTabsIntent.() -> Unit = {}) { + this.openInBrowser(url.toUri(), toolbarColor, block) +} + +fun Context.openInBrowser(uri: Uri, @ColorInt toolbarColor: Int? = null, block: CustomTabsIntent.() -> Unit = {}) { try { val intent = CustomTabsIntent.Builder() - .setToolbarColor(getResourceColor(R.attr.colorPrimary)) + .setDefaultColorSchemeParams( + CustomTabColorSchemeParams.Builder() + .setToolbarColor(toolbarColor ?: getResourceColor(R.attr.colorPrimary)) + .build() + ) .build() - intent.launchUrl(this, url.toUri()) + block(intent) + intent.launchUrl(this, uri) } catch (e: Exception) { toast(e.message) }