@ -1,6 +1,7 @@
package com.gh.gamecenter.common.utils
import android.animation.Animator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
@ -331,7 +332,8 @@ fun Fragment.ifLogin(entrance: String, action: (() -> Unit)? = null) {
}
fun Context . ifLogin ( entrance : String , action : ( ( ) -> Unit ) ? = null ) {
val checkLoginConfig = ARouter . getInstance ( ) . build ( RouteConsts . provider . checkLogin ) . navigation ( ) as ? ICheckLoginProvider
val checkLoginConfig =
ARouter . getInstance ( ) . build ( RouteConsts . provider . checkLogin ) . navigation ( ) as ? ICheckLoginProvider
checkLoginConfig ?. checkLogin ( this , entrance , action )
}
@ -379,8 +381,10 @@ fun String.containHtmlTag(): Boolean {
*/
fun Fragment . showRegulationTestDialogIfNeeded ( action : ( ( ) -> Unit ) ) {
val provider = ARouter . getInstance ( ) . build ( RouteConsts . provider . directUtils ) . navigation ( ) as ? IDirectProvider
val userManagerProvider = ARouter . getInstance ( ) . build ( RouteConsts . provider . userManager ) . navigation ( ) as ? IUserManagerProvider
val dialogUtils = ARouter . getInstance ( ) . build ( RouteConsts . provider . dialogUtils ) . navigation ( ) as ? IDialogUtils Provider
val userManagerProvider =
ARouter . getInstance ( ) . build ( RouteConsts . provider . userManager ) . navigation ( ) as ? IUserManager Provider
val dialogUtils =
ARouter . getInstance ( ) . build ( RouteConsts . provider . dialogUtils ) . navigation ( ) as ? IDialogUtilsProvider
if ( userManagerProvider ?. userShouldTakeRegulationBaseOnLastRemind ( ) == true ) {
dialogUtils ?. showRegulationTestDialog ( requireContext ( ) ,
{ provider ?. directToRegulationTestPage ( requireContext ( ) ) } ,
@ -392,8 +396,10 @@ fun Fragment.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
fun Context . showRegulationTestDialogIfNeeded ( action : ( ( ) -> Unit ) ) {
val provider = ARouter . getInstance ( ) . build ( RouteConsts . provider . directUtils ) . navigation ( ) as ? IDirectProvider
val userManagerProvider = ARouter . getInstance ( ) . build ( RouteConsts . provider . userManager ) . navigation ( ) as ? IUserManagerProvider
val dialogUtils = ARouter . getInstance ( ) . build ( RouteConsts . provider . dialogUtils ) . navigation ( ) as ? IDialogUtils Provider
val userManagerProvider =
ARouter . getInstance ( ) . build ( RouteConsts . provider . userManager ) . navigation ( ) as ? IUserManager Provider
val dialogUtils =
ARouter . getInstance ( ) . build ( RouteConsts . provider . dialogUtils ) . navigation ( ) as ? IDialogUtilsProvider
if ( userManagerProvider ?. userShouldTakeRegulationBaseOnLastRemind ( ) == true ) {
dialogUtils ?. showRegulationTestDialog ( this ,
{ provider ?. directToRegulationTestPage ( this ) } ,
@ -864,8 +870,10 @@ fun CharSequence.interceptUrlSpanAndRoundImageSpan(clickedCallback: ((url: Strin
override fun onClick ( widget : View ) {
clickedCallback ?. invoke ( it . url )
val webActivityProvider = ARouter . getInstance ( ) . build ( RouteConsts . provider . webActivity ) . navigation ( ) as ? IWebProvider
val provider = ARouter . getInstance ( ) . build ( RouteConsts . provider . defaultUrlHandler ) . navigation ( ) as IDefaultUrlHandler Provider
val webActivityProvider =
ARouter . getInstance ( ) . build ( RouteConsts . provider . webActivity ) . navigation ( ) as ? IWeb Provider
val provider = ARouter . getInstance ( ) . build ( RouteConsts . provider . defaultUrlHandler )
. navigation ( ) as IDefaultUrlHandlerProvider
if ( ! provider . interceptUrl ( widget . context , it . url , " " ) ) {
webActivityProvider ?. getIntent ( widget . context , it . url , true ) ?. run {
widget . context . startActivity ( this )
@ -992,8 +1000,10 @@ fun Context.doOnMainProcessOnly(callback: EmptyCallback) {
* 虽然现在我们没有了友盟以后只是单进程APP, 但在 debug 模式下还有 whatTheStack 这个进程如果不限定主进程会出现奇奇怪怪的问题 (BroadcastReceiver相关)
*/
inline fun Context . doOnMainProcessOnly ( f : ( ) -> Unit ) {
val buildConfig = ARouter . getInstance ( ) . build ( RouteConsts . provider . buildConfig ) . navigation ( ) as ? IBuildConfigProvider
val packageUtilsConfig = ARouter . getInstance ( ) . build ( RouteConsts . provider . packageUtils ) . navigation ( ) as ? IPackageUtils Provider
val buildConfig =
ARouter . getInstance ( ) . build ( RouteConsts . provider . buildConfig ) . navigation ( ) as ? IBuildConfig Provider
val packageUtilsConfig =
ARouter . getInstance ( ) . build ( RouteConsts . provider . packageUtils ) . navigation ( ) as ? IPackageUtilsProvider
val processName = packageUtilsConfig ?. obtainProcessName ( this )
if ( processName == null || buildConfig ?. getApplicationId ( ) == processName ) {
f . invoke ( )
@ -1005,8 +1015,10 @@ inline fun Context.doOnMainProcessOnly(f: () -> Unit) {
}
inline fun doOnMainProcessOnly ( f : ( ) -> Unit ) {
val buildConfig = ARouter . getInstance ( ) . build ( RouteConsts . provider . buildConfig ) . navigation ( ) as ? IBuildConfigProvider
val packageUtilsConfig = ARouter . getInstance ( ) . build ( RouteConsts . provider . packageUtils ) . navigation ( ) as ? IPackageUtils Provider
val buildConfig =
ARouter . getInstance ( ) . build ( RouteConsts . provider . buildConfig ) . navigation ( ) as ? IBuildConfig Provider
val packageUtilsConfig =
ARouter . getInstance ( ) . build ( RouteConsts . provider . packageUtils ) . navigation ( ) as ? IPackageUtilsProvider
val processName = packageUtilsConfig ?. obtainProcessName ( HaloApp . getInstance ( ) )
if ( processName == null || buildConfig ?. getApplicationId ( ) == processName ) {
f . invoke ( )
@ -1251,9 +1263,19 @@ fun String.emojiCount(): Int {
/**
* WebView启用强制深色模式
*/
@SuppressLint ( " RequiresFeature " )
fun WebView . enableForceDark ( isDarkModeOn : Boolean ) {
if ( BuildConfig . IS _DARK _MODE _ON && WebViewFeature . isFeatureSupported ( WebViewFeature . FORCE _DARK ) ) {
WebSettingsCompat . setForceDark ( settings , if ( isDarkModeOn ) WebSettingsCompat . FORCE _DARK _ON else WebSettingsCompat . FORCE _DARK _OFF )
val isFeatureSupported = try {
WebViewFeature . isFeatureSupported ( WebViewFeature . FORCE _DARK )
} catch ( throwable : Throwable ) {
throwable . printStackTrace ( )
false
}
if ( BuildConfig . IS _DARK _MODE _ON && isFeatureSupported ) {
WebSettingsCompat . setForceDark (
settings ,
if ( isDarkModeOn ) WebSettingsCompat . FORCE _DARK _ON else WebSettingsCompat . FORCE _DARK _OFF
)
}
}