mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Refactor CustomTabsIntent creation
This commit is contained in:
		| @@ -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 { | ||||
|   | ||||
| @@ -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) | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user