diff --git a/app/build.gradle b/app/build.gradle index 6b6387fefb..99d4f9baf5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,9 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' // kotlin apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' apply plugin: 'kotlin-kapt' +apply plugin: 'therouter' import groovy.xml.XmlUtil @@ -51,6 +53,10 @@ android { } } + ksp { + arg("ROUTER_MODULE_NAME", project.getName()) + } + defaultConfig { vectorDrawables.useSupportLibrary = true multiDexEnabled true @@ -123,12 +129,6 @@ android { } } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - packagingOptions { // exclude 部分冗余的文件 exclude 'META-INF/gradle/incremental.annotation.processors' @@ -372,13 +372,15 @@ dependencies { // debugImplementation "com.gu.android:toolargetool:${toolargetool}" // 需要使用调试时才启用 debugImplementation "com.github.nichbar:WhatTheStack:${whatTheStack}" + ksp project(":feature:route_doc") + implementation "androidx.multidex:multidex:${multiDex}" implementation "androidx.fragment:fragment-ktx:${fragment}" implementation "androidx.annotation:annotation:${annotation}" implementation "androidx.viewpager2:viewpager2:${viewpager2}" - kapt "androidx.room:room-compiler:${room}" + ksp("androidx.room:room-compiler:${room}") implementation "com.tencent.vasdolly:helper:${apkChannelPackage}" implementation "com.tencent.vasdolly:writer:${apkChannelPackage}" @@ -428,7 +430,8 @@ dependencies { coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:${desugarJdkLibs}" - kapt "com.alibaba:arouter-compiler:$arouterVersion" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + ksp "cn.therouter:apt:${routerVersion}" implementation project(':ndownload') implementation project(':vspace-bridge:vspace') @@ -446,13 +449,13 @@ dependencies { exclude group: 'androidx.swiperefreshlayout' } - implementation(project(':module_setting')) { - exclude group: 'androidx.swiperefreshlayout' - } +// implementation(project(':module_setting')) { +// exclude group: 'androidx.swiperefreshlayout' +// } - // implementation(project(':module_setting_compose')) { - // exclude group: 'androidx.swiperefreshlayout' - // } + implementation(project(':module_setting_compose')) { + exclude group: 'androidx.swiperefreshlayout' + } if (!gradle.ext.excludeOptionalModules || gradle.ext.enablePkg) { implementation(project(':feature:pkg')) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 50de3686bd..426173fc14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -638,7 +638,7 @@ diff --git a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt index 6e55aa6755..6af1b8bf6f 100644 --- a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt +++ b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt @@ -12,7 +12,7 @@ import android.widget.FrameLayout import android.widget.TextView import androidx.appcompat.content.res.AppCompatResources import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.drawee.view.SimpleDraweeView import com.gh.common.exposure.ExposureManager import com.gh.common.util.DirectUtils.directToLinkPage @@ -94,8 +94,7 @@ object AdDelegateHelper { private fun initAdSdkInternal(context: Context) { // 初始化穿山甲 if (mCsjAdImpl == null) { - mCsjAdImpl = - ARouter.getInstance().build(RouteConsts.provider.csjAd).navigation() as? ICsjAdProvider + mCsjAdImpl = TheRouter.get(ICsjAdProvider::class.java) val csjAppId = if (EnvHelper.isDevEnv) BuildConfig.DEV_CSJ_APPID else BuildConfig.CSJ_APPID mCsjAdImpl?.initSDK(context, csjAppId, HaloApp.getInstance().oaid) // 监听亮色/暗色模式切换 diff --git a/app/src/main/java/com/gh/ad/LaunchAdImpl.kt b/app/src/main/java/com/gh/ad/LaunchAdImpl.kt index 2d7194a05e..0377b4ca87 100644 --- a/app/src/main/java/com/gh/ad/LaunchAdImpl.kt +++ b/app/src/main/java/com/gh/ad/LaunchAdImpl.kt @@ -1,13 +1,10 @@ package com.gh.ad -import android.content.Context import android.view.View import android.view.ViewGroup import android.view.ViewStub import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.provider.ILaunchAd import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.goneIf @@ -15,10 +12,8 @@ import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.entity.AdConfig -@Route(path = RouteConsts.provider.vaAd, name = "畅玩启动页广告") +@com.therouter.inject.ServiceProvider class LaunchAdImpl : ILaunchAd { - override fun init(context: Context?) { - } override fun requestAd(fragment: Fragment, container: ViewGroup, maskView: View, topViewStub: ViewStub, bottomViewStub: ViewStub, adClickAction: () -> Unit): View { if (AdDelegateHelper.shouldShowHelperLaunchAd()) { @@ -104,4 +99,4 @@ class LaunchAdImpl : ILaunchAd { companion object { private const val AD_PLACEMENT = "畅玩启动" } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt index f5b2721391..e6b9131f7f 100644 --- a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt +++ b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt @@ -4,7 +4,7 @@ import android.app.Activity import android.app.Application import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.ad.AdDelegateHelper import com.gh.common.util.FloatingBackViewManager import com.gh.common.xapk.XapkInstaller @@ -53,7 +53,7 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { if (GlobalActivityManager.activityCount == 1) { // 清除桌面角标 if (activity !is SplashScreenActivity && activity !is AuthorizationActivity) { - val pushProvider = ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider + val pushProvider = TheRouter.get(IPushProvider::class.java) pushProvider?.cleanBadgeNumber(activity.applicationContext) } } @@ -126,9 +126,7 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { } private fun isSuggestionActivity(activity: Activity): Boolean { - val helpAndFeedbackProvider = - ARouter.getInstance().build(RouteConsts.provider.helpAndFeedback) - .navigation() as? IHelpAndFeedbackProvider + val helpAndFeedbackProvider = TheRouter.get(IHelpAndFeedbackProvider::class.java) return helpAndFeedbackProvider?.isSuggestionActivity(activity) ?: false } diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index 022bf274d2..185e12e8fe 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -11,7 +11,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentManager -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.exposure.ExposureManager import com.gh.common.util.* import com.gh.common.util.LogUtils @@ -345,7 +345,7 @@ class DefaultJsApi( @JavascriptInterface fun getPushId(): String { - val pushProvider = ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider + val pushProvider = TheRouter.get(IPushProvider::class.java) return pushProvider?.getRegistrationId(HaloApp.getInstance()) ?: "unknown" } @@ -424,8 +424,7 @@ class DefaultJsApi( @JavascriptInterface fun showQaFeedbackDialog(msg: Any) { - val mHelpAndFeedbackHelp = - ARouter.getInstance().build(RouteConsts.provider.helpAndFeedback).navigation() as? IHelpAndFeedbackProvider + val mHelpAndFeedbackHelp = TheRouter.get(IHelpAndFeedbackProvider::class.java) mHelpAndFeedbackHelp?.showQaFeedbackDialogFragment(context as AppCompatActivity, msg.toString()) } diff --git a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt index 05e91ede9f..273759932a 100644 --- a/app/src/main/java/com/gh/common/DefaultUrlHandler.kt +++ b/app/src/main/java/com/gh/common/DefaultUrlHandler.kt @@ -15,6 +15,7 @@ import com.gh.common.util.DirectUtils.directToLegacyVideoDetail import com.gh.common.util.DirectUtils.directToLinkPage import com.gh.common.util.DirectUtils.directToQa import com.gh.common.util.PackageUtils +import com.gh.gamecenter.SkipCompatActivity import com.gh.gamecenter.WebActivity import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts @@ -66,6 +67,10 @@ object DefaultUrlHandler { bringAppToFront: Boolean = false, sourceEntrance: String = ""): Boolean { val uri = Uri.parse(url) + + // 优先交给新的路由拦截处理 + if (SkipCompatActivity.handleSkip(context, uri)) return true + if ("ghzhushou" == uri.scheme) { Utils.log("url = $url") Utils.log("url = " + uri.scheme!!) diff --git a/app/src/main/java/com/gh/common/prioritychain/AccelerateNotificationHandler.kt b/app/src/main/java/com/gh/common/prioritychain/AccelerateNotificationHandler.kt index 43b209c43e..fc30202743 100644 --- a/app/src/main/java/com/gh/common/prioritychain/AccelerateNotificationHandler.kt +++ b/app/src/main/java/com/gh/common/prioritychain/AccelerateNotificationHandler.kt @@ -103,7 +103,6 @@ class AccelerateNotificationHandler(priority: Int) : PriorityChainHandler(priori context = activity, gameId = gameEntity.id, entrance = "首页插件上架弹窗", - defaultTab = -1, isSkipGameComment = false, scrollToLibao = false, openVideoStreaming = false, diff --git a/app/src/main/java/com/gh/common/provider/ActivationProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ActivationProviderImpl.kt deleted file mode 100644 index 6d5c29f4e7..0000000000 --- a/app/src/main/java/com/gh/common/provider/ActivationProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.common.util.ActivationHelper -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IActivationProvider - -@Route(path = RouteConsts.provider.activation, name = "ActivationHelper暴露服务") -class ActivationProviderImpl : IActivationProvider { - override fun init(context: Context?) { - // Do nothing - } - - override fun sendActivationInfo() { - ActivationHelper.sendActivationInfo() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/AdHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/AdHelperProviderImpl.kt deleted file mode 100644 index 52107684b9..0000000000 --- a/app/src/main/java/com/gh/common/provider/AdHelperProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.common.util.AdHelper -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.entity.SettingsEntity -import com.gh.gamecenter.feature.provider.IAdHelperProvider - -@Route(path = RouteConsts.provider.adHelper, name = "AdHelper暴露服务") -class AdHelperProviderImpl : IAdHelperProvider { - override fun getSuggestionFunctionAd(): SettingsEntity.AD? { - return AdHelper.getAd(AdHelper.LOCATION_SUGGESTION_FUNCTION) - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt index c0a483340a..911e42dd97 100644 --- a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt @@ -1,20 +1,15 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.BuildConfig import com.gh.gamecenter.R -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider import com.gh.gamecenter.va.VCore import com.halo.assistant.HaloApp -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } override fun getAppName(): String { return HaloApp.getInstance().getString(R.string.app_name) @@ -93,4 +88,5 @@ class AppProviderImpl : IAppProvider { override fun initImageLoaderIfNeeded() { HaloApp.getInstance().initFresco() } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt b/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt index 17636e69ca..f0aab7d911 100644 --- a/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt @@ -1,16 +1,13 @@ package com.gh.common.provider -import android.content.Context import android.view.View import android.widget.LinearLayout import android.widget.TextView -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.databind.BindingAdapters -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.provider.IBindingAdaptersProvider -@Route(path = RouteConsts.provider.bindingAdapters, name = "BindingAdapters暴露服务") +@com.therouter.inject.ServiceProvider class BindingAdaptersProviderImpl : IBindingAdaptersProvider { override fun setGameName( view: TextView, @@ -31,8 +28,4 @@ class BindingAdaptersProviderImpl : IBindingAdaptersProvider { override fun setGame(view: View, gameEntity: GameEntity) { BindingAdapters.setGame(view, gameEntity) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt index fd017ab719..3c42d2cf2d 100644 --- a/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt @@ -1,12 +1,9 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.download.server.BrowserInstallHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider -@Route(path = RouteConsts.provider.browserInstallHelper, name = "BrowserInstallHelper暴露服务") +@com.therouter.inject.ServiceProvider class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider { override fun isUseBrowserToInstallEnabled(): Boolean = BrowserInstallHelper.isUseBrowserToInstallEnabled() @@ -15,9 +12,4 @@ class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider { override fun logSwitchInstallSettingEvent() { BrowserInstallHelper.logOrdinaryBrowserEvent(BrowserInstallHelper.Type.SWITCH_INSTALL_SETTING) } - - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/BuildConfigImpl.kt b/app/src/main/java/com/gh/common/provider/BuildConfigImpl.kt index 5922e1f0db..6ebcd5fe24 100644 --- a/app/src/main/java/com/gh/common/provider/BuildConfigImpl.kt +++ b/app/src/main/java/com/gh/common/provider/BuildConfigImpl.kt @@ -1,17 +1,10 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.BuildConfig -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBuildConfigProvider -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +@com.therouter.inject.ServiceProvider class BuildConfigImpl : IBuildConfigProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun getApplicationId(): String = BuildConfig.APPLICATION_ID override fun getVersionName(): String = BuildConfig.VERSION_NAME diff --git a/app/src/main/java/com/gh/common/provider/CheckLoginProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CheckLoginProviderImpl.kt index 3254230869..0d3bc57cf9 100644 --- a/app/src/main/java/com/gh/common/provider/CheckLoginProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/CheckLoginProviderImpl.kt @@ -1,18 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.CheckLoginUtils -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ICheckLoginProvider -@Route(path = RouteConsts.provider.checkLogin, name = "CheckLoginUtils暴露服务") +@com.therouter.inject.ServiceProvider class CheckLoginProviderImpl : ICheckLoginProvider { override fun checkLogin(context: Context, entrance: String, action: (() -> Unit)?) { CheckLoginUtils.checkLogin(context, entrance, action) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt index 33aecc20c7..78c1567425 100644 --- a/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt @@ -3,20 +3,16 @@ package com.gh.common.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.CommentDetailActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.ICommentDetailProvider import com.gh.gamecenter.feature.entity.MessageEntity -@Route(path = RouteConsts.provider.commentDetail, name = "CommentDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class CommentDetailProviderImpl : ICommentDetailProvider { override fun getIntent(context: Context, commentId: String?, message: Parcelable): Intent { return CommentDetailActivity.getIntent(context, commentId, message as MessageEntity.Article) } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/CommentManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CommentManagerProviderImpl.kt index da032708e4..907b0aecb7 100644 --- a/app/src/main/java/com/gh/common/provider/CommentManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/CommentManagerProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ICommentManagerProvider import com.gh.gamecenter.manager.CommentManager -@Route(path = RouteConsts.provider.commentManager, name = "CommentManager暴露服务") +@com.therouter.inject.ServiceProvider class CommentManagerProviderImpl : ICommentManagerProvider { override fun addUrl(ids: String) { CommentManager.getInstance().addUrl(ids) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt index f7b154fa49..40509205b0 100644 --- a/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.common.provider import android.content.Context import android.widget.TextView -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.CommentUtils import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.ICommentUtilsProvider -@Route(path = RouteConsts.provider.commentUtils, name = "CommentUtils暴露服务") +@com.therouter.inject.ServiceProvider class CommentUtilsProviderImpl : ICommentUtilsProvider { override fun setCommentTime(textView: TextView, time: Long) { CommentUtils.setCommentTime(textView, time) @@ -16,8 +16,4 @@ class CommentUtilsProviderImpl : ICommentUtilsProvider { override fun getCommentTime(timestamp: Long): String { return CommentUtils.getCommentTime(timestamp) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ConcernArticleUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConcernArticleUtilsProviderImpl.kt index dba467f8c7..109010da80 100644 --- a/app/src/main/java/com/gh/common/provider/ConcernArticleUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConcernArticleUtilsProviderImpl.kt @@ -8,7 +8,7 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.core.content.ContextCompat import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.facebook.drawee.view.SimpleDraweeView import com.gh.common.util.ConcernContentUtils import com.gh.common.view.ImageContainerView @@ -18,7 +18,7 @@ import com.gh.gamecenter.common.utils.toArrayList import com.gh.gamecenter.core.provider.IConcernArticleUtilsProvider import com.gh.gamecenter.databinding.RecyclerGameArticleBinding -@Route(path = RouteConsts.provider.concernContentUtils, name = "ConcernContentUtils暴露服务") +@com.therouter.inject.ServiceProvider class ConcernArticleUtilsProviderImpl : IConcernArticleUtilsProvider { override fun addContentPic( context: Context, @@ -95,8 +95,4 @@ class ConcernArticleUtilsProviderImpl : IConcernArticleUtilsProvider { override fun getTvComment(binding: ViewBinding): TextView = (binding as RecyclerGameArticleBinding).tvComment override fun getTvShare(binding: ViewBinding): TextView = (binding as RecyclerGameArticleBinding).tvShare - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/ConcernGiftPackUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConcernGiftPackUtilsProviderImpl.kt index a6926e3393..244132fb13 100644 --- a/app/src/main/java/com/gh/common/provider/ConcernGiftPackUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConcernGiftPackUtilsProviderImpl.kt @@ -6,14 +6,14 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.goneIf import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.core.provider.IConcernGiftPackUtilsProvider import com.gh.gamecenter.databinding.RecyclerGiftPackBinding -@Route(path = RouteConsts.provider.concernGiftPackUtils, name = "ConcernGiftPackUtils暴露服务") +@com.therouter.inject.ServiceProvider class ConcernGiftPackUtilsProviderImpl : IConcernGiftPackUtilsProvider { override fun createBinding(parent: ViewGroup): ViewBinding { val inflater = LayoutInflater.from(parent.context) @@ -48,7 +48,4 @@ class ConcernGiftPackUtilsProviderImpl : IConcernGiftPackUtilsProvider { override fun getTvGiftPackContent(viewBinding: ViewBinding) = (viewBinding as RecyclerGiftPackBinding).tvGiftPackContent - override fun init(context: Context?) { - // Do Nothing - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/ConcernProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConcernProviderImpl.kt index 9ad7085092..7b78d6fd05 100644 --- a/app/src/main/java/com/gh/common/provider/ConcernProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConcernProviderImpl.kt @@ -2,19 +2,15 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.ConcernActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConcernProvider -@Route(path = RouteConsts.provider.concernActivity, name = "ConcernActivity暴露服务") +@com.therouter.inject.ServiceProvider class ConcernProviderImpl : IConcernProvider { override fun getIntent(context: Context, entrance: String): Intent { return ConcernActivity.getIntent(context, entrance) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ConcernShareNewsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConcernShareNewsProviderImpl.kt index efefe766e9..0b37b82a62 100644 --- a/app/src/main/java/com/gh/common/provider/ConcernShareNewsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConcernShareNewsProviderImpl.kt @@ -2,18 +2,14 @@ package com.gh.common.provider import android.content.Context import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConcernShareNewsProvider import com.gh.gamecenter.newsdetail.NewsShareDialog -@Route(path = RouteConsts.provider.concernShareNews, name = "ConcernShareNews暴露服务") +@com.therouter.inject.ServiceProvider class ConcernShareNewsProviderImpl : IConcernShareNewsProvider { override fun share(activity: AppCompatActivity, shortId: String?, id: String?, gameIcon: String?, title: String?) { NewsShareDialog.show(activity, shortId, id, gameIcon, title) } - - override fun init(context: Context?) { - // Do Nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt index 1b302fe114..087b5ce180 100644 --- a/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt @@ -1,12 +1,9 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.constant.Config -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +@com.therouter.inject.ServiceProvider class ConfigProviderImpl : IConfigProvider { override fun getTencentAppId(): String { return Config.TENCENT_APPID @@ -103,8 +100,4 @@ class ConfigProviderImpl : IConfigProvider { override fun isJiguangSwitch(): Boolean { return Config.getNewApiSettingsEntity()?.jiguangSwitch ?: false } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ConfigSettingProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConfigSettingProviderImpl.kt index f74cd2a939..d050a33a4f 100644 --- a/app/src/main/java/com/gh/common/provider/ConfigSettingProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ConfigSettingProviderImpl.kt @@ -1,19 +1,12 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.constant.Config -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.SettingsEntity import com.gh.gamecenter.feature.provider.IConfigSettingProvider -@Route(path = RouteConsts.provider.configSetting, name = "Config.getSettings暴露服务") +@com.therouter.inject.ServiceProvider class ConfigSettingProviderImpl : IConfigSettingProvider { override fun getSettings(): SettingsEntity? { return Config.getSettings() } - - override fun init(context: Context?) { - // do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DataCollectionProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DataCollectionProviderImpl.kt index 1c2e8219c0..cb1ce0a086 100644 --- a/app/src/main/java/com/gh/common/provider/DataCollectionProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DataCollectionProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.DataCollectionUtils import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.IDataCollectionProvider -@Route(path = RouteConsts.provider.dataCollection, name = "DataCollectionUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataCollectionProviderImpl : IDataCollectionProvider { override fun uploadClick(context: Context, vararg args: String) { DataCollectionUtils.uploadClick(context, *args) @@ -15,8 +15,4 @@ class DataCollectionProviderImpl : IDataCollectionProvider { override fun uploadConcern(context: Context, vararg args: String) { DataCollectionUtils.uploadConcern(context, *args) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DataUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DataUtilsProviderImpl.kt index 2bc7e70a8a..ba07788db9 100644 --- a/app/src/main/java/com/gh/common/provider/DataUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DataUtilsProviderImpl.kt @@ -1,20 +1,12 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.DataUtils -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDataUtilsProvider import com.halo.assistant.HaloApp -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataUtilsProviderImpl : IDataUtilsProvider { - override fun getDeviceCertification() { DataUtils.getDeviceCertification(HaloApp.getInstance().gid) } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/DefaultUrlHandlerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DefaultUrlHandlerProviderImpl.kt index acf980ad20..053b33a315 100644 --- a/app/src/main/java/com/gh/common/provider/DefaultUrlHandlerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DefaultUrlHandlerProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.DefaultUrlHandler import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDefaultUrlHandlerProvider -@Route(path = RouteConsts.provider.defaultUrlHandler, name = "DefaultUrlHandler暴露服务") +@com.therouter.inject.ServiceProvider class DefaultUrlHandlerProviderImpl : IDefaultUrlHandlerProvider { override fun interceptUrl( @@ -19,7 +19,4 @@ class DefaultUrlHandlerProviderImpl : IDefaultUrlHandlerProvider { return DefaultUrlHandler.interceptUrl(context, url, null, entrance, bringAppToFront, sourceEntrance) } - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt index a48d45a70c..1db938b2c3 100644 --- a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt @@ -2,14 +2,12 @@ package com.gh.common.provider import android.app.Dialog import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.DialogUtils import com.gh.gamecenter.common.callback.CancelListener import com.gh.gamecenter.common.callback.ConfirmListener -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDialogUtilsProvider -@Route(path = RouteConsts.provider.dialogUtils, name = "DialogUtils暴露服务") +@com.therouter.inject.ServiceProvider class DialogUtilsProviderImpl : IDialogUtilsProvider { override fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) { DialogUtils.showRegulationTestDialog(context, object : ConfirmListener { @@ -45,8 +43,4 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider { } override fun showBindPhoneDialog(context: Context, confirm: () -> Unit): Dialog = DialogUtils.showBindPhoneDialog(context) { confirm.invoke() } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt index 50e115f9b0..d5a9290506 100644 --- a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt @@ -3,12 +3,12 @@ package com.gh.common.provider import android.app.Activity import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.DirectUtils import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDirectProvider -@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务") +@com.therouter.inject.ServiceProvider class DirectProviderImpl : IDirectProvider { override fun directToWebView(context: Context, url: String, entrance: String?) { @@ -96,8 +96,4 @@ class DirectProviderImpl : IDirectProvider { override fun directToExternalBrowser(context: Context, url: String) { DirectUtils.directToExternalBrowser(context, url) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt index 3b9449ca82..df6c6494ac 100644 --- a/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DownloadButtonClickedProviderImpl.kt @@ -1,10 +1,7 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.NewFlatLogUtils import com.gh.gamecenter.common.base.GlobalActivityManager -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.ExposureSource import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.entity.GameUpdateEntity @@ -17,7 +14,7 @@ import com.gh.gamecenter.packagehelper.PackageRepository import com.lightgame.download.DownloadEntity import com.lightgame.utils.Utils -@Route(path = RouteConsts.provider.downloadButtonClickedHandler, name = "DownloadButton点击事件暴露服务") +@com.therouter.inject.ServiceProvider class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { override fun onClicked(downloadButton: DownloadButton) { var gameId = "" @@ -139,8 +136,4 @@ class DownloadButtonClickedProviderImpl : IDownloadButtonClickedProvider { } } - override fun init(context: Context?) { - // do nothing - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DownloadManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DownloadManagerProviderImpl.kt index 4f34eff07a..2317afcf8a 100644 --- a/app/src/main/java/com/gh/common/provider/DownloadManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DownloadManagerProviderImpl.kt @@ -1,13 +1,10 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.download.DownloadManager -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDownloadManagerProvider import com.lightgame.download.DownloadEntity -@Route(path = RouteConsts.provider.downloadManager, name = "DownloadManager暴露服务") +@com.therouter.inject.ServiceProvider class DownloadManagerProviderImpl : IDownloadManagerProvider { override fun getDownloadEntityByUrl(url: String): DownloadEntity? { @@ -18,8 +15,4 @@ class DownloadManagerProviderImpl : IDownloadManagerProvider { DownloadManager.getInstance().resumeAllInvisiblePendingTask() } - override fun init(context: Context?) { - // Do nothing - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt index 4ea98eb2a9..bbce9f7581 100644 --- a/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/EntranceUtilsProviderImpl.kt @@ -5,15 +5,16 @@ import android.content.Intent import android.os.Build import android.os.Bundle import androidx.fragment.app.FragmentActivity -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.EntranceUtils import com.gh.gamecenter.common.avoidcallback.Callback import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IEntranceUtilsProvider import com.lightgame.utils.AppManager -@Route(path = RouteConsts.provider.entranceUtils, name = "EntranceUtils暴露服务") +@com.therouter.inject.ServiceProvider class EntranceUtilsProviderImpl : IEntranceUtilsProvider { + override fun jumpActivity(context: Context, bundle: Bundle) { EntranceUtils.jumpActivity(context, bundle) } @@ -32,10 +33,6 @@ class EntranceUtilsProviderImpl : IEntranceUtilsProvider { } else { EntranceUtils.jumpActivityCompat(AppManager.getInstance().currentActivity(), bundle) } - } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ErrorHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ErrorHelperProviderImpl.kt index ce1e4ea851..b63e5c957b 100644 --- a/app/src/main/java/com/gh/common/provider/ErrorHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ErrorHelperProviderImpl.kt @@ -1,14 +1,11 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.ErrorHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IErrorHelperProvider -import com.gh.gamecenter.login.user.LoginTag import retrofit2.HttpException -@Route(path = RouteConsts.provider.errorHelper, name = "ErrorHelper暴露服务") +@com.therouter.inject.ServiceProvider class ErrorHelperProviderImpl : IErrorHelperProvider { override fun handleError( @@ -28,7 +25,4 @@ class ErrorHelperProviderImpl : IErrorHelperProvider { ErrorHelper.handleLoginError(context, httpException, loginTagChinese, isCertificate) } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ExposureManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ExposureManagerProviderImpl.kt index 70705671e0..987c900732 100644 --- a/app/src/main/java/com/gh/common/provider/ExposureManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ExposureManagerProviderImpl.kt @@ -1,20 +1,15 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.exposure.ExposureManager import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.provider.IExposureManagerProvider -@Route(path = RouteConsts.provider.exposureManager, name = "ExposureManager暴露服务") +@com.therouter.inject.ServiceProvider class ExposureManagerProviderImpl: IExposureManagerProvider { override fun logExposure(exposureEvent: ExposureEvent) { ExposureManager.log(exposureEvent) } - - override fun init(context: Context?) { - // do nothing - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/FixedRateJobHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/FixedRateJobHelperProviderImpl.kt index 23ce3e3b66..355ec68e9e 100644 --- a/app/src/main/java/com/gh/common/provider/FixedRateJobHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/FixedRateJobHelperProviderImpl.kt @@ -1,18 +1,11 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.FixedRateJobHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IFixedRateJobHelperProvider -@Route(path = RouteConsts.provider.fixedRateJobHelper, name = "FixedRateJobHelper暴露服务") +@com.therouter.inject.ServiceProvider class FixedRateJobHelperProviderImpl : IFixedRateJobHelperProvider { override fun getTimeDeltaBetweenServerAndClient(): Long { return FixedRateJobHelper.timeDeltaBetweenServerAndClient } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt index aae3e4fae8..ce11919e0e 100644 --- a/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity -@Route(path = RouteConsts.provider.gameCollectionDetail, name = "GameCollectionDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent { return GameCollectionDetailActivity.getIntent(context, gameCollectionId, isFromSquare) @@ -16,9 +16,4 @@ class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String): Intent { return GameCollectionDetailActivity.getSpecifiedCommentIntent(context, gameCollectionId, topCommentId) } - - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt index 73e97b99e3..d69adea6c6 100644 --- a/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt @@ -1,14 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.GameDetailActivity -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.provider.IGameDetailProvider -@Route(path = RouteConsts.provider.gameDetail, name = "GameDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class GameDetailProviderImpl : IGameDetailProvider { override fun startGameDetailActivity( context: Context, @@ -54,7 +52,6 @@ class GameDetailProviderImpl : IGameDetailProvider { context: Context, gameId: String, entrance: String?, - defaultTab: Int, isSkipGameComment: Boolean, scrollToLibao: Boolean, openVideoStreaming: Boolean, @@ -65,7 +62,6 @@ class GameDetailProviderImpl : IGameDetailProvider { context, gameId, entrance, - defaultTab, isSkipGameComment, scrollToLibao, openVideoStreaming, @@ -73,8 +69,4 @@ class GameDetailProviderImpl : IGameDetailProvider { traceEvent ) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/GameTrendsHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameTrendsHelperProviderImpl.kt index 0569b1779c..29410a5343 100644 --- a/app/src/main/java/com/gh/common/provider/GameTrendsHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/GameTrendsHelperProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.GameTrendsHelper import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IGameTrendsHelperProvider -@Route(path = RouteConsts.provider.gameTrendsHelper, name = "GameTrendsHelper暴露服务") +@com.therouter.inject.ServiceProvider class GameTrendsHelperProviderImpl : IGameTrendsHelperProvider { override fun updateReadPostTime() { GameTrendsHelper.updateReadPostTime() } - - override fun init(context: Context?) { - // do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/HandleGameResponseProviderImpl.kt b/app/src/main/java/com/gh/common/provider/HandleGameResponseProviderImpl.kt index d9d063ae11..6e0b82c8b6 100644 --- a/app/src/main/java/com/gh/common/provider/HandleGameResponseProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/HandleGameResponseProviderImpl.kt @@ -1,17 +1,14 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.filter.RegionSettingHelper import com.gh.gamecenter.feature.utils.ApkActiveUtils import com.gh.download.DownloadManager import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.countOccurrences import com.gh.gamecenter.core.provider.IHandleGameResponseProvider import com.gh.gamecenter.feature.entity.GameEntity -@Route(path = RouteConsts.provider.handleGameResponse, name = "处理游戏类型返回") +@com.therouter.inject.ServiceProvider class HandleGameResponseProviderImpl : IHandleGameResponseProvider { override fun handleGameResponse(response: List, entrance: String): List { @@ -37,8 +34,4 @@ class HandleGameResponseProviderImpl : IHandleGameResponseProvider { return response } - override fun init(context: Context?) { - // Do nothing - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt index 594b435254..e3279276da 100644 --- a/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt @@ -1,18 +1,11 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.history.HistoryHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IHistoryHelperProvider -@Route(path = RouteConsts.provider.historyHelper, name = "HistoryHelper暴露服务") +@com.therouter.inject.ServiceProvider class HistoryHelperProviderImpl : IHistoryHelperProvider { override fun emptyDatabase() { HistoryHelper.emptyDatabase() } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/LibaoUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/LibaoUtilsProviderImpl.kt index 9330405521..2f76228a5f 100644 --- a/app/src/main/java/com/gh/common/provider/LibaoUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/LibaoUtilsProviderImpl.kt @@ -1,13 +1,13 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.LibaoUtils import com.gh.common.util.LibaoUtils.PostLibaoListener import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ILibaoUtilsProvider -@Route(path = RouteConsts.provider.libaoUtils, name = "LibaoUtils暴露服务") +@com.therouter.inject.ServiceProvider class LibaoUtilsProviderImpl : ILibaoUtilsProvider { override fun getLibaoStatus(ids: String, successCallback: ((Any?) -> Unit)?, failureCallback: (() -> Unit)?) { LibaoUtils.getLibaoStatus(ids, object : PostLibaoListener { @@ -20,8 +20,4 @@ class LibaoUtilsProviderImpl : ILibaoUtilsProvider { } }) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt index 9769a5a644..98c8f94d48 100644 --- a/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt @@ -1,7 +1,7 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.DirectUtils import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.CommunityEntity @@ -10,7 +10,7 @@ import com.gh.gamecenter.common.entity.SuggestType import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider -@Route(path = RouteConsts.provider.linkDirectUtils, name = "DirectUtils暴露服务,主要是暴露directToLinkPage方法") +@com.therouter.inject.ServiceProvider class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { override fun directToLinkPage( @@ -61,7 +61,4 @@ class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { DirectUtils.directToCommunityColumn(context, community, subjectId, entrance, path) } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/LogUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/LogUtilsProviderImpl.kt index 601048294c..eb7efcfd4b 100644 --- a/app/src/main/java/com/gh/common/provider/LogUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/LogUtilsProviderImpl.kt @@ -1,19 +1,13 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.* -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.* -@Route(path = RouteConsts.provider.logUtils, name = "LogUtils暴露服务") +@com.therouter.inject.ServiceProvider class LogUtilsProviderImpl : ILogUtilsProvider { override fun login(loginStep: String, loginType: String, entrance: String) { LogUtils.login(loginStep, loginType, entrance) } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt deleted file mode 100644 index a2ea2a0f06..0000000000 --- a/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.common.util.DirectUtils -import com.gh.gamecenter.MainActivity -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IMainProvider - -@Route(path = RouteConsts.provider.mainActivity, name = "MainActivity暴露服务") -class MainProviderImpl : IMainProvider { - override fun skipToMainActivity(context: Context, type: String) { - DirectUtils.directToHomeDefaultTab(context) - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt index be0eaff056..f2160c056a 100644 --- a/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt @@ -2,13 +2,13 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.MessageDetailActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.ConcernEntity import com.gh.gamecenter.feature.provider.IMessageDetailProvider -@Route(path = RouteConsts.provider.messageDetail, name = "MessageDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class MessageDetailProviderImpl : IMessageDetailProvider { override fun getIntentById( @@ -24,8 +24,4 @@ class MessageDetailProviderImpl : IMessageDetailProvider { override fun getIntentByEntity(context: Context, concernEntity: ConcernEntity, entrance: String): Intent? { return MessageDetailActivity.getIntentByEntity(context, concernEntity, entrance) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt index f59dbdc0dc..8ad0e7993a 100644 --- a/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt @@ -1,16 +1,13 @@ package com.gh.common.provider -import android.content.Context import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.MessageUnreadCount import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider import com.gh.gamecenter.message.MessageUnreadRepository -@Route(path = RouteConsts.provider.messageUnreadRepository, name = "MessageUnreadRepository暴露服务") +@com.therouter.inject.ServiceProvider class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { override fun loadMessageUnreadData() { @@ -33,7 +30,4 @@ class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { return MessageUnreadRepository.messageUnreadCountLiveData } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/MiniGameRecentlyPlayedProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MiniGameRecentlyPlayedProviderImpl.kt index f1879e3bee..ef39329824 100644 --- a/app/src/main/java/com/gh/common/provider/MiniGameRecentlyPlayedProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/MiniGameRecentlyPlayedProviderImpl.kt @@ -1,13 +1,13 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IMiniGameRecentlyPlayedProvider import com.gh.gamecenter.minigame.MiniGameRecentlyPlayUseCase -@Route(path = RouteConsts.provider.miniGameRecentPlayed, name = "MiniGameRecentlyPlayed暴露服务") +@com.therouter.inject.ServiceProvider class MiniGameRecentlyPlayedProviderImpl : IMiniGameRecentlyPlayedProvider { override fun clearMiniGameRecentlyPlayed(gameType: String) { MiniGameRecentlyPlayUseCase.clearRecentlyPlayedMiniGameList(gameType) @@ -16,8 +16,4 @@ class MiniGameRecentlyPlayedProviderImpl : IMiniGameRecentlyPlayedProvider { override fun refreshQQMiniRecentPlayed() { MiniGameRecentlyPlayUseCase.loadRecentlyPlayedMiniGameList(Constants.QQ_MINI_GAME) } - - override fun init(context: Context?) { - // no implement - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt index 9fe547d04f..18fecb8f1d 100644 --- a/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.INewCommentDetailProvider import com.gh.gamecenter.qa.comment.NewCommentDetailActivity -@Route(path = RouteConsts.provider.newCommentDetail, name = "NewCommentDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class NewCommentDetailProviderImpl : INewCommentDetailProvider { override fun getAnswerCommentIntent( @@ -76,8 +76,4 @@ class NewCommentDetailProviderImpl : INewCommentDetailProvider { path ) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/PackageHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/PackageHelperProviderImpl.kt deleted file mode 100644 index c794e4f020..0000000000 --- a/app/src/main/java/com/gh/common/provider/PackageHelperProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.common.util.PackageHelper -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IPackageHelperProvider - -@Route(path = RouteConsts.provider.packageHelper, name = "PackageHelper暴露服务") -class PackageHelperProviderImpl : IPackageHelperProvider { - - override fun getLocalPackageNameSet(): Set { - return PackageHelper.localPackageNameSet - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/PackageInstallerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/PackageInstallerProviderImpl.kt index 442ed57b4e..70e774f6b9 100644 --- a/app/src/main/java/com/gh/common/provider/PackageInstallerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/PackageInstallerProviderImpl.kt @@ -1,13 +1,11 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.PackageInstaller -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageInstallerProvider import com.lightgame.download.DownloadEntity -@Route(path = RouteConsts.provider.packageInstaller, name = "PackageInstaller暴露服务") +@com.therouter.inject.ServiceProvider class PackageInstallerProviderImpl : IPackageInstallerProvider { override fun install(context: Context, downloadEntity: DownloadEntity, showUnzipToast: Boolean) { @@ -18,7 +16,4 @@ class PackageInstallerProviderImpl : IPackageInstallerProvider { PackageInstaller.uninstall(context, path) } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/PackageUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/PackageUtilsProviderImpl.kt index bf9bf88129..343c68099f 100644 --- a/app/src/main/java/com/gh/common/provider/PackageUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/PackageUtilsProviderImpl.kt @@ -2,14 +2,12 @@ package com.gh.common.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.PackageHelper import com.gh.common.util.PackageUtils -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageUtilsProvider import com.gh.gamecenter.core.utils.ProcessUtil -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +@com.therouter.inject.ServiceProvider class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun obtainProcessName(): String? { return ProcessUtil.getCurrentProcessName() @@ -50,8 +48,4 @@ class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun getVersionNameByPackageName(packageName: String): String { return PackageUtils.getVersionNameByPackageName(packageName) ?: "" } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/PackagesManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/PackagesManagerProviderImpl.kt index c612ee7a07..3c1e27f1e4 100644 --- a/app/src/main/java/com/gh/common/provider/PackagesManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/PackagesManagerProviderImpl.kt @@ -1,13 +1,10 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.GameInstall import com.gh.gamecenter.feature.provider.IPackagesManagerProvider import com.gh.gamecenter.manager.PackagesManager -@Route(path = RouteConsts.provider.packagesManager, name = "PackagesManager暴露服务") +@com.therouter.inject.ServiceProvider class PackagesManagerProviderImpl: IPackagesManagerProvider { override fun isCanPluggable(gameId: String?, packageName: String?): Boolean { return PackagesManager.isCanPluggable(gameId, packageName) @@ -16,8 +13,4 @@ class PackagesManagerProviderImpl: IPackagesManagerProvider { override fun getFilterSameApkInstalledList(): ArrayList { return PackagesManager.getFilterSameApkInstalledList() } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt index 9815ef871d..4e1bdaa521 100644 --- a/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/RegionSettingHelperProviderImpl.kt @@ -1,14 +1,11 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.filter.RegionSettingHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.entity.IpInfo import com.gh.gamecenter.feature.provider.IRegionSettingHelperProvider -@Route(path = RouteConsts.provider.regionSettingHelper, name = "RegionSettingHelper暴露服务") +@com.therouter.inject.ServiceProvider class RegionSettingHelperProviderImpl : IRegionSettingHelperProvider { override fun shouldThisGameDisplayMirrorInfo(gameId: String): Boolean { return RegionSettingHelper.shouldThisGameDisplayMirrorInfo(gameId) @@ -33,8 +30,4 @@ class RegionSettingHelperProviderImpl : IRegionSettingHelperProvider { override fun shouldThisGameBeFiltered(gameId: String?): Boolean { return RegionSettingHelper.shouldThisGameBeFiltered(gameId) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ReservationRepositoryProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ReservationRepositoryProviderImpl.kt index f10288f7d2..43ddeaf4f6 100644 --- a/app/src/main/java/com/gh/common/provider/ReservationRepositoryProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ReservationRepositoryProviderImpl.kt @@ -1,12 +1,9 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.repository.ReservationRepository -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IReservationRepositoryProvider -@Route(path = RouteConsts.provider.reservationRepository, name = "ReservationRepository暴露服务") +@com.therouter.inject.ServiceProvider class ReservationRepositoryProviderImpl : IReservationRepositoryProvider { override fun refreshReservations() { @@ -16,8 +13,4 @@ class ReservationRepositoryProviderImpl : IReservationRepositoryProvider { override fun clearReservations() { ReservationRepository.clearReservations() } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/SearchTabUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/SearchTabUtilsProviderImpl.kt index e8a0cdf2f6..b7ced40337 100644 --- a/app/src/main/java/com/gh/common/provider/SearchTabUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/SearchTabUtilsProviderImpl.kt @@ -5,12 +5,12 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISearchTabUtilsProvider import com.gh.gamecenter.search.viewmodel.SearchTabViewModel -@Route(path = RouteConsts.provider.searchTabUtils, name = "SearchTabUtils暴露服务") +@com.therouter.inject.ServiceProvider class SearchTabUtilsProviderImpl : ISearchTabUtilsProvider { override fun obtainParentViewModel(fragment: Fragment): ViewModel { @@ -29,8 +29,4 @@ class SearchTabUtilsProviderImpl : ISearchTabUtilsProvider { null } - - override fun init(context: Context?) { - // no implement - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/gh/common/provider/ShareCardPicProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ShareCardPicProviderImpl.kt deleted file mode 100644 index 26046174e3..0000000000 --- a/app/src/main/java/com/gh/common/provider/ShareCardPicProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.ShareCardPicActivity -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.entity.ConcernEntity -import com.gh.gamecenter.feature.provider.IShareCardPicProvider - -@Route(path = RouteConsts.provider.shareCardPicActivity, name = "ShareCardPicActivity暴露服务") -class ShareCardPicProviderImpl : IShareCardPicProvider { - override fun startShareCardPicActivity(context: Context, concernEntity: ConcernEntity, entrance: String) { - ShareCardPicActivity.startShareCardPicActivity(context, concernEntity, entrance) - } - - override fun init(context: Context?) { - // do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ShareCardProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ShareCardProviderImpl.kt deleted file mode 100644 index 1f607f71b9..0000000000 --- a/app/src/main/java/com/gh/common/provider/ShareCardProviderImpl.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.ShareCardActivity -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.entity.ConcernEntity -import com.gh.gamecenter.feature.provider.IShareCardProvider - -@Route(path = RouteConsts.provider.shareCardActivity, name = "ShareCardActivity暴露服务") -class ShareCardProviderImpl : IShareCardProvider { - override fun getIntent(context: Context, concernEntity: ConcernEntity, shareContent: String): Intent { - return ShareCardActivity.getIntent(context, concernEntity, shareContent) - } - - override fun init(context: Context?) { - // do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt index 1bb22173d2..9f465a33e5 100644 --- a/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt @@ -3,17 +3,11 @@ package com.gh.common.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.ShellActivity -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IShellProvider -@Route(path = RouteConsts.provider.shellActivity, name = "ShellActivity暴露服务") +@com.therouter.inject.ServiceProvider class ShellProviderImpl : IShellProvider { override fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent = ShellActivity.getIntent(context, ShellActivity.Type.SWITCH_INSTALL_METHOD, extraParcelable) - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt index 840b0b043e..7aed495aa6 100644 --- a/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt @@ -2,19 +2,15 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.ISimpleAnswerDetailProvider import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity -@Route(path = RouteConsts.provider.simpleAnswerDetail, name = "SimpleAnswerDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class SimpleAnswerDetailProviderImpl : ISimpleAnswerDetailProvider { override fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent { return SimpleAnswerDetailActivity.getIntent(context, answerId, entrance, path) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt b/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt index 66f8ba6c05..6d4c88cd14 100644 --- a/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.ISubjectProvider import com.gh.gamecenter.subject.SubjectActivity -@Route(path = RouteConsts.provider.subject, name = "SubjectActivity暴露服务") +@com.therouter.inject.ServiceProvider class SubjectProviderImpl : ISubjectProvider { override fun startSubjectActivity( context: Context, @@ -17,8 +17,4 @@ class SubjectProviderImpl : ISubjectProvider { ) { SubjectActivity.startSubjectActivity(context, id, name, isOrder, null, entrance) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/TimeUtilProviderImpl.kt b/app/src/main/java/com/gh/common/provider/TimeUtilProviderImpl.kt deleted file mode 100644 index d7a2efcacf..0000000000 --- a/app/src/main/java/com/gh/common/provider/TimeUtilProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.common.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.feature.exposure.time.TimeUtil -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.ITimeUtilProvider - -@Route(path = RouteConsts.provider.timeUtil, name = "TimeUtil暴露服务") -class TimeUtilProviderImpl : ITimeUtilProvider { - - override fun currentTimeMillis() = TimeUtil.currentTimeMillis() - - override fun currentTime() = TimeUtil.currentTime() - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt index 1dd72c10f0..4e3acdbc5d 100644 --- a/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt @@ -1,15 +1,12 @@ package com.gh.common.provider -import android.content.Context import androidx.fragment.app.FragmentActivity -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.DialogUtils -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUpdateManagerProvider import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.update.UpdateHelper -@Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务") +@com.therouter.inject.ServiceProvider class UpdateManagerProviderImpl: IUpdateManagerProvider { override fun checkUpdate(activity: FragmentActivity, ignoreSuppressOption: Boolean) { val dialog = DialogUtils.showWaitDialog(activity, "检查更新中...") @@ -26,8 +23,4 @@ class UpdateManagerProviderImpl: IUpdateManagerProvider { } } } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt index 25c8078276..bb1c296609 100644 --- a/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt @@ -3,20 +3,16 @@ package com.gh.common.provider import android.content.Context import android.os.Build import androidx.annotation.RequiresApi -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.UsageStatsHelper import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider -@Route(path = RouteConsts.provider.usageStatsHelper, name = "UsageStatsHelper暴露服务") +@com.therouter.inject.ServiceProvider class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider { @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1) override fun checkForPermission(): Boolean = UsageStatsHelper.checkForPermission() override fun skipToUsageStats(context: Context, requestCode: Int) { UsageStatsHelper.skipToUsageStats(context, requestCode) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt index 1850c787f7..babf63dd19 100644 --- a/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/VHelperProviderImpl.kt @@ -1,13 +1,11 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.entity.InstallGameEntity import com.gh.gamecenter.feature.provider.IVHelperProvider import com.gh.vspace.VHelper -@Route(path = RouteConsts.provider.vhelper, name = "VHelper暴露服务") +@com.therouter.inject.ServiceProvider class VHelperProviderImpl: IVHelperProvider { override fun isVGameOn(): Boolean { return VHelper.isVGameOn() @@ -20,8 +18,4 @@ class VHelperProviderImpl: IVHelperProvider { override fun launch(context: Context, packageName: String, ignoreGApps: Boolean, showLoading: Boolean) { VHelper.launch(context, packageName, ignoreGApps, showLoading) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/VisitManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/VisitManagerProviderImpl.kt index af392b008b..6b0fba7d6a 100644 --- a/app/src/main/java/com/gh/common/provider/VisitManagerProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/VisitManagerProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.common.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IVisitManagerProvider import com.gh.gamecenter.manager.VisitManager -@Route(path = RouteConsts.provider.visitManager, name = "VisitManager暴露服务") +@com.therouter.inject.ServiceProvider class VisitManagerProviderImpl : IVisitManagerProvider { override fun updateOkhttpCache(context: Context, newsId: String) { VisitManager.updateOkhttpCache(context, newsId) @@ -15,8 +15,4 @@ class VisitManagerProviderImpl : IVisitManagerProvider { override fun addUrl(ids: String) { VisitManager.getInstance().addUrl(ids) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt b/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt index 922040d99e..147156d468 100644 --- a/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt @@ -2,12 +2,10 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.WebActivity -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWebProvider -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +@com.therouter.inject.ServiceProvider class WebProviderImpl : IWebProvider { override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent { return WebActivity.getIntent(context, url, autoCompletionTitle) @@ -40,8 +38,4 @@ class WebProviderImpl : IWebProvider { ): Intent { return WebActivity.getIntentByNews(context, concernLink, concernGameName, concernId, entrance) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt index 930cd319a6..3ec096c076 100644 --- a/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt @@ -1,23 +1,15 @@ package com.gh.common.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.WechatBindHelper -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.entity.WechatConfigEntity import com.gh.gamecenter.core.provider.IWechatBindHelperProvider -@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务") -class WechatHelperProviderImpl : IWechatBindHelperProvider { +@com.therouter.inject.ServiceProvider +class WechatHelperProviderImpl : IWechatBindHelperProvider { - override fun getWechatConfig(callback: ((WechatConfigEntity) -> Unit)?) { + override fun getWechatConfig(callback: ((Any) -> Unit)?) { WechatBindHelper.getWechatConfig { callback?.invoke(it) } } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java index 2459169bf9..f1b07f5f76 100644 --- a/app/src/main/java/com/gh/common/util/CheckLoginUtils.java +++ b/app/src/main/java/com/gh/common/util/CheckLoginUtils.java @@ -52,7 +52,7 @@ public class CheckLoginUtils { } if (context != null) { - QuickLoginHelper.startLogin(context, entrance, callback); + QuickLoginHelper.startLogin(context, entrance, null, callback); } } diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index 1d9bba00db..1fc8a399d2 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -9,7 +9,7 @@ import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.ad.AdDelegateHelper; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.common.constant.Constants; @@ -55,7 +55,7 @@ public class DataUtils { } private static void initSentry(Context context, String channel) { - ISentryProvider sentryProvider = (ISentryProvider) ARouter.getInstance().build(RouteConsts.provider.sentry).navigation(); + ISentryProvider sentryProvider = TheRouter.get(ISentryProvider.class); if (sentryProvider != null) { sentryProvider.init(context, channel, BuildConfig.FLAVOR, BuildConfig.VERSION_NAME); } diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 9ea0372561..2e54b8d815 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -11,7 +11,7 @@ import android.os.Bundle import android.text.TextUtils import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.ad.AdPluginDownloadHelper import com.gh.common.constant.Config import com.gh.common.exposure.ExposureManager.log @@ -56,7 +56,6 @@ import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity import com.gh.gamecenter.gamecollection.hotlist.GameCollectionHotListActivity import com.gh.gamecenter.gamecollection.hotlist.GameCollectionListDetailActivity import com.gh.gamecenter.gamecollection.square.GameCollectionSquareActivity -import com.gh.gamecenter.gamedetail.GameDetailFragment import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarActivity import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarManagementActivity import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersSubscribedGameListActivity @@ -69,7 +68,6 @@ import com.gh.gamecenter.minigame.MiniGameRecentlyPlayUseCase import com.gh.gamecenter.minigame.MiniGameSearchActivity import com.gh.gamecenter.minigame.qq.QGameHomeWrapperActivity import com.gh.gamecenter.newsdetail.NewsDetailActivity -import com.gh.gamecenter.personalhome.UserHomeActivity import com.gh.gamecenter.personalhome.background.PersonalityBackgroundActivity import com.gh.gamecenter.personalhome.border.AvatarBorderActivity import com.gh.gamecenter.personalhome.home.UserHistoryViewModel @@ -590,12 +588,16 @@ object DirectUtils { @JvmStatic fun directToQa(context: Context, text: String? = "", id: String) { if (id.isEmpty()) return - val destination = RouteConsts.activity.qaActivity.toDestinationClass() + val bundle = Bundle() - bundle.putString(KEY_TO, destination?.name ?: "") bundle.putString(KEY_NAVIGATION_TITLE, text) bundle.putString(KEY_QA_ID, id) - jumpActivity(context, bundle) + + TheRouter.build(RouteConsts.activity.qaActivity) + .fillParams { + it.putAll(bundle) + } + .navigation(context) } /** @@ -604,12 +606,16 @@ object DirectUtils { @JvmStatic fun directToQaCollection(context: Context, text: String, id: String) { if (id.isEmpty()) return - val destination = RouteConsts.activity.qaActivity.toDestinationClass() + val bundle = Bundle() - bundle.putString(KEY_TO, destination?.name ?: "") bundle.putString(KEY_NAVIGATION_TITLE, text) bundle.putString(KEY_QA_COLLECTION_ID, id) - jumpActivity(context, bundle) + + TheRouter.build(RouteConsts.activity.qaActivity) + .fillParams { + it.putAll(bundle) + } + .navigation(context) } /** @@ -720,7 +726,7 @@ object DirectUtils { */ @JvmStatic fun directToHomeActivity(context: Context, userId: String?, entrance: String? = null, path: String? = null) { - context.startActivity(UserHomeActivity.getIntent(context, userId ?: "", entrance, path)) + directToHomeActivity(context, userId, entrance, path, 0) } @JvmStatic @@ -759,17 +765,20 @@ object DirectUtils { entrance: String? = null, path: String? = null ) { - IntegralLogHelper.log("view_homepage", "个人主页") - val bundle = Bundle() - bundle.putString(KEY_USER_ID, userId) - bundle.putString(KEY_TO, UserHomeActivity::class.java.name) - bundle.putString(KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) - bundle.putString(KEY_PATH, path) - bundle.putString(KEY_TYPE, UserHistoryViewModel.TYPE.fromValue(type).value) - bundle.putString(KEY_GAME, gameType) - bundle.putInt(KEY_POSITION, position ?: 0) - jumpActivity(context, bundle) + + val uri = Uri.Builder() + .path(RouteConsts.activity.userHomeActivity) + .appendQueryParameter(KEY_USER_ID, userId) + .appendQueryParameter(KEY_TAB_INDEX, position.toString()) + .appendQueryParameter(KEY_PATH, BaseActivity.mergeEntranceAndPath(entrance, path)) + .appendQueryParameter(KEY_COMMUNITY_TYPE, UserHistoryViewModel.TYPE.fromValue(type).value) + .appendQueryParameter(KEY_GAME_TYPE, gameType) + .build() + + TheRouter + .build(uri.toString()) + .navigation(context) } @@ -801,10 +810,10 @@ object DirectUtils { bundle.putString(KEY_GAMEID, id) if (!TextUtils.isEmpty(tab)) { when (tab) { - "comment" -> bundle.putString(KEY_TARGET, GameDetailFragment.TAB_RATING) - "desc" -> bundle.putString(KEY_TARGET, GameDetailFragment.TAB_DESC) - "forum" -> bundle.putString(KEY_TARGET, GameDetailFragment.TAB_BBS) - "zone" -> bundle.putString(KEY_TARGET, GameDetailFragment.TAB_TRENDS) + "comment" -> bundle.putString(KEY_TARGET, EntranceConsts.TAB_TYPE_RATING) + "desc" -> bundle.putString(KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) + "forum" -> bundle.putString(KEY_TARGET, EntranceConsts.TAB_TYPE_BBS) + "zone" -> bundle.putString(KEY_TARGET, EntranceConsts.TAB_TYPE_TRENDS) } } if (traceEvent != null) { @@ -849,7 +858,7 @@ object DirectUtils { bundle.putString(KEY_ENTRANCE, entrance) bundle.putString(KEY_GAMEID, id) bundle.putBoolean(KEY_OPEN_VIDEO_STREAMING, true) - bundle.putString(KEY_TARGET, GameDetailFragment.TAB_DESC) + bundle.putString(KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) jumpActivity(context, bundle) } @@ -857,7 +866,7 @@ object DirectUtils { fun directToGameDetail( context: Context, id: String, - defaultTab: String = GameDetailFragment.TAB_DESC, + defaultTab: String = EntranceConsts.TAB_TYPE_DESC, entrance: String? = null ) { val bundle = Bundle() @@ -1515,7 +1524,7 @@ object DirectUtils { response?.apply { if (zone.status == "on") { if (zone.style == "link") { - directToGameDetail(context, gameId, GameDetailFragment.TAB_TRENDS, entrance) + directToGameDetail(context, gameId, EntranceConsts.TAB_TYPE_TRENDS, entrance) } else { directToWebView(context, url, entrance) } @@ -1626,11 +1635,11 @@ object DirectUtils { */ @JvmStatic fun directToHelpAndFeedback(context: Context, bundle: Bundle? = null) { - val destination = RouteConsts.activity.helpAndFeedbackActivity.toDestinationClass() - val newBundle = Bundle() - newBundle.putString(KEY_TO, destination?.name ?: "") - bundle?.let { newBundle.putAll(it) } - jumpActivityCompat(context, newBundle) + TheRouter.build(RouteConsts.activity.helpAndFeedbackActivity) + .fillParams { + it.putAll(bundle) + } + .navigation(context) } @@ -1727,8 +1736,7 @@ object DirectUtils { @JvmStatic fun directToConcernInfo(context: Context, entrance: String) { context.startActivity( - (ARouter.getInstance().build(RouteConsts.provider.concernInfo) - .navigation() as? IConcernInfoProvider)?.getIntent(context, entrance) + TheRouter.get(IConcernInfoProvider::class.java)?.getIntent(context, entrance) ) } @@ -1985,10 +1993,7 @@ object DirectUtils { return } - val qGameProvider = ARouter - .getInstance() - .build(RouteConsts.provider.qGame) - .navigation() as? IQGameProvider + val qGameProvider = TheRouter.get(IQGameProvider::class.java) if (qGameProvider == null) return @@ -2037,8 +2042,14 @@ object DirectUtils { } @JvmStatic - fun directToMessageCenter(defaultTabIndex: Int) { - ARouter.getInstance().build(RouteConsts.activity.messageWrapperActivity) + fun directToMessageCenter(defaultTabIndex: Int, source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.messageWrapperActivity) + .appendQueryParameter(RouteConsts.QueryParams.REQUIRE_LOGIN, "true") + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) .withInt(BaseActivity_TabLayout.PAGE_INDEX, defaultTabIndex) .navigation() } diff --git a/app/src/main/java/com/gh/common/util/ReservationHelper.kt b/app/src/main/java/com/gh/common/util/ReservationHelper.kt index 7bcfd6bd9f..9e26532884 100644 --- a/app/src/main/java/com/gh/common/util/ReservationHelper.kt +++ b/app/src/main/java/com/gh/common/util/ReservationHelper.kt @@ -2,7 +2,7 @@ package com.gh.common.util import android.annotation.SuppressLint import android.content.Context -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.common.repository.ReservationRepository import com.gh.gamecenter.WebActivity @@ -231,7 +231,7 @@ object ReservationHelper { @JvmStatic fun getReserveRequestBody(game: GameEntity?, context: Context): RequestBody { val jPushId = - (ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider) + (TheRouter.get(IPushProvider::class.java)) ?.getRegistrationId(context) ?: "" var mirrorPosition = game?.getMirrorPosition() ?: 0 if (mirrorPosition == -1) { diff --git a/app/src/main/java/com/gh/common/util/ViewPagerFragmentHelper.kt b/app/src/main/java/com/gh/common/util/ViewPagerFragmentHelper.kt index 9ecfffca27..979498e5dc 100644 --- a/app/src/main/java/com/gh/common/util/ViewPagerFragmentHelper.kt +++ b/app/src/main/java/com/gh/common/util/ViewPagerFragmentHelper.kt @@ -2,7 +2,7 @@ package com.gh.common.util import android.os.Bundle import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.iinterface.ISuperiorChain import com.gh.gamecenter.amway.AmwayFragment import com.gh.gamecenter.category2.CategoryV2Fragment @@ -129,9 +129,7 @@ object ViewPagerFragmentHelper { } // 帮助与反馈 TYPE_FEEDBACK -> { - val helpAndFeedbackProvider = - ARouter.getInstance().build(RouteConsts.provider.helpAndFeedback) - .navigation() as? IHelpAndFeedbackProvider + val helpAndFeedbackProvider = TheRouter.get(IHelpAndFeedbackProvider::class.java) if (helpAndFeedbackProvider != null) { helpAndFeedbackProvider.getHelpAndFeedbackFragment().with(bundle) } else { @@ -250,9 +248,7 @@ object ViewPagerFragmentHelper { } // QA TYPE_QA -> { - val helpAndFeedbackProvider = - ARouter.getInstance().build(RouteConsts.provider.helpAndFeedback) - .navigation() as? IHelpAndFeedbackProvider + val helpAndFeedbackProvider = TheRouter.get(IHelpAndFeedbackProvider::class.java) helpAndFeedbackProvider?.let { className = it.getHelpContainerFragmentClass() diff --git a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java index ee56739bc6..492bea8ceb 100644 --- a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; +import com.therouter.router.Route; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt index c3abb2f789..6bcdf1eeb4 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/GameDetailActivity.kt @@ -5,12 +5,17 @@ import android.content.ContextWrapper import android.content.Intent import android.os.Bundle import android.view.View +import com.therouter.router.Autowired +import com.therouter.router.Route +import com.therouter.TheRouter import com.gh.base.DownloadToolbarActivity -import com.gh.common.exposure.ExposureManager.log +import com.gh.common.exposure.ExposureManager import com.gh.common.exposure.ExposureTraceUtils.appendTrace import com.gh.gamecenter.common.base.GlobalActivityManager -import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.base.activity.ToolBarActivity.NORMAL_FRAGMENT_BUNDLE +import com.gh.gamecenter.common.base.activity.ToolBarActivity.NORMAL_FRAGMENT_NAME import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.toArrayList import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.entity.GamePlatform @@ -20,15 +25,54 @@ import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.exposure.ExposureEvent.Companion.createEvent import com.gh.gamecenter.feature.exposure.ExposureType import com.gh.gamecenter.gamedetail.GameDetailFragment -import com.halo.assistant.HaloApp -/** - * Created by khy on 2017/3/24. - * 游戏详情页 - */ +@Route( + path = RouteConsts.activity.gameDetailActivity, + description = "游戏详情页" +) class GameDetailActivity : DownloadToolbarActivity() { + @JvmField + @Autowired(name = EntranceConsts.KEY_GAME_ID, description = "游戏 id", required = true) + var gameId: String? = null + + @JvmField + @Autowired(name = EntranceConsts.KEY_GAME_ENTITY, description = "游戏摘要实体,如果你不懂这个是什么,那么不要用它,直接传入游戏 id 即可") + var gameEntity: GameEntity? = null + + @JvmField + @Autowired(name = EntranceConsts.KEY_ENTRANCE, description = "入口埋点字段(开发内部使用)") + var entrance: String? = "" + + @JvmField + @Autowired(name = EntranceConsts.KEY_DEFAULT_TAB, description = "默认选中 tab 的类型(目前可选的有五个类型 `详情`, `专区`,`云存档`,`评价`,`论坛`),首次进入匹配并切换至对应 tab") + var defaultTab: String = "" + + @JvmField + @Autowired(name = EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB, description = "跳转到评论 tab,首次进入直接跳转到评论 tab") + var commentAsDefaultTab: Boolean = false + + @JvmField + @Autowired(name = EntranceConsts.KEY_SCROLL_TO_LIBAO, description = "滚动到礼包区域,首次进入滚动到礼包区域") + var scrollToLibao: Boolean = false + + @JvmField + @Autowired(name = EntranceConsts.KEY_SCROLL_TO_SERVER, description = "滚动到开服表区域,首次进入滚动到开服表区域") + var scrollToServer: Boolean = false + + @JvmField + @Autowired(name = EntranceConsts.KEY_OPEN_VIDEO_STREAMING, description = "打开视频流,首次进入打开视频流") + var openVideoStreaming: Boolean = false + + @JvmField + @Autowired(name = EntranceConsts.KEY_OPEN_PLATFORM_WINDOW, description = "打开多版本窗口,首次进入打开多版本窗口") + var openPlatformWindow: Boolean = false + override fun onCreate(savedInstanceState: Bundle?) { + TheRouter.inject(this) + + generateDataFromRoute() + super.onCreate(savedInstanceState) DisplayUtils.transparentStatusBar(this) } @@ -37,37 +81,21 @@ class GameDetailActivity : DownloadToolbarActivity() { return getTargetIntent(this, GameDetailActivity::class.java, GameDetailFragment::class.java) } - override fun getLayoutId(): Int { - return R.layout.activity_game_detail - } + override fun getLayoutId() = R.layout.activity_game_detail - override fun showToolbarAtLeft(): Boolean { - return true - } + override fun showToolbarAtLeft() = true + override fun showDownloadMenu() = true - override fun showDownloadMenu(): Boolean { - return true - } - - override fun onDestroy() { - super.onDestroy() - HaloApp.remove(Constants.GAME_DETAIL_COME_IN) - } - - override fun getActivityNameInChinese(): String { - return "游戏详情" - } + override fun getActivityNameInChinese() = "游戏详情" override fun getBusinessId(): Pair { - val fragment = targetFragment as? GameDetailFragment? - return if (fragment?.arguments != null) { - Pair(fragment.requireArguments().getString(EntranceConsts.KEY_GAMEID) ?: "", "") + return if (!gameId.isNullOrEmpty()) { + Pair(gameId ?: "", "") } else { super.getBusinessId() } } - override fun attachBaseContext(newBase: Context) { super.attachBaseContext(object : ContextWrapper(newBase) { override fun getSystemService(name: String): Any? { @@ -96,6 +124,13 @@ class GameDetailActivity : DownloadToolbarActivity() { ) } + private fun generateDataFromRoute() { + val bundle = intent.extras + + intent?.putExtra(NORMAL_FRAGMENT_NAME, GameDetailFragment::class.java.canonicalName) + intent?.putExtra(NORMAL_FRAGMENT_BUNDLE, bundle) + } + companion object { @JvmStatic @@ -131,9 +166,10 @@ class GameDetailActivity : DownloadToolbarActivity() { if (traceEvent != null) { val clickEvent = createEvent(gameEntity, traceEvent.source, appendTrace(traceEvent), ExposureType.CLICK) - log(clickEvent) + ExposureManager.log(clickEvent) bundle.putParcelable(EntranceConsts.KEY_TRACE_EVENT, clickEvent) } + if (gameEntity != null && traceEvent != null && gameEntity.id != traceEvent.payload.gameId) { // 当游戏 ID 跟曝光 traceEvent 的游戏ID 不一样的时候更新 traceEvent 的游戏ID val (payload) = createEvent( @@ -144,31 +180,35 @@ class GameDetailActivity : DownloadToolbarActivity() { ) traceEvent.payload = payload } + if (defaultTab.isNotEmpty()) { bundle.putString(EntranceConsts.KEY_TARGET, defaultTab) } + if (isSkipGameComment) { - bundle.putBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT, true) + bundle.putBoolean(EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB, true) } + if (scrollToLibao) { - bundle.putString(EntranceConsts.KEY_TARGET, GameDetailFragment.TAB_DESC) + bundle.putString(EntranceConsts.KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO, true) } + if (scrollToServer) { - bundle.putString(EntranceConsts.KEY_TARGET, GameDetailFragment.TAB_DESC) + bundle.putString(EntranceConsts.KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_SERVER, true) } - bundle.putString(EntranceConsts.KEY_GAMEID, gameEntity?.id) + + bundle.putString(EntranceConsts.KEY_GAME_ID, gameEntity?.id) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - bundle.putParcelable(GameEntity.TAG, gameEntity) - context.startActivity( - getTargetIntent( - context, - GameDetailActivity::class.java, - GameDetailFragment::class.java, - bundle - ) - ) + bundle.putParcelable(EntranceConsts.KEY_GAME_ENTITY, gameEntity) + + TheRouter + .build(RouteConsts.activity.gameDetailActivity) + .fillParams { + it.putAll(bundle) + } + .navigation(context) } @JvmStatic @@ -178,7 +218,7 @@ class GameDetailActivity : DownloadToolbarActivity() { entrance: String?, traceEvent: ExposureEvent? ) { - startGameDetailActivity(context, gameId, entrance, -1, traceEvent = traceEvent) + startGameDetailActivity(context, gameId, entrance, isSkipGameComment = false, traceEvent = traceEvent) } @JvmStatic @@ -186,7 +226,6 @@ class GameDetailActivity : DownloadToolbarActivity() { context: Context, gameId: String, entrance: String?, - defaultTab: Int = -1, isSkipGameComment: Boolean = false, scrollToLibao: Boolean = false, openVideoStreaming: Boolean = false, @@ -197,7 +236,6 @@ class GameDetailActivity : DownloadToolbarActivity() { context, gameId, entrance, - defaultTab, isSkipGameComment, scrollToLibao, openVideoStreaming, @@ -211,7 +249,6 @@ class GameDetailActivity : DownloadToolbarActivity() { /** * @param gameId 游戏Id - * @param defaultTab 默认定位到哪个tab * @param isSkipGameComment 是否跳转到评论tab * @param scrollToLibao 滚动到礼包区域 * @param openVideoStreaming 是否打开视频流 @@ -225,7 +262,6 @@ class GameDetailActivity : DownloadToolbarActivity() { context: Context, gameId: String, entrance: String?, - defaultTab: Int = -1, isSkipGameComment: Boolean = false, scrollToLibao: Boolean = false, openVideoStreaming: Boolean = false, @@ -248,7 +284,7 @@ class GameDetailActivity : DownloadToolbarActivity() { appendTrace(traceEvent), ExposureType.CLICK ) - log(clickEvent) + ExposureManager.log(clickEvent) bundle.putParcelable(EntranceConsts.KEY_TRACE_EVENT, clickEvent) } if (traceEvent != null && gameId != traceEvent.payload.gameId) { @@ -261,15 +297,12 @@ class GameDetailActivity : DownloadToolbarActivity() { ) traceEvent.payload = payload } - if (defaultTab != -1) { - bundle.putInt(EntranceConsts.KEY_TARGET, defaultTab) - } if (isSkipGameComment) { - bundle.putBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT, true) + bundle.putBoolean(EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB, true) } if (openVideoStreaming) { bundle.putBoolean(EntranceConsts.KEY_OPEN_VIDEO_STREAMING, true) - bundle.putString(EntranceConsts.KEY_TARGET, GameDetailFragment.TAB_DESC) + bundle.putString(EntranceConsts.KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) } if (openPlatformWindow) { bundle.putBoolean(EntranceConsts.KEY_OPEN_PLATFORM_WINDOW, true) @@ -283,10 +316,10 @@ class GameDetailActivity : DownloadToolbarActivity() { } } if (scrollToLibao) { - bundle.putString(EntranceConsts.KEY_TARGET, GameDetailFragment.TAB_DESC) + bundle.putString(EntranceConsts.KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO, true) } - bundle.putString(EntranceConsts.KEY_GAMEID, gameId) + bundle.putString(EntranceConsts.KEY_GAME_ID, gameId) bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) bundle.putParcelable(EntranceConsts.KEY_CUSTOM_PAGE_TRACK_DATA, customPageTrackData) bundle.putString(EntranceConsts.KEY_LAST_PAGE_ID, GlobalActivityManager.getLastPageEntity().pageId) @@ -295,14 +328,13 @@ class GameDetailActivity : DownloadToolbarActivity() { EntranceConsts.KEY_LAST_PAGE_BUSINESS_ID, GlobalActivityManager.getLastPageEntity().pageBusinessId ) - context.startActivity( - getTargetIntent( - context, - GameDetailActivity::class.java, - GameDetailFragment::class.java, - bundle - ) - ) + + TheRouter + .build(RouteConsts.activity.gameDetailActivity) + .fillParams { + it.putAll(bundle) + } + .navigation(context) } } diff --git a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt index 3a582a0cd2..f8d98ecf9e 100644 --- a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt @@ -34,7 +34,7 @@ import androidx.transition.* import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager.OnPageChangeListener -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.imagepipeline.core.ImagePipeline diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index cc01786d3d..9f063aada7 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -445,24 +445,6 @@ public class SkipActivity extends BaseActivity { break; } } - } else if ("market".equals(uri.getScheme())) { - String host = uri.getHost(); - String id = ""; - try { - id = uri.getQueryParameter("id"); - } catch (UnsupportedOperationException e) { - e.printStackTrace(); - } - if (host != null) { - if ("details".equals(host)) { - bundle = new Bundle(); - bundle.putString(KEY_TO, EntranceConsts.KEY_MARKET_DETAILS); - bundle.putString(KEY_DATA, id); - EntranceUtils.jumpActivity(this, bundle); - } else { - EntranceUtils.jumpActivity(this, new Bundle()); // 跳转至首页 - } - } } } diff --git a/app/src/main/java/com/gh/gamecenter/SkipCompatActivity.kt b/app/src/main/java/com/gh/gamecenter/SkipCompatActivity.kt new file mode 100644 index 0000000000..a78e110cff --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/SkipCompatActivity.kt @@ -0,0 +1,107 @@ +package com.gh.gamecenter + +import android.app.Activity +import android.content.Context +import android.net.Uri +import android.os.Bundle +import com.therouter.router.Navigator +import com.therouter.router.interceptor.NavigationCallback +import com.therouter.TheRouter +import com.gh.common.util.EntranceUtils +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.DialogHelper +import com.gh.gamecenter.common.utils.dropSchemeAndHost +import com.halo.assistant.HaloApp +import com.lightgame.utils.Utils + +class SkipCompatActivity : SkipActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + val uri = intent.data + if (handleSkip(this, uri)) { + intent.setData(null) + } + + super.onCreate(savedInstanceState) + + finish() + } + + companion object { + const val TAG = "SkipCompat" + + const val HOST = "app" + + const val SCHEME = "ghzhushou" + const val MARKET = "market" + + fun handleSkip(context: Context, uri: Uri?): Boolean { + if (uri == null) return false + + // Handle skip + if (uri.scheme == SCHEME) { + Utils.log(TAG, "handleSkip: $uri") + + val host = uri.host + if (host == HOST) { + TheRouter + .build(uri.dropSchemeAndHost()) + .navigation(context, object : NavigationCallback() { + override fun onFound(postcard: Navigator) { + Utils.log(TAG, "navigate to postcard ${postcard.originalUrl} onFound" ) + } + + override fun onLost(postcard: Navigator, requestCode: Int) { + Utils.log(TAG, "navigate to postcard ${postcard.originalUrl} onLost" ) + + if (HaloApp.getInstance().isAlreadyUpAndRunning) { + // 在光环应用内时,显示不支持弹窗 + // 显示不支持弹窗 + DialogHelper.showUpgradeDialog(context) + } else { + // 在光环应用外跳转时,重定向至首页 + EntranceUtils.jumpActivity(context, Bundle()) + } + } + + override fun onArrival(postcard: Navigator) { + Utils.log(TAG, "navigate to postcard ${postcard.originalUrl} onArrival" ) + } + + override fun onActivityCreated(postcard: Navigator, activity: Activity) { + Utils.log(TAG, "navigate to postcard ${postcard.originalUrl} onActivityCreated" ) + } + }) + + return true + } + } else if (uri.scheme == MARKET) { + val host = uri.host + var id = "" + try { + id = uri.getQueryParameter("id") ?: "" + } catch (e: Exception) { + e.printStackTrace() + } + + if (host != null) { + if ("details" == host) { + val bundle = Bundle() + bundle.putString( + EntranceConsts.KEY_TO, + EntranceConsts.KEY_MARKET_DETAILS + ) + bundle.putString(EntranceConsts.KEY_DATA, id) + EntranceUtils.jumpActivity(context, bundle) + } else { + EntranceUtils.jumpActivity(context, Bundle()) // 跳转至首页 + } + return true + } + } + + return false + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt index bace256651..2efd59cad4 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt @@ -14,8 +14,8 @@ import androidx.core.app.NotificationCompat import androidx.core.text.bold import androidx.core.text.buildSpannedString import androidx.core.text.color -import com.alibaba.android.arouter.facade.annotation.Route -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.router.Route +import com.therouter.TheRouter import com.gh.common.dialog.NewPrivacyPolicyDialogFragment import com.gh.common.util.DeviceTokenUtils import com.gh.common.util.DialogUtils @@ -29,6 +29,7 @@ import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.tracker.TrackerLogger import com.gh.gamecenter.common.utils.* +import com.gh.gamecenter.core.iinterface.ISplashScreen import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IPackageUtilsProvider import com.gh.gamecenter.core.provider.IPushProvider @@ -47,7 +48,7 @@ import java.util.* * 引导页面 */ @Route(path = RouteConsts.activity.splashActivity) -class SplashScreenActivity : BaseActivity() { +class SplashScreenActivity : BaseActivity(), ISplashScreen { private var mSharedPreferences: SharedPreferences? = null private var mIsNewForThisVersion = false @@ -136,9 +137,8 @@ class SplashScreenActivity : BaseActivity() { } private fun logAppLaunch() { - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) + val appProvider = TheRouter.get(IAppProvider::class.java) val signatureHash = packageUtilsConfig?.getApkSignatureByPackageName(this, packageName)?.get(0) val sideLoadInfo = packageUtilsConfig?.getSideLoadedInfo() val trackEvent = JSONObject() @@ -282,7 +282,7 @@ class SplashScreenActivity : BaseActivity() { SensorsBridge.init(HaloApp.getInstance(), HaloApp.getInstance().channel) SensorsBridge.setOAID(HaloApp.getInstance().oaid) - val pushProvider = ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider + val pushProvider = TheRouter.get(IPushProvider::class.java) val registrationId = pushProvider?.getRegistrationId(this) if (!registrationId.isNullOrEmpty()) { SensorsBridge.profileAppend(KEY_REGISTRATION_ID, registrationId) diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.kt b/app/src/main/java/com/gh/gamecenter/WebActivity.kt index 5454b603ca..9980074829 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.kt @@ -6,7 +6,7 @@ import android.os.Bundle import android.text.TextUtils import android.view.KeyEvent import android.view.View -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts diff --git a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java index 6c95baa26e..959744d8d7 100644 --- a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java @@ -19,8 +19,8 @@ import android.util.Base64; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.router.Route; +import com.therouter.TheRouter; import com.gh.common.constant.Config; import com.gh.common.util.IntegralLogHelper; import com.gh.gamecenter.common.callback.BiCallback; @@ -52,7 +52,7 @@ import java.io.ByteArrayOutputStream; */ @Route(path = RouteConsts.activity.weiBoShareActivity) public class WeiBoShareActivity extends Activity implements WbShareCallback { - private IAppProvider mAppProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + private final IAppProvider mAppProvider = TheRouter.get(IAppProvider.class); private static final String WEIBO_SCOPE = ( "email,direct_messages_read,direct_messages_write," diff --git a/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt index 9fc5315929..6c335e7a8d 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/VideoEntity.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.entity import android.os.Parcelable -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider import com.gh.gamecenter.feature.entity.* @@ -93,7 +93,7 @@ open class VideoEntity( get() = _count ?: Count() fun getThumb(): String { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) return if (!configProvider?.getVideoSnapshotSuffix().isNullOrEmpty()) { "$url${configProvider?.getVideoSnapshotSuffix()},t_0,f_jpg,w_0,h_0,ar_auto" } else { diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt index c98302b75a..2be59c96a3 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumDetailFragment.kt @@ -709,7 +709,7 @@ class ForumDetailFragment : BaseLazyTabFragment(), IScrollable { } else { val fuliFragment = childFragmentManager.findFragmentByTag("${tag}$INDEX_TRENDS") ?: FuLiFragment() fuliFragment.arguments = bundleOf( - GameEntity.TAG to game.toGameEntity(), + EntranceConsts.KEY_GAME_ENTITY to game.toGameEntity(), EntranceConsts.KEY_ENTRANCE to mEntrance, EntranceConsts.KEY_PATH to TAB_TRENDS ) diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/follow/fragment/FollowHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/forum/home/follow/fragment/FollowHomeFragment.kt index fdb45a5a6b..0f9f14cbad 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/home/follow/fragment/FollowHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/home/follow/fragment/FollowHomeFragment.kt @@ -19,7 +19,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.OnScrollListener -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.util.CheckLoginUtils import com.gh.common.util.DirectUtils import com.gh.gamecenter.GameDetailActivity @@ -150,7 +150,7 @@ class FollowHomeFragment : LazyFragment(), IScrollable { KEY_LAUNCH_ALL_FOLLOW, this, object : ActivityResultContract?>() { - override fun createIntent(context: Context, input: Unit?): Intent { + override fun createIntent(context: Context, input: Unit): Intent { return AllFollowedActivity.getIntent(context) } @@ -280,7 +280,6 @@ class FollowHomeFragment : LazyFragment(), IScrollable { requireContext(), it.id, "", - -1, traceEvent = it.exposureEvent ) }) @@ -309,15 +308,14 @@ class FollowHomeFragment : LazyFragment(), IScrollable { }) newDetailDestination.observe(viewLifecycleOwner, EventObserver { - ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + TheRouter.build(RouteConsts.activity.newsDetailActivity) .withString(EntranceConsts.KEY_NEWSID, it) .withString(EntranceConsts.KEY_ENTRANCE, "") .navigation(requireActivity()) }) articleCommentDetailDestination.observe(viewLifecycleOwner, EventObserver { - val messageDetailProvider = ARouter.getInstance().build(RouteConsts.provider.messageDetail) - .navigation() as? IMessageDetailProvider + val messageDetailProvider = TheRouter.get(IMessageDetailProvider::class.java) if (messageDetailProvider != null) { val intent = messageDetailProvider.getIntentById(requireContext(), it, -1, false, "") startActivity(intent) @@ -340,10 +338,7 @@ class FollowHomeFragment : LazyFragment(), IScrollable { updateOkhttpCacheAction.observe(viewLifecycleOwner, EventObserver { // 更新okhttp缓存数据 - val visitManagerProvider = - ARouter.getInstance() - .build(RouteConsts.provider.visitManager) - .navigation() as? IVisitManagerProvider + val visitManagerProvider = TheRouter.get(IVisitManagerProvider::class.java) visitManagerProvider?.updateOkhttpCache(requireContext(), it) }) } diff --git a/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt b/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt index ca71479618..ae429a5084 100644 --- a/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.game.upload import android.content.Context import android.content.Intent import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.EntranceConsts diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 6f038a0611..2a3cf72ac4 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -438,7 +438,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { val args = arguments ?: Bundle() mAutoDownload = args.getBoolean(EntranceConsts.KEY_AUTO_DOWNLOAD) mTraceEvent = args.getParcelable(EntranceConsts.KEY_TRACE_EVENT) - mSkipGameComment = args.getBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT) + mSkipGameComment = args.getBoolean(EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB) mIsOpenPlatformWindow = args.getBoolean(EntranceConsts.KEY_OPEN_PLATFORM_WINDOW) mSkeleton = Skeleton.bind(mBinding.listSkeleton) @@ -451,11 +451,11 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { .load(R.layout.fragment_gamedetail_skeleton) .show() - val gameId = args.getString(EntranceConsts.KEY_GAMEID) ?: "" + val gameId = args.getString(EntranceConsts.KEY_GAME_ID) ?: "" val factory = GameDetailViewModel.Factory( HaloApp.getInstance().application, gameId, - args.getParcelable(GameEntity.TAG) + args.getParcelable(EntranceConsts.KEY_GAME_ENTITY) ) mViewModel = viewModelProviderFromParent(factory, gameId) mPackageViewModel = viewModelProvider(PackageViewModel.Factory()) @@ -464,8 +464,8 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { mBodyBinding.gamedetailVp.doOnPageSelected { position -> if (!isAdded) return@doOnPageSelected - val bbsPosition = getTabPositionFromTabType(TAB_BBS) - val trendsPosition = getTabPositionFromTabType(TAB_TRENDS) + val bbsPosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_BBS) + val trendsPosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS) if (mNewGameDetailEntity?.bbsTab != null && position == bbsPosition) { DirectUtils.directToLinkPage( @@ -482,7 +482,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { }, 200) } else if (mNewGameDetailEntity?.zone != null && mNewGameDetailEntity?.zone?.style != "default" && position == trendsPosition && mNewGameDetailEntity?.bbsTab != null) { // 跳转论坛-专区 - val entrance = if (mDestinationTab == getTabPositionFromTabType(TAB_TRENDS)) { + val entrance = if (mDestinationTab == getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS)) { if (mEntrance.contains("搜索")) "搜索页面" else "其他" } else "游戏详情页" mNewGameDetailEntity?.bbsTab?.link?.let { @@ -839,7 +839,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { DetailDownloadUtils.updateViewHolder(viewHolder) mDestinationTab = - getTabPositionFromTabType(arguments?.getString(EntranceConsts.KEY_TARGET, TAB_DESC) ?: TAB_DESC) + getTabPositionFromTabType(arguments?.getString(EntranceConsts.KEY_TARGET, EntranceConsts.TAB_TYPE_DESC) ?: EntranceConsts.TAB_TYPE_DESC) // destinationTab 的优先级最高,关注和关联关注在它的后面 if (mDestinationTab != -1) { @@ -1015,7 +1015,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { } val bundle = Bundle() - bundle.putParcelable(GameEntity.TAG, mGameEntity) + bundle.putParcelable(EntranceConsts.KEY_GAME_ENTITY, mGameEntity) bundle.putString(EntranceConsts.KEY_ENTRANCE, mEntrance) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO, scrollToLibao) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_SERVER, scrollToServer) @@ -1031,21 +1031,21 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { mTabTitleList.clear() val tag = "android:switcher:${mBodyBinding.gamedetailVp.id}:" - val descFragment = childFragmentManager.findFragmentByTag("${tag}$TAB_DESC") ?: DescFragment() + val descFragment = childFragmentManager.findFragmentByTag("${tag}${EntranceConsts.TAB_TYPE_DESC}") ?: DescFragment() descFragment.arguments = bundle mFragmentsList.add(descFragment) mTabTitleList.add(getString(R.string.game_detail_desc)) - mTabTypeList.add(TAB_DESC) + mTabTypeList.add(EntranceConsts.TAB_TYPE_DESC) if (data.showArchive) { val cloudArchiveFragment = - childFragmentManager.findFragmentByTag("${tag}${TAB_ARCHIVE}") ?: CloudArchiveFragment() + childFragmentManager.findFragmentByTag("${tag}${EntranceConsts.TAB_TYPE_ARCHIVE}") ?: CloudArchiveFragment() bundle.putParcelable(EntranceConsts.KEY_GAME, mGameEntity ?: GameEntity()) bundle.putString(EntranceConsts.KEY_ARCHIVE_CONFIG_URL, data.archiveTab.configUrl) cloudArchiveFragment.arguments = bundle mFragmentsList.add(cloudArchiveFragment) mTabTitleList.add(getString(R.string.game_detail_cloud_archive)) - mTabTypeList.add(TAB_ARCHIVE) + mTabTypeList.add(EntranceConsts.TAB_TYPE_ARCHIVE) NewFlatLogUtils.logCloudArchiveGameDetailTabRelated( "cloud_save_tab_show", @@ -1055,13 +1055,13 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { } if (data.showComment) { - val ratingFragment = childFragmentManager.findFragmentByTag("${tag}${TAB_RATING}") ?: RatingFragment() - bundle.putBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT, mSkipGameComment) + val ratingFragment = childFragmentManager.findFragmentByTag("${tag}${EntranceConsts.TAB_TYPE_RATING}") ?: RatingFragment() + bundle.putBoolean(EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB, mSkipGameComment) bundle.putBoolean(EntranceConsts.KEY_DIRECT_COMMENT, data.directComment) ratingFragment.arguments = bundle mFragmentsList.add(ratingFragment) mTabTitleList.add(getString(R.string.game_detail_comment)) - mTabTypeList.add(TAB_RATING) + mTabTypeList.add(EntranceConsts.TAB_TYPE_RATING) } data.zone?.let { @@ -1072,7 +1072,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { mFragmentsList.add(Fragment()) } else if (it.style == "link") { //显示web页面 - val webFragment = childFragmentManager.findFragmentByTag("${tag}${TAB_TRENDS}") ?: WebFragment() + val webFragment = childFragmentManager.findFragmentByTag("${tag}${EntranceConsts.TAB_TYPE_TRENDS}") ?: WebFragment() val webBundle = Bundle() webBundle.putString(EntranceConsts.KEY_ENTRANCE, "游戏专区") webBundle.putString(EntranceConsts.KEY_URL, it.link) @@ -1080,7 +1080,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { webFragment.arguments = webBundle mFragmentsList.add(webFragment) } else { - val fuliFragment = childFragmentManager.findFragmentByTag("${tag}${TAB_TRENDS}") ?: FuLiFragment() + val fuliFragment = childFragmentManager.findFragmentByTag("${tag}${EntranceConsts.TAB_TYPE_TRENDS}") ?: FuLiFragment() fuliFragment.arguments = bundle mFragmentsList.add(fuliFragment) } @@ -1089,7 +1089,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { } else { mTabTitleList.add(getString(R.string.game_detail_dongtai)) } - mTabTypeList.add(TAB_TRENDS) + mTabTypeList.add(EntranceConsts.TAB_TYPE_TRENDS) } var isShowBbs = true @@ -1103,7 +1103,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { if (isShowBbs && mGameEntity?.shouldUseMirrorInfo() == false) { mFragmentsList.add(Fragment()) mTabTitleList.add(getString(R.string.game_detail_bbs)) - mTabTypeList.add(TAB_BBS) + mTabTypeList.add(EntranceConsts.TAB_TYPE_BBS) } } @@ -1116,7 +1116,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { gamedetailVp.doOnPageSelected { logTabClick(it) } - gamedetailVp.currentItem = getTabPositionFromTabType(TAB_DESC) + gamedetailVp.currentItem = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_DESC) mBodyBinding.tabLayout.setupWithViewPager(gamedetailVp) mBodyBinding.tabIndicator.setupWithTabLayout(mBodyBinding.tabLayout) @@ -1125,7 +1125,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { for (i in 0 until mBodyBinding.tabLayout.tabCount) { val tab = mBodyBinding.tabLayout.getTabAt(i) ?: continue val tabTitle = if (tab.text != null) tab.text.toString() else "" - if (data.showArchive && i == getTabPositionFromTabType(TAB_ARCHIVE)) { + if (data.showArchive && i == getTabPositionFromTabType(EntranceConsts.TAB_TYPE_ARCHIVE)) { tab.customView = getArchiveTabView(tabTitle) tab.view.run { clipChildren = false @@ -1258,7 +1258,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { if (mNewGameDetailEntity!!.showComment) { if (mSkipGameComment) { - tabPerformClick(getTabPositionFromTabType(TAB_RATING)) + tabPerformClick(getTabPositionFromTabType(EntranceConsts.TAB_TYPE_RATING)) mBodyBinding.gamedetailAppbar.setExpanded(false) mSkipGameComment = false } @@ -1759,13 +1759,13 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(reuse: EBReuse) { if (SKIP_DESC == reuse.type) { - tabPerformClick(getTabPositionFromTabType(TAB_DESC)) + tabPerformClick(getTabPositionFromTabType(EntranceConsts.TAB_TYPE_DESC)) } else if (OPEN_APPBAR == reuse.type && !mIsTouchScreen) { mBodyBinding.gamedetailAppbar.setExpanded(true, true) } else if (SKIP_FULI == reuse.type) { - tabPerformClick(getTabPositionFromTabType(TAB_TRENDS)) + tabPerformClick(getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS)) } else if (SKIP_RATING == reuse.type) { - tabPerformClick(getTabPositionFromTabType(TAB_RATING)) + tabPerformClick(getTabPositionFromTabType(EntranceConsts.TAB_TYPE_RATING)) } else if (CLOSE_APPBAR == reuse.type && !mIsTouchScreen) { mBodyBinding.gamedetailAppbar.setExpanded(false, true) } else if ("download" == reuse.type) { @@ -2012,8 +2012,8 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { } private fun tabPerformClick(position: Int) { - val trendsTabPosition = getTabPositionFromTabType(TAB_TRENDS) - val bbsTabPosition = getTabPositionFromTabType(TAB_BBS) + val trendsTabPosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS) + val bbsTabPosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_BBS) when (position) { trendsTabPosition -> { @@ -2023,7 +2023,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { ) { performJumpContentCard("func_zone", position) } else { - mBodyBinding.gamedetailVp.currentItem = getTabPositionFromTabType(TAB_TRENDS) + mBodyBinding.gamedetailVp.currentItem = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS) } } @@ -2031,7 +2031,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { if (!mTabTitleList.contains(getString(R.string.game_detail_bbs))) { performJumpContentCard("func_bbs", position) } else { - mBodyBinding.gamedetailVp.currentItem = getTabPositionFromTabType(TAB_BBS) + mBodyBinding.gamedetailVp.currentItem = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_BBS) } } @@ -2072,11 +2072,11 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { val entrance = if (mEntrance.contains("论坛详情")) "论坛" else "游戏" mGameEntity?.run { when (mTabTypeList[position]) { - TAB_DESC -> { + EntranceConsts.TAB_TYPE_DESC -> { NewLogUtils.logGameDetailTabClick(name ?: "", id, "详情") } - TAB_TRENDS -> { + EntranceConsts.TAB_TYPE_TRENDS -> { NewLogUtils.logGameDetailTabClick( "view_game_detail_special_area_tab", entrance, @@ -2087,7 +2087,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { NewLogUtils.logGameDetailTabClick(name ?: "", id, "专区") } - TAB_ARCHIVE -> { + EntranceConsts.TAB_TYPE_ARCHIVE -> { NewFlatLogUtils.logCloudArchiveGameDetailTabRelated( "cloud_save_tab_click", mGameEntity?.id ?: "", @@ -2106,12 +2106,12 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { ) } - TAB_RATING -> { + EntranceConsts.TAB_TYPE_RATING -> { NewLogUtils.logGameDetailTabClick("view_game_detail_comment_tab", entrance, id, gameType, bbsId) NewLogUtils.logGameDetailTabClick(name ?: "", id, "评论") } - TAB_BBS -> { + EntranceConsts.TAB_TYPE_BBS -> { NewLogUtils.logGameDetailTabClick(name ?: "", id, "论坛") } } @@ -2367,7 +2367,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { private fun updateArchiveTabUI() { mBodyBinding.tabLayout.run { - val archivePosition = getTabPositionFromTabType(TAB_ARCHIVE) + val archivePosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_ARCHIVE) getTabAt(archivePosition)?.customView?.findViewById(R.id.newIv)?.visibility = View.VISIBLE } } @@ -2384,7 +2384,7 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { override fun onBackPressed(): Boolean { mOrientationUtils?.backToProtVideo() - val trendsTabPosition = getTabPositionFromTabType(TAB_TRENDS) + val trendsTabPosition = getTabPositionFromTabType(EntranceConsts.TAB_TYPE_TRENDS) if (mBodyBinding.gamedetailVp.currentItem == trendsTabPosition && mFragmentsList[trendsTabPosition] is WebFragment @@ -2647,12 +2647,6 @@ class GameDetailFragment : BaseLazyFragment(), IScrollable { } companion object { - const val TAB_DESC = "详情" - const val TAB_TRENDS = "专区" - const val TAB_ARCHIVE = "云存档" - const val TAB_RATING = "评价" - const val TAB_BBS = "论坛" - const val SKIP_DESC = "skipDesc" const val SKIP_FULI = "skipFuli" const val SKIP_RATING = "skipRatting" diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt index 06b1f4d687..145229b6b0 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt @@ -7,7 +7,7 @@ import android.view.View import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.util.DirectUtils import com.gh.common.util.OnSyncCallBack import com.gh.common.util.SyncDataBetweenPageHelper @@ -116,7 +116,7 @@ class DescFragment: LazyFragment(), IScrollable { } override fun onFragmentFirstVisible() { - mGameEntity = arguments?.getParcelable(GameEntity.TAG) + mGameEntity = arguments?.getParcelable(EntranceConsts.KEY_GAME_ENTITY) openVideoStreaming = arguments?.getBoolean(EntranceConsts.KEY_OPEN_VIDEO_STREAMING, false) ?: false mScrollToLibao = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO, false) ?: false mScrollToServer = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_SERVER, false) ?: false @@ -306,8 +306,7 @@ class DescFragment: LazyFragment(), IScrollable { } private fun showFloatingWindowIfNeeded() { - val floatingWindowProvider = - ARouter.getInstance().build(RouteConsts.provider.floatingwindow).navigation() as? IFloatingWindowProvider + val floatingWindowProvider = TheRouter.get(IFloatingWindowProvider::class.java) floatingWindowProvider?.getAndShowFloatingWindow( mGameEntity?.id ?: "", diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt index bcf4184c1d..9e67edc43b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/FuLiFragment.kt @@ -59,7 +59,7 @@ class FuLiFragment : LazyFragment(), IScrollable { } override fun onFragmentFirstVisible() { - val gameEntity = arguments?.getParcelable(GameEntity.TAG) as? GameEntity + val gameEntity = arguments?.getParcelable(EntranceConsts.KEY_GAME_ENTITY) as? GameEntity val gameDetailFactory = GameDetailViewModel.Factory(HaloApp.getInstance().application, gameEntity?.id, gameEntity) shouldScroolToLibao = arguments?.getBoolean(EntranceConsts.KEY_SCROLL_TO_LIBAO) ?: false diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt index 7d511c13fa..27f03678bc 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/fuli/answer/GameDetailAnswerAdapter.kt @@ -52,7 +52,6 @@ class GameDetailAnswerAdapter( val path = "游戏详情-动态" holder.bindAnswerItem(entity, mEntrance, path) holder.binding.title.setOnClickListener { - HaloApp.put(Constants.GAME_DETAIL_COME_IN, true) MtaHelper.onEvent("进入问答", "游戏详情", mViewModel.gameCommunity?.name + "+" + mViewModel.game?.name) if ("community_article" == entity.type) { MtaHelper.onEvent("游戏详情_新", "点击社区文章", mViewModel.game?.name + "+" + entity.questions.title) @@ -81,7 +80,6 @@ class GameDetailAnswerAdapter( } holder.itemView.setOnClickListener { - HaloApp.put(Constants.GAME_DETAIL_COME_IN, true) MtaHelper.onEvent("进入问答", "游戏详情", mViewModel.gameCommunity?.name + "+" + mViewModel.game?.name) if ("community_article" == entity.type) { MtaHelper.onEvent("游戏详情_新", "点击社区文章", mViewModel.game?.name + "+" + entity.questions.title) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt index 9860b689cf..5488c7db80 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFoldActivity.kt @@ -18,7 +18,7 @@ class RatingFoldActivity : ToolBarActivity() { @JvmStatic fun getIntent(context: Context, game: GameEntity, entrance: String, path: String): Intent { val bundle = Bundle() - bundle.putParcelable(GameEntity.TAG, game) + bundle.putParcelable(EntranceConsts.KEY_GAME_ENTITY, game) bundle.putString(EntranceConsts.KEY_ENTRANCE, mergeEntranceAndPath(entrance, path)) bundle.putSerializable(EntranceConsts.KEY_LOCATION, RatingViewModel.RatingType.FOLD_RATING) return getTargetIntent(context, RatingFoldActivity::class.java, RatingFragment::class.java, bundle) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt index 2dced2a5cd..e731dc8842 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt @@ -91,7 +91,7 @@ class RatingFragment : LazyListFragment(), IScro override fun provideListViewModel(): RatingViewModel { val factory = RatingViewModel.Factory( HaloApp.getInstance().application, - arguments?.getParcelable(GameEntity.TAG)!!, mRatingType!! + arguments?.getParcelable(EntranceConsts.KEY_GAME_ENTITY)!!, mRatingType!! ) return ViewModelProviders.of(this, factory).get(RatingViewModel::class.java) } @@ -109,7 +109,7 @@ class RatingFragment : LazyListFragment(), IScro override fun onFragmentPause() { super.onFragmentPause() - val game = arguments?.getParcelable(GameEntity.TAG) + val game = arguments?.getParcelable(EntranceConsts.KEY_GAME_ENTITY) val stayTime = (System.currentTimeMillis() - startPageTime) / 1000 NewLogUtils.logGameDetailTabOrCommentDetailPause( "jump_game_detail_comment_tab", @@ -128,7 +128,7 @@ class RatingFragment : LazyListFragment(), IScro super.onFragmentFirstVisible() val horizontalPadding = com.gh.gamecenter.common.R.dimen.game_detail_item_horizontal_padding.toPx() - mSkipGameComment = arguments?.getBoolean(EntranceConsts.KEY_SKIP_GAME_COMMENT) + mSkipGameComment = arguments?.getBoolean(EntranceConsts.KEY_COMMENT_AS_DEFAULT_TAB) mListRv?.setPadding(horizontalPadding, 0, horizontalPadding, 0) mListRefresh?.setBackgroundColor(ContextCompat.getColor(requireContext(), com.gh.gamecenter.common.R.color.transparent)) mListRefresh?.isEnabled = mRatingType != RatingViewModel.RatingType.RATING diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt index cecfc0f555..bc94e4449e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt @@ -11,7 +11,7 @@ import androidx.core.content.ContextCompat import androidx.core.widget.doOnTextChanged import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.exposure.ExposureManager import com.gh.common.util.NewFlatLogUtils import com.gh.common.util.NewLogUtils diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt index 5fe912b3b9..db2f1d5cc4 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/edit/RatingEditActivity.kt @@ -133,7 +133,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { return } setToolbarMenu(R.menu.menu_game_comment) - mGame = intent.getParcelableExtra(GameEntity.TAG) ?: GameEntity(id = "") + mGame = intent.getParcelableExtra(EntranceConsts.KEY_GAME_ENTITY) ?: GameEntity(id = "") mFromAmway = intent.getBooleanExtra(EntranceConsts.KEY_AMWAY, false) mIsSkipSuccessPage = intent.getBooleanExtra(EntranceConsts.KEY_SKIP_SUCCESS_PAGE, false) mComment = intent.getParcelableExtra(RatingComment::class.java.simpleName) @@ -661,7 +661,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { isSkipSuccessPage: Boolean = true ): Intent { val intent = Intent(context, RatingEditActivity::class.java) - intent.putExtra(GameEntity.TAG, game) + intent.putExtra(EntranceConsts.KEY_GAME_ENTITY, game) intent.putExtra(EntranceConsts.KEY_RATING_STAR_COUNT, starCount) intent.putExtra(EntranceConsts.KEY_AMWAY, fromAmway) intent.putExtra(EntranceConsts.KEY_SKIP_SUCCESS_PAGE, isSkipSuccessPage) @@ -672,7 +672,7 @@ class RatingEditActivity : ToolBarActivity(), KeyboardHeightObserver { fun getPatchIntent(context: Context, game: GameEntity, comment: RatingComment): Intent { val intent = Intent(context, RatingEditActivity::class.java) - intent.putExtra(GameEntity.TAG, game) + intent.putExtra(EntranceConsts.KEY_GAME_ENTITY, game) intent.putExtra(RatingComment::class.java.simpleName, comment) return intent } diff --git a/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt b/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt index ee61238028..6dfaaa71e4 100644 --- a/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt +++ b/app/src/main/java/com/gh/gamecenter/help/HelpAndFeedbackBridge.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.help import android.content.Context import android.content.Intent import android.os.Bundle -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType @@ -11,7 +11,7 @@ import com.gh.gamecenter.common.provider.IHelpAndFeedbackProvider object HelpAndFeedbackBridge { private val mHelpAndFeedbackHelp by lazy { - ARouter.getInstance().build(RouteConsts.provider.helpAndFeedback).navigation() as? IHelpAndFeedbackProvider + TheRouter.get(IHelpAndFeedbackProvider::class.java) } @JvmStatic diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt index 021701f3b1..f813dbc67b 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt @@ -298,8 +298,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable { requireContext(), game.id, entrance, - -1, - traceEvent = game.exposureEvent + traceEvent = game.exposureEvent, ) } @@ -402,8 +401,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable { requireContext(), gameId = gameId, entrance = "自定义页面", - defaultTab = -1, - traceEvent = exposureEvent + traceEvent = exposureEvent, ) }) diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/CustomWelcomeDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/home/custom/CustomWelcomeDialogFragment.kt index 88ec90535b..8a5352395f 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/CustomWelcomeDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/CustomWelcomeDialogFragment.kt @@ -14,7 +14,7 @@ import android.view.ViewGroup import android.view.Window import android.view.animation.PathInterpolator import android.widget.RelativeLayout -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.exposure.ExposureManager import com.gh.common.exposure.ExposureTraceUtils import com.gh.common.util.DirectUtils @@ -120,9 +120,7 @@ class CustomWelcomeDialogFragment : BaseDialogFragment() { mWelcomeEntity?.let { DirectUtils.directToLinkPage(requireContext(), it, EntranceConsts.ENTRANCE_WELCOME, "", clickEvent) if (mShowEnterAnimation) { - val floatingWindowProvider = - ARouter.getInstance().build(RouteConsts.provider.floatingwindow) - .navigation() as? IFloatingWindowProvider + val floatingWindowProvider = TheRouter.get(IFloatingWindowProvider::class.java) floatingWindowProvider?.logWindowClicked( action = "点击弹窗跳转页面", @@ -160,9 +158,7 @@ class CustomWelcomeDialogFragment : BaseDialogFragment() { }) mBinding.ivCloseBackup.setOnClickListener { - val floatingWindowProvider = - ARouter.getInstance().build(RouteConsts.provider.floatingwindow) - .navigation() as? IFloatingWindowProvider + val floatingWindowProvider = TheRouter.get(IFloatingWindowProvider::class.java) // 来源 fragment 是否不可见 if (mTriggerFragment?.isCurrentlyVisible() == false) { @@ -197,9 +193,7 @@ class CustomWelcomeDialogFragment : BaseDialogFragment() { ImageUtils.displayWithoutMemoryCache(mBinding.ivOpeningCover, mWelcomeEntity?.icon) // 弹起启动弹窗时,把右下角悬浮窗置为隐藏 - val floatingWindowProvider = - ARouter.getInstance().build(RouteConsts.provider.floatingwindow) - .navigation() as? IFloatingWindowProvider + val floatingWindowProvider = TheRouter.get(IFloatingWindowProvider::class.java) floatingWindowProvider?.hideWindow(requireActivity()) diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatViewAnimationHelper.kt b/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatViewAnimationHelper.kt index abfe007e8c..a2647ab783 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatViewAnimationHelper.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatViewAnimationHelper.kt @@ -77,11 +77,11 @@ class CustomFloatViewAnimationHelper : DefaultLifecycleObserver { ViewCompat.animate(this) .setListener(object : ViewPropertyAnimatorListener { - override fun onAnimationStart(view: View?) { + override fun onAnimationStart(view: View) { floatState = startState } - override fun onAnimationEnd(view: View?) { + override fun onAnimationEnd(view: View) { floatState = endState if (isExpand && isScrolling) { // 执行展开动画之后,发现页面仍在滚动,则立马执行收起动画 @@ -89,7 +89,7 @@ class CustomFloatViewAnimationHelper : DefaultLifecycleObserver { } } - override fun onAnimationCancel(view: View?) = Unit + override fun onAnimationCancel(view: View) = Unit }) .alpha(alpha) .translationX(translationX) diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatingWindowViewAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatingWindowViewAdapter.kt index 22e2832c3b..d8f82440ef 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatingWindowViewAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/floatview/CustomFloatingWindowViewAdapter.kt @@ -5,7 +5,7 @@ import android.net.Uri import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.exposure.ExposureManager import com.gh.common.exposure.ExposureTraceUtils import com.gh.gamecenter.common.constant.Constants @@ -13,6 +13,7 @@ import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.common.view.WrapContentDraweeView +import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.entity.PageLocation import com.gh.gamecenter.feature.entity.WelcomeDialogEntity @@ -121,8 +122,7 @@ class CustomFloatingWindowViewAdapter( linkText = windowEntity.link.text ?: "", ) } else { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils) - .navigation() as ILinkDirectUtilsProvider + val directUtils = TheRouter.get(ILinkDirectUtilsProvider::class.java) if (windowEntity.link.type == EntranceConsts.HOST_WEB || windowEntity.link.type == EntranceConsts.HOST_WEB_INURL || windowEntity.link.type == EntranceConsts.HOST_WEB_AL @@ -142,7 +142,7 @@ class CustomFloatingWindowViewAdapter( if (windowEntity.link.type != "game") { ExposureManager.log(clickEvent) } - directUtils.directToLinkPage(it.context, windowEntity.link, "右下角悬浮窗", "", clickEvent) + directUtils?.directToLinkPage(it.context, windowEntity.link, "右下角悬浮窗", "", clickEvent) SensorsBridge.trackSuspendedWindowClick( "收起", "跳转", diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/viewholder/CustomGameItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/custom/viewholder/CustomGameItemViewHolder.kt index b9a13a3dd5..7e211a0281 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/viewholder/CustomGameItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/viewholder/CustomGameItemViewHolder.kt @@ -8,7 +8,7 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.util.DownloadItemUtils import com.gh.gamecenter.adapter.viewholder.GameViewHolder import com.gh.gamecenter.common.constant.RouteConsts @@ -73,8 +73,7 @@ class CustomGameItemViewHolder( recommendStarPref.setTextColor(com.gh.gamecenter.common.R.color.text_tertiary.toColor(root.context)) gameIconView.displayGameIconWithIfShowSubscript(entity, item.data.showIndexIconSubscript) - val provider = ARouter.getInstance().build(RouteConsts.provider.bindingAdapters) - .navigation() as? IBindingAdaptersProvider + val provider = TheRouter.get(IBindingAdaptersProvider::class.java) provider?.setGameName(gameName, entity, false) provider?.setGameTags(labelList, entity) diff --git a/app/src/main/java/com/gh/gamecenter/libao/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/libao/LibaoDetailActivity.java index 8034bf3e29..d19be33099 100644 --- a/app/src/main/java/com/gh/gamecenter/libao/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/libao/LibaoDetailActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; +import com.therouter.router.Route; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt index 92865f9efa..3d53ee9046 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyFollowedGameAdapter.kt @@ -14,6 +14,7 @@ import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.baselist.LoadType +import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.ItemViewType import com.gh.gamecenter.common.exposure.ExposureSource import com.gh.gamecenter.common.utils.* @@ -280,7 +281,7 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV binding.root.context, gameEntity, entrance, - defaultTab = GameDetailFragment.TAB_TRENDS + defaultTab = EntranceConsts.TAB_TYPE_TRENDS ) } } else { @@ -306,7 +307,7 @@ class MyFollowedGameViewHolder(var binding: ItemFollowedGameBinding) : RecyclerV binding.root.context, gameEntity, entrance, - defaultTab = GameDetailFragment.TAB_BBS + defaultTab = EntranceConsts.TAB_TYPE_BBS ) } } else { diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt index a821c858e9..ad7a3d7190 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationViewModel.kt @@ -4,7 +4,7 @@ import android.annotation.SuppressLint import android.app.Application import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.repository.ReservationRepository import com.gh.common.util.ReservationHelper.getReserveRequestBody import com.gh.gamecenter.core.runOnUiThread @@ -178,8 +178,8 @@ class MyReservationViewModel(application: Application) : ListViewModel): HashMap { val jPushId = - (ARouter.getInstance().build(RouteConsts.provider.push).navigation() as? IPushProvider) - ?.getRegistrationId(HaloApp.getInstance().application) ?: "" + (TheRouter.get(IPushProvider::class.java) + ?.getRegistrationId(HaloApp.getInstance().application)) ?: "" val idAndMirrorType = games.map { var mirrorPosition = it.getMirrorPosition() if (mirrorPosition == -1) { diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailActivity.java index 5ce3cbb154..1bf24da40f 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailActivity.java @@ -7,7 +7,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; +import com.therouter.router.Route; import com.gh.base.DownloadToolbarActivity; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.common.constant.EntranceConsts; diff --git a/app/src/main/java/com/gh/gamecenter/oaid/OAIDHelper.kt b/app/src/main/java/com/gh/gamecenter/oaid/OAIDHelper.kt index 5f1fa9d27f..f873abbd31 100644 --- a/app/src/main/java/com/gh/gamecenter/oaid/OAIDHelper.kt +++ b/app/src/main/java/com/gh/gamecenter/oaid/OAIDHelper.kt @@ -1,20 +1,20 @@ package com.gh.gamecenter.oaid import android.content.Context -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IOAIDProvider object OAIDHelper { fun doSystemLoad() { - val oaidProvider = ARouter.getInstance().build(RouteConsts.provider.oaid).navigation() as? IOAIDProvider + val oaidProvider = TheRouter.get(IOAIDProvider::class.java) oaidProvider?.doSystemLoad() } fun getOAID(context: Context, callback: (String, Boolean) -> Unit) { - val oaidProvider = ARouter.getInstance().build(RouteConsts.provider.oaid).navigation() as? IOAIDProvider + val oaidProvider = TheRouter.get(IOAIDProvider::class.java) oaidProvider?.getOAID(context, callback) } diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt index ec9ce66a54..c23de441f2 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -183,6 +183,11 @@ class HaloPersonalFragment : BaseLazyFragment() { } } mStubBinding.personalMsg -> { + // 优先进入有数字提醒的消息tab,其次是有红点提醒的游戏动态,最后是没有提醒的消息tab + val defaultTabIndex = if ((mUnreadViewModel.messageUnreadCountLiveData.value?.message + ?: 0) < 1 && mUnreadViewModel.zixunConcernLiveData.value == true + ) 0 else 1 + if (CheckLoginUtils.isLogin()) { NewFlatLogUtils.logHaloSelfClick("右上角", "消息中心") SensorsBridge.trackHaloSelfClick( @@ -197,16 +202,11 @@ class HaloPersonalFragment : BaseLazyFragment() { "我的" ) SensorsBridge.trackMessageCenterClick() - - // 优先进入有数字提醒的消息tab,其次是有红点提醒的游戏动态,最后是没有提醒的消息tab - val defaultTabIndex = if ((mUnreadViewModel.messageUnreadCountLiveData.value?.message - ?: 0) < 1 && mUnreadViewModel.zixunConcernLiveData.value == true - ) 0 else 1 - DirectUtils.directToMessageCenter(defaultTabIndex) } else { NewFlatLogUtils.logHaloSelfLogin() - CheckLoginUtils.checkLogin(context, "我的光环-消息") {} } + + DirectUtils.directToMessageCenter(defaultTabIndex, "我的光环-消息") } mStubBinding.personalUserIcon, mStubBinding.personalUserName -> { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeActivity.kt index 6842193f97..3cdc3904e3 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeActivity.kt @@ -1,43 +1,56 @@ package com.gh.gamecenter.personalhome -import android.content.Context -import android.content.Intent import android.os.Bundle import android.view.View +import com.therouter.router.Autowired +import com.therouter.router.Route +import com.therouter.TheRouter import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.DisplayUtils -/** - * 个人主页 - */ +@Route( + path = RouteConsts.activity.userHomeActivity, + description = "个人主页" +) class UserHomeActivity : ToolBarActivity() { - override fun provideNormalIntent(): Intent { - return getTargetIntent(this, UserHomeActivity::class.java, UserHomeFragment::class.java) - } + @JvmField + @Autowired(name = EntranceConsts.KEY_USER_ID, description = "用户 id (长 id 或短 id 均可)", required = true) + var userId: String? = null + + @JvmField + @Autowired(name = EntranceConsts.KEY_TAB_INDEX, description = "默认选中 tab 的序号,可选值 0 游戏,1 发布") + var selectedTabIndex: Int = 0 + + @JvmField + @Autowired(name = EntranceConsts.KEY_COMMUNITY_TYPE, description = "默认选中的社区内容 tab 类型,可选值 all: 全部, video: 视频, community_article: 帖子, answer: 回答, question: 问题") + var selectedCommunityType: String = "" + + @JvmField + @Autowired(name = EntranceConsts.KEY_GAME_TYPE, description = "默认选中的游戏 tab 类型,可选值 game_collection: 游戏单, played_game: 玩过, comment: 评价") + var selectedGameType: String = "" + + @JvmField + @Autowired(name = EntranceConsts.KEY_PATH, description = "页面路径 (历史代码用到的,传不传都行)") + var path: String = "" override fun onCreate(savedInstanceState: Bundle?) { + // 注入 arouter 参数 + TheRouter.inject(this) + + // 桥接 arouter 和原有入参 + generateDataFromRoute() + super.onCreate(savedInstanceState) hideToolbar(true) DisplayUtils.setStatusBarColor(this, com.gh.gamecenter.common.R.color.transparent, false) } - companion object { - @JvmStatic - fun getIntent(context: Context, userId: String, entrance: String?, path: String?): Intent { - val bundle = Bundle() - bundle.putString(EntranceConsts.KEY_USER_ID, userId) - bundle.putString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) - bundle.putString(EntranceConsts.KEY_PATH, path) - return getTargetIntent(context, UserHomeActivity::class.java, UserHomeFragment::class.java, bundle) - } - } - override fun getBusinessId(): Pair { - return Pair(targetFragment.arguments?.getString(EntranceConsts.KEY_USER_ID) ?: "", "") + return Pair(userId ?: "", "") } override fun isAutoResetViewBackgroundEnabled(): Boolean = true @@ -48,4 +61,11 @@ class UserHomeActivity : ToolBarActivity() { listOf(R.id.allType, R.id.videoType, R.id.articleType, R.id.questionType, R.id.answerType, R.id.tab_title) ) } + + private fun generateDataFromRoute() { + val bundle = intent.extras + + intent?.putExtra(NORMAL_FRAGMENT_NAME, UserHomeFragment::class.java.canonicalName) + intent?.putExtra(NORMAL_FRAGMENT_BUNDLE, bundle) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt index 93f278e978..7546a1d4a2 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt @@ -93,7 +93,6 @@ class UserHomeFragment : ToolbarFragment() { } mHomeBinding?.container?.setZoomView(mHomeBinding?.userBackgroundContainer) -// mHomeBinding?.userBadge?.visibleIf(mUserHomeViewModel.userId == UserManager.getInstance().userId) mUserHomeViewModel.userInfo.observeNonNull(this) { // 区分是数据初始化还是数据更新 @@ -117,7 +116,6 @@ class UserHomeFragment : ToolbarFragment() { updateUserInfo(it) updateTab(it) - trackMtaEvent(it.name) } else { updateUserInfo(it) } @@ -298,9 +296,9 @@ class UserHomeFragment : ToolbarFragment() { } private fun updateTab(personalData: PersonalEntity) { - val keyPosition = arguments?.getInt(EntranceConsts.KEY_POSITION, -1) ?: -1 - val type = UserHistoryViewModel.TYPE.fromValue(arguments?.getString(EntranceConsts.KEY_TYPE)) - val gameType = arguments?.getString(EntranceConsts.KEY_GAME) ?: "game_collection" + val keyPosition = arguments?.getInt(EntranceConsts.KEY_TAB_INDEX, -1) ?: -1 + val type = UserHistoryViewModel.TYPE.fromValue(arguments?.getString(EntranceConsts.KEY_COMMUNITY_TYPE)) + val gameType = arguments?.getString(EntranceConsts.KEY_GAME_TYPE) ?: "game_collection" val count = personalData.count val position = if (keyPosition > -1) { keyPosition @@ -335,7 +333,6 @@ class UserHomeFragment : ToolbarFragment() { FragmentAdapter(childFragmentManager, mFragmentList, titleList) mHomeBinding?.viewpager?.currentItem = position mHomeBinding?.viewpager?.doOnPageSelected { - MtaHelper.onEvent("个人主页详情", "个人主页详情", titleList[it]) if (it == 1) (mFragmentList[1] as UserHistoryFragment).onScrollStateChanged() } mHomeBinding?.tabLayout?.setupWithViewPager(mHomeBinding?.viewpager) @@ -362,19 +359,6 @@ class UserHomeFragment : ToolbarFragment() { return view } - private fun trackMtaEvent(name: String? = "") { - MtaHelper.onEvent( - "个人主页", - mPath, - StringUtils.combineTwoString(name, mUserHomeViewModel.userId) - ) - MtaHelper.onEvent( - "个人主页", - "不区分位置", - StringUtils.combineTwoString(name, mUserHomeViewModel.userId) - ) - } - private fun updateUnreadInfo(messageEntity: MessageUnreadEntity) { if (mUserHomeViewModel.userId == UserManager.getInstance().userId) { BindingAdapters.setMessageUnread(mHomeBinding?.userFansCountHint, messageEntity.fans) @@ -557,7 +541,6 @@ class UserHomeFragment : ToolbarFragment() { log("view_pendant", "头像挂件页") } if (mUserHomeViewModel.userId == UserManager.getInstance().userId) { - MtaHelper.onEvent("个人主页详情", "个人主页详情", "头像") startActivity(AvatarBorderActivity.getIntent(requireContext())) } else { startActivity( @@ -575,7 +558,6 @@ class UserHomeFragment : ToolbarFragment() { userFollowerContainer.setOnClickListener { IntegralLogHelper.log("click_follow", LOCATION) - MtaHelper.onEvent("个人主页详情", "个人主页详情", "关注数") startActivity( FollowersActivity.getIntent( requireContext(), @@ -587,7 +569,6 @@ class UserHomeFragment : ToolbarFragment() { } userFansContainer.setOnClickListener { IntegralLogHelper.log("click_follower", LOCATION) - MtaHelper.onEvent("个人主页详情", "个人主页详情", "粉丝数") requireContext().startActivity( FansActivity.getIntent( requireContext(), @@ -599,7 +580,6 @@ class UserHomeFragment : ToolbarFragment() { } userVoteContainer.setOnClickListener { IntegralLogHelper.log("click_like", LOCATION) - MtaHelper.onEvent("个人主页详情", "个人主页详情", "赞同数") Utils.toast( requireContext(), "共获得 " + NumberUtils.transSimpleCount(personalData?.count?.vote!!) + " 赞同" @@ -607,7 +587,6 @@ class UserHomeFragment : ToolbarFragment() { } userEditBtn.setOnClickListener { IntegralLogHelper.log("click_edit", LOCATION) - MtaHelper.onEvent("个人主页详情", "个人主页详情", "编辑按钮") requireContext().startActivity(UserInfoActivity.getIntent(requireContext())) } userConcernContainer.setOnClickListener { @@ -617,7 +596,6 @@ class UserHomeFragment : ToolbarFragment() { buttonName = "关注" ) ifLogin("个人主页-关注-[关注]") { - MtaHelper.onEvent("个人主页详情", "个人主页详情", "关注按钮") mUserHomeViewModel.follow() } } @@ -629,7 +607,6 @@ class UserHomeFragment : ToolbarFragment() { buttonName = "已关注" ) ifLogin("个人主页-关注-[关注]") { - MtaHelper.onEvent("个人主页详情", "个人主页详情", "关注按钮") DialogHelper.showDialog( requireContext(), "取消关注", diff --git a/app/src/main/java/com/gh/gamecenter/pkg/PkgConfigProviderImpl.kt b/app/src/main/java/com/gh/gamecenter/pkg/PkgConfigProviderImpl.kt index 90a554f3a8..2e596112ec 100644 --- a/app/src/main/java/com/gh/gamecenter/pkg/PkgConfigProviderImpl.kt +++ b/app/src/main/java/com/gh/gamecenter/pkg/PkgConfigProviderImpl.kt @@ -1,14 +1,11 @@ package com.gh.gamecenter.pkg -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.BuildConfig -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.toJsonIgnoredNull import com.gh.gamecenter.core.provider.IPkgConfigProvider import com.halo.assistant.HaloApp -@Route(path = RouteConsts.provider.pkgConfig, name = "PkgConfig暴露服务") +@com.therouter.inject.ServiceProvider class PkgConfigProviderImpl: IPkgConfigProvider { override fun getPkgConfig(): ArrayList { @@ -41,8 +38,4 @@ class PkgConfigProviderImpl: IPkgConfigProvider { return configList } - override fun init(context: Context?) { - // do nothing - } - } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt b/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt index dab7ca632e..0fffef3f12 100644 --- a/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt +++ b/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt @@ -1,6 +1,6 @@ package com.gh.gamecenter.pkg -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.BuildConfig import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.PkgConfigEntity @@ -17,7 +17,7 @@ object PkgHelper { private var mCoreEventGameCategory: String? = null private val mPkgProvider by lazy { - ARouter.getInstance().build(RouteConsts.provider.pkg).navigation() as? IPkgProvider + TheRouter.get(IPkgProvider::class.java) } /** @@ -50,9 +50,11 @@ object PkgHelper { if (SPUtils.getBoolean(SP_PKG_CONFIG_IS_USED, false)) return mPkgProvider?.requestPkgConfig(configId) { - mPkgConfigLink = it.link - mActivateRatioFromInternet = it.activateRatio ?: 0 - mCoreEventGameCategory = it.coreEventGameCategory + val pkgConfig = it as? PkgConfigEntity ?: return@requestPkgConfig + + mPkgConfigLink = pkgConfig.link + mActivateRatioFromInternet = pkgConfig.activateRatio ?: 0 + mCoreEventGameCategory = pkgConfig.coreEventGameCategory } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt index d68aa19e67..0f3a802b16 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailFragment.kt @@ -30,7 +30,6 @@ import com.gh.gamecenter.common.base.fragment.BaseFragment import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.callback.ConfirmListener import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.Constants.GAME_DETAIL_COME_IN import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.entity.NormalShareEntity import com.gh.gamecenter.common.entity.SuggestType @@ -594,7 +593,6 @@ open class AnswerDetailFragment : ToolbarFragment() { when (menuItem.itemId) { R.id.menu_more -> mViewModel.answerDetail?.let { showMoreItemDialog(it) } R.id.menu_question_and_answer -> { - HaloApp.remove(GAME_DETAIL_COME_IN) val community = mViewModel.answerDetail?.community MtaHelper.onEvent( "进入问答", @@ -1132,8 +1130,6 @@ open class AnswerDetailFragment : ToolbarFragment() { (requireActivity() as ToolBarActivity).clearMenu() initMenu(R.menu.menu_answer) - val itemMenu = getItemMenu(R.id.menu_question_and_answer) - itemMenu.isVisible = HaloApp.get(GAME_DETAIL_COME_IN, false) != null } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt index 109d3aa708..ce7506fef4 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.qa.article.detail import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.R import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.EntranceConsts diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt index ed6bb2d57c..71f35ae75f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/FullScreenVideoActivity.kt @@ -6,7 +6,7 @@ import android.content.Intent import android.content.pm.ActivityInfo import android.os.Build import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.common.util.NewFlatLogUtils import com.gh.gamecenter.R import com.gh.gamecenter.common.base.activity.BaseActivity diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt index 34231b7950..d646d5139a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.qa.questions.newdetail import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.R import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.EntranceConsts diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt index 73596e6b57..7b6469bade 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt @@ -5,7 +5,7 @@ import android.content.Intent import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.R import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout.PAGE_INDEX diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt index e6e71e6770..79d1971074 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt @@ -22,6 +22,7 @@ import com.gh.gamecenter.adapter.viewholder.GameViewHolder import com.gh.gamecenter.adapter.viewholder.SearchHistoryViewHolder import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.ItemViewType import com.gh.gamecenter.common.exposure.ExposureSource import com.gh.gamecenter.common.json.json @@ -250,7 +251,7 @@ class SearchGameIndexAdapter( StringUtils.buildString( entrance, "+(搜索-列表[", key, "=", "$type=", (holder.adapterPosition + 1).toString(), "])" - ), GameDetailFragment.TAB_TRENDS, traceEvent = exposureEvent + ), EntranceConsts.TAB_TYPE_TRENDS, traceEvent = exposureEvent ) gameEntity.run { @@ -326,7 +327,7 @@ class SearchGameIndexAdapter( StringUtils.buildString( entrance, "+(搜索-列表[", key, "=", "$type=", (holder.adapterPosition + 1).toString(), "])" - ), GameDetailFragment.TAB_BBS, traceEvent = exposureEvent + ), EntranceConsts.TAB_TYPE_BBS, traceEvent = exposureEvent ) gameEntity.run { diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt index c4467320de..4ada9881d0 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt @@ -25,6 +25,7 @@ import com.gh.gamecenter.adapter.viewholder.SearchGameFooterViewHolder import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.ItemViewType import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType @@ -580,7 +581,7 @@ class SearchGameResultAdapter( StringUtils.buildString( entrance, "+(搜索-列表[", key, "=", "$type=", (position + 1).toString(), "])" - ), GameDetailFragment.TAB_TRENDS, traceEvent = exposureEvent + ), EntranceConsts.TAB_TYPE_TRENDS, traceEvent = exposureEvent ) gameEntity.run { @@ -656,7 +657,7 @@ class SearchGameResultAdapter( StringUtils.buildString( entrance, "+(搜索-列表[", key, "=", "$type=", (position + 1).toString(), "])" - ), GameDetailFragment.TAB_BBS, traceEvent = exposureEvent + ), EntranceConsts.TAB_TYPE_BBS, traceEvent = exposureEvent ) gameEntity.run { diff --git a/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ListViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ListViewModel.kt index 939cad09fe..b0799438b4 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ListViewModel.kt @@ -5,7 +5,7 @@ import androidx.collection.ArrayMap import androidx.collection.arrayMapOf import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.common.filter.RegionSettingHelper import com.gh.gamecenter.common.HaloApp import com.gh.gamecenter.common.baselist.ListViewModel @@ -69,9 +69,7 @@ class GameServerTestV2ListViewModel( slide.gameList = RegionSettingHelper.filterGame(slide.gameList) slide.collapsedGameList = RegionSettingHelper.filterGame(slide.collapsedGameList) // 针对游戏的一些操作(过滤隐藏游戏,过滤隐藏APK,增加下载数据) - val handleGameResponse = - ARouter.getInstance().build(RouteConsts.provider.handleGameResponse) - .navigation() as? IHandleGameResponseProvider + val handleGameResponse = TheRouter.get(IHandleGameResponseProvider::class.java) if (handleGameResponse != null) { slide.gameList = handleGameResponse.handleGameResponse( slide.gameList, diff --git a/app/src/main/java/com/gh/gamecenter/setting/SettingBridge.kt b/app/src/main/java/com/gh/gamecenter/setting/SettingBridge.kt index 96bfc79b76..6305fe4a96 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/SettingBridge.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/SettingBridge.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.setting import android.content.Context import android.content.Intent import android.os.Build -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.MainActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISettingProvider @@ -14,17 +14,7 @@ import com.gh.gamecenter.core.provider.ISettingProvider object SettingBridge { private val mSettingProvider by lazy { - val isComposeEnabled = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() != null - } else { - false - } - - if (isComposeEnabled) { - ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() as? ISettingProvider - } else { - ARouter.getInstance().build(RouteConsts.provider.setting).navigation() as? ISettingProvider - } + TheRouter.get(ISettingProvider::class.java) } fun getSettingIntent(context: Context, isUpdate: Boolean, entrance: String): Intent { diff --git a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt index b16b632a1b..c43d3ab2ef 100644 --- a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt @@ -187,7 +187,7 @@ class VoteAdapter( EntranceConsts.HOST_GAME -> { startGameDetailActivity( mContext, - link.link!!, entrance, -1, + link.link!!, entrance, isSkipGameComment = false, scrollToLibao = false, openVideoStreaming = false, diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt index 041c7f9531..a09c8a0efb 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/SearchToolbarTabWrapperFragment.kt @@ -361,21 +361,16 @@ class SearchToolbarTabWrapperFragment : BaseTabWrapperFragment(), ISearchToolbar R.id.actionbar_notification -> { DataCollectionUtils.uploadClick(activity, "消息图标", "主页") - CheckLoginUtils.checkLogin(requireContext(), "(工具栏)") { - NewLogUtils.logMessageInformBellClick( - messageUnread?.visibility == View.VISIBLE, - "首页" - ) - SensorsBridge.trackMessageCenterClick() - // 优先进入有数字提醒的消息tab,其次是有红点提醒的游戏动态,最后是没有提醒的消息tab - var defaultTabIndex = 1 - val messageUnreadCount = unreadViewModel.messageUnreadCountLiveData.value - val isConcernUnread = unreadViewModel.zixunConcernLiveData.value - if ((messageUnreadCount == null || messageUnreadCount.message < 1) && isConcernUnread == true) { - defaultTabIndex = 0 - } - DirectUtils.directToMessageCenter(defaultTabIndex) + NewLogUtils.logMessageInformBellClick(messageUnread?.visibility == View.VISIBLE, "首页") + SensorsBridge.trackMessageCenterClick() + // 优先进入有数字提醒的消息tab,其次是有红点提醒的游戏动态,最后是没有提醒的消息tab + var defaultTabIndex = 1 + val messageUnreadCount = unreadViewModel.messageUnreadCountLiveData.value + val isConcernUnread = unreadViewModel.zixunConcernLiveData.value + if ((messageUnreadCount == null || messageUnreadCount.message < 1) && isConcernUnread == true) { + defaultTabIndex = 0 } + DirectUtils.directToMessageCenter(defaultTabIndex, "(工具栏)") } R.id.actionbar_teenager_model -> { diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index f5fa034773..eaf7de5497 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -17,7 +17,8 @@ import androidx.lifecycle.ProcessLifecycleOwner; import androidx.multidex.MultiDexApplication; import androidx.webkit.WebViewCompat; -import com.alibaba.android.arouter.launcher.ARouter; +import com.gh.gamecenter.login.interceptor.LoginInterceptor; +import com.therouter.TheRouter; import com.facebook.imageformat.DefaultImageFormats; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.core.ImagePipelineFactory; @@ -25,7 +26,6 @@ import com.facebook.imagepipeline.core.ImageTranscoderType; import com.facebook.imagepipeline.core.MemoryChunkType; import com.facebook.imagepipeline.decoder.ImageDecoderConfig; import com.gh.ad.AdDelegateHelper; -import com.gh.ad.AdPluginDownloadHelper; import com.gh.base.GlobalActivityLifecycleObserver; import com.gh.common.FixedRateJobHelper; import com.gh.common.filter.RegionSettingHelper; @@ -48,7 +48,6 @@ import com.gh.download.simple.SimpleDownloadDatabase; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.common.constant.Config; import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.exposure.meta.MetaUtil; import com.gh.gamecenter.common.image.EmptyDecoder; import com.gh.gamecenter.common.tracker.Tracker; @@ -96,6 +95,9 @@ import io.reactivex.schedulers.Schedulers; import tv.danmaku.ijk.media.exo2.Exo2PlayerManager; import tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager; +import com.therouter.TheRouterKt; +import com.therouter.router.NavigatorKt; + public class HaloApp extends MultiDexApplication { private static HaloApp mInstance; @@ -208,7 +210,6 @@ public class HaloApp extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); - initArouter(); // 每个进程都用自己的进程名作为后缀的文件夹来存 WebView cache // https://sentry.shanqu.cc/organizations/lightgame/issues/285063/?project=22&query=is%3Aunresolved @@ -224,6 +225,9 @@ public class HaloApp extends MultiDexApplication { } mInstance = this; + + initRouter(); + for (IApplication application : mApplicationList) { application.onCreate(mInstance); } @@ -283,6 +287,11 @@ public class HaloApp extends MultiDexApplication { }); } + private void initRouter() { + TheRouter.init(this); + NavigatorKt.addRouterReplaceInterceptor(new LoginInterceptor()); + } + private void fixDebugIssueInAndroid14() { if (BuildConfig.DEBUG && Build.VERSION.SDK_INT == Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { try { @@ -373,10 +382,7 @@ public class HaloApp extends MultiDexApplication { MainWrapperRepository.Companion.getInstance().init(); // QQ小游戏开放互联初始化 - IQGameProvider provider = (IQGameProvider) ARouter - .getInstance() - .build(RouteConsts.provider.qGame) - .navigation(); + IQGameProvider provider = TheRouter.get(IQGameProvider.class); if (provider != null) { provider.initOpenSdkLogin( @@ -416,14 +422,6 @@ public class HaloApp extends MultiDexApplication { }, delay); } - private void initArouter() { - if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog(); // 打印日志 - ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) - } - ARouter.init(this); // 尽可能早,推荐在Application中初始化 - } - public void getWebviewAbiList() { int versionCode = SPUtils.getInt(Constants.SP_WEBVIEW_VERSION_CODE); final PackageInfo webviewPackageInfo = WebViewCompat.getCurrentWebViewPackage(this); @@ -474,10 +472,7 @@ public class HaloApp extends MultiDexApplication { * 初始化推送 */ private void initPushEngine() { - IPushProvider pushProvider = (IPushProvider) ARouter - .getInstance() - .build(RouteConsts.provider.push) - .navigation(); + IPushProvider pushProvider = TheRouter.get(IPushProvider.class); if (pushProvider != null) pushProvider.initialize(this); } @@ -486,10 +481,7 @@ public class HaloApp extends MultiDexApplication { */ @SuppressLint("CheckResult") private void registerPushEngine() { - IPushProvider pushProvider = (IPushProvider) ARouter - .getInstance() - .build(RouteConsts.provider.push) - .navigation(); + IPushProvider pushProvider = TheRouter.get(IPushProvider.class); if (pushProvider == null) return; @@ -670,6 +662,7 @@ public class HaloApp extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); + TheRouterKt.setTheRouterUseAutoInit(false); for (IApplication application : mApplicationList) { application.attachBaseContext(base); } diff --git a/build.gradle b/build.gradle index ab8efc0edc..285af40bdc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. - -apply from: 'dependencies.gradle' -apply from: 'vspace-bridge/config.gradle' - buildscript { - ext.kotlin_version = '1.7.20' + ext.kotlin_version = '1.9.24' ext.shadow_version = '1.0.5' repositories { google() @@ -29,6 +25,13 @@ buildscript { } } +plugins { + id 'com.google.devtools.ksp' version '1.9.24-1.0.20' apply false + id 'cn.therouter' version '1.2.2' apply false +} +apply from: 'dependencies.gradle' +apply from: 'vspace-bridge/config.gradle' + allprojects { repositories { maven { @@ -57,6 +60,7 @@ allprojects { maven { url 'https://jitpack.io' } } } + task clean(type: Delete) { delete rootProject.buildDir } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index b521d7f8e8..772e2a68ef 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -1,6 +1,6 @@ buildscript { ext { - kotlinVersion = "1.7.20" + kotlinVersion = "1.9.24" } repositories { maven {url 'https://maven.aliyun.com/repository/public'} diff --git a/dependencies.gradle b/dependencies.gradle index e583030955..963d006d74 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,6 +1,6 @@ ext { //Android - buildToolsVersion = "30.0.3" + buildToolsVersion = "34.0.0" compileSdkVersion = 34 minSdkVersion = 21 @@ -26,7 +26,7 @@ ext { lifeCycle = "2.5.1" lifeCycleExtensions = "2.2.0" asynclayoutinflater = "1.0.0" - room = "2.4.3" + room = "2.6.1" workManager = "2.6.0" viewpager2 = "1.0.0" ktx = "1.2.0" @@ -118,11 +118,11 @@ ext { sentry = "6.20.0" autoServiceVersion = "1.0-rc7" - arouterVersion = "1.5.1" + routerVersion = "1.2.2" composeVersion = "1.2.1" activityComposeVersion = "1.6.0" - composeCompilerVersion = "1.3.2" + composeCompilerVersion = "1.5.14" constraintlayoutCompose = "1.0.1" sensorsDataVersion = "6.8.0" diff --git a/feature/acloud_push/build.gradle b/feature/acloud_push/build.gradle index b98bb479a8..15358e9e75 100644 --- a/feature/acloud_push/build.gradle +++ b/feature/acloud_push/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -27,12 +28,6 @@ android { kotlinOptions { jvmTarget = '1.8' } - - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } } dependencies { @@ -42,5 +37,6 @@ dependencies { implementation "com.aliyun.ams:alicloud-android-push:$acloudPush" - kapt "com.alibaba:arouter-compiler:$arouterVersion" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + ksp "cn.therouter:apt:${routerVersion}" } \ No newline at end of file diff --git a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/ACloudPushHelper.kt b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/ACloudPushHelper.kt index 7b64288f2d..209f525935 100644 --- a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/ACloudPushHelper.kt +++ b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/ACloudPushHelper.kt @@ -7,7 +7,7 @@ import android.content.Intent import android.graphics.Color import android.net.Uri import android.os.Build -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.alibaba.sdk.android.push.CloudPushService import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory import com.gh.gamecenter.acloud.push.retrofit.RetrofitManager @@ -45,11 +45,8 @@ object ACloudPushHelper { val notificationManager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager? // 用户可以看到的通知渠道的名字。 - val appProvider = ARouter - .getInstance() - .build(RouteConsts.provider.app) - .navigation() as IAppProvider - val name: CharSequence = appProvider.getAppName() + val appProvider = TheRouter.get(IAppProvider::class.java) + val name: CharSequence = appProvider?.getAppName() ?: "光环助手" val importance = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel(PUSH_CHANNEL, name, importance) // 设置通知出现时的闪灯(如果Android设备支持的话)。 diff --git a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt index df46fba447..933ce53320 100644 --- a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt +++ b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.acloud.push.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.acloud.push.ACloudPushHelper import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPushProvider @@ -10,7 +10,7 @@ import io.reactivex.Single /** * 阿里云推送服务提供者类 */ -@Route(path = RouteConsts.provider.push, name = "阿里云推送暴露服务") +@com.therouter.inject.ServiceProvider class ACloudPushProviderImpl : IPushProvider { override fun initialize(applicationContext: Context) { @@ -45,5 +45,5 @@ class ACloudPushProviderImpl : IPushProvider { // do nothing } - override fun init(p0: Context?) {} + } \ No newline at end of file diff --git a/feature/csj_ad/build.gradle b/feature/csj_ad/build.gradle index 71c188cd82..d5e1ea93f9 100644 --- a/feature/csj_ad/build.gradle +++ b/feature/csj_ad/build.gradle @@ -2,6 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -13,14 +14,6 @@ android { versionName rootProject.ext.versionName buildConfigField "String", "API_HOST", "\"${API_HOST}\"" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } } compileOptions { @@ -49,7 +42,8 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' diff --git a/feature/csj_ad/src/main/java/com/gh/gamecenter/csj/CsjAdProviderImpl.kt b/feature/csj_ad/src/main/java/com/gh/gamecenter/csj/CsjAdProviderImpl.kt index 9d9dec6772..8e1c26dbfd 100644 --- a/feature/csj_ad/src/main/java/com/gh/gamecenter/csj/CsjAdProviderImpl.kt +++ b/feature/csj_ad/src/main/java/com/gh/gamecenter/csj/CsjAdProviderImpl.kt @@ -4,11 +4,11 @@ import android.app.Activity import android.content.Context import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ICsjAdProvider -@Route(path = RouteConsts.provider.csjAd, name = "csj广告暴露服务") +@com.therouter.inject.ServiceProvider class CsjAdProviderImpl : ICsjAdProvider { override fun initSDK(context: Context, id: String, oaid: String) { CsjAdHelper.init(context, id, oaid) @@ -89,8 +89,4 @@ class CsjAdProviderImpl : ICsjAdProvider { return true } - override fun init(context: Context?) { - // do nothing - } - -} \ No newline at end of file +} diff --git a/feature/floating-window/build.gradle b/feature/floating-window/build.gradle index 2e5582f9ef..8d5ee2e357 100644 --- a/feature/floating-window/build.gradle +++ b/feature/floating-window/build.gradle @@ -1,11 +1,8 @@ -if (isRelease.toBoolean()) { - apply plugin: 'com.android.library' -} else { - apply plugin: 'com.android.application' -} +apply plugin: 'com.android.library' apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -22,7 +19,6 @@ android { buildConfigField "String", "API_HOST", "\"${API_HOST}\"" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -32,27 +28,13 @@ android { sourceSets { main { - if (isRelease.toBoolean()) { - manifest.srcFile 'src/main/AndroidManifest.xml' - java { - exclude 'manifest/**' - } - } else { - java { - srcDirs = ['src/main/java', "src/demo/java"] - } - manifest.srcFile 'src/main/manifest/AndroidManifest.xml' - res.srcDirs = ['src/main/res','src/demo/res'] + manifest.srcFile 'src/main/AndroidManifest.xml' + java { + exclude 'manifest/**' } } } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -63,19 +45,9 @@ android { } buildTypes { - debug { - if (!isRelease.toBoolean()) { - buildConfigField "String", "DEV_API_HOST", "\"${DEV_API_HOST}\"" - } - } - release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - - if (!isRelease.toBoolean()) { - buildConfigField "String", "DEV_API_HOST", "\"${API_HOST}\"" - } } } @@ -83,11 +55,8 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" - if (!isRelease.toBoolean()) { - implementation "androidx.multidex:multidex:${multiDex}" - } - + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' } diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/CheckLoginUtils.java b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/CheckLoginUtils.java deleted file mode 100644 index 64bb79fd8e..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/CheckLoginUtils.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gh.gamecenter.feedback; - -import android.app.Activity; -import android.content.Context; -import android.text.TextUtils; - -import com.alibaba.android.arouter.launcher.ARouter; -import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.constant.RouteConsts; -import com.gh.gamecenter.common.utils.NetworkUtils; -import com.gh.gamecenter.core.utils.CurrentActivityHolder; -import com.gh.gamecenter.core.utils.SPUtils; -import com.gh.gamecenter.login.user.UserManager; -import com.gh.gamecenter.login.utils.QuickLoginHelper; -import com.lightgame.utils.Utils; - - -/** - * Created by khy on 28/06/17. - */ - -public class CheckLoginUtils { - - public static void checkLogin(Context context, String entrance, OnLoginListener listener) { - if (!isLogin()) { - if (listener != null) Utils.toast(context, "需要登录"); - - if (SPUtils.getBoolean(Constants.SP_HAS_GET_PHONE_INFO) || NetworkUtils.isOpenMobileData(context)) { - startQuickLogin(context, entrance); - } else { - ARouter.getInstance().build(RouteConsts.activity.loginActivity) - .withString(EntranceConsts.KEY_ENTRANCE, entrance) - .navigation(); - } - } else { - if (listener != null) { - listener.onLogin(); - } - } - } - - private static void startQuickLogin(Context context, String entrance) { - // 需要确保传入的 context 不为 application - if (!(context instanceof Activity)) { - context = CurrentActivityHolder.getCurrentActivity(); - } - - if (context != null) { - QuickLoginHelper.startLogin(context, entrance); - } - } - - public static boolean isLogin() { - return !TextUtils.isEmpty(UserManager.getInstance().getToken()); - } - - public interface OnLoginListener { - void onLogin(); - } -} diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt deleted file mode 100644 index 1bbdb94525..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt +++ /dev/null @@ -1,99 +0,0 @@ -package com.gh.gamecenter.feedback - -import android.os.Build -import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter -import com.facebook.animated.giflite.GifDecoder -import com.facebook.common.logging.FLog -import com.facebook.imageformat.DefaultImageFormats -import com.facebook.imagepipeline.core.ImagePipelineConfig -import com.facebook.imagepipeline.core.ImageTranscoderType -import com.facebook.imagepipeline.core.MemoryChunkType -import com.facebook.imagepipeline.decoder.ImageDecoderConfig -import com.gh.gamecenter.common.image.EmptyDecoder -import com.gh.gamecenter.common.utils.ImageUtils.disableAnimatedImage -import com.gh.gamecenter.common.utils.ImageUtils.isFrescoInitialized -import com.gh.gamecenter.core.iinterface.IApplication -import com.gh.gamecenter.floatingwindow.BuildConfig -import com.github.piasy.biv.BigImageViewer -import com.github.piasy.biv.loader.fresco.FrescoImageLoader -import java.util.* - -class FeedbackModuleApp : MultiDexApplication() { - - private val mApplicationList = ServiceLoader.load(IApplication::class.java, this.javaClass.classLoader) - - override fun onCreate() { - super.onCreate() - initArouter() - mApp = this - for (application in mApplicationList) { - application.onCreate(this) - } - initFresco() - } - - private fun initArouter() { - if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) - } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 - } - - fun initFresco() { - // 初始化 Fresco(BigImageViewer 已包含Fresco) - if (!isFrescoInitialized()) { - // 在 5.0 & 5.1 设备上 disable native code,原因是应用附带了 arm64 的 SO 以后在部分 5.0/5.1 设备 - // 会出现找不到 arm64 so 的情况,具体可见 - // https://sentry.ghzs.com/organizations/lightgame/issues/53107/ - // 所以这里尝试在 5.0 & 5.1 设备上关闭 fresco 的 native 解码,应该会让 5.0 & 5.1 的设备 OOM 概率提高,但先试试效果 - // 同时禁用动图 - val pipelineConfigBuilder = ImagePipelineConfig.newBuilder(this) - val decodeConfigBuilder = ImageDecoderConfig.newBuilder() - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP - || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1 - ) { - pipelineConfigBuilder.setMemoryChunkType(MemoryChunkType.BUFFER_MEMORY) - .setImageTranscoderType(ImageTranscoderType.JAVA_TRANSCODER) - decodeConfigBuilder.overrideDecoder(DefaultImageFormats.GIF, GifDecoder()).build() - val manufacture = Build.MANUFACTURER.lowercase(Locale.getDefault()) - - // OPPO 和 VIVO 的 5.1.1 设备还会去加载 WEBP_ANIMATED 的 SO, - // 实测没有发现有地方使用 WEBP_ANIMATED 的图片,这里用空占位图来替换 WEBP 动图 - if ("oppo" == manufacture || "vivo" == manufacture) { - decodeConfigBuilder.overrideDecoder( - DefaultImageFormats.WEBP_ANIMATED, - EmptyDecoder() - ).build() - } - pipelineConfigBuilder - .setImageDecoderConfig(decodeConfigBuilder.build()) - .experiment() - .setNativeCodeDisabled(true) - - // 图片仅加载静态图片 - disableAnimatedImage() - } - try { - BigImageViewer.initialize( - FrescoImageLoader.with( - this, - pipelineConfigBuilder.build() - ) - ) - } catch (e: Throwable) { - e.printStackTrace() - } - FLog.setMinimumLoggingLevel(FLog.VERBOSE) - } - } - - companion object { - private lateinit var mApp: FeedbackModuleApp - - fun getInstance(): FeedbackModuleApp { - return mApp - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/HaloApp.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/HaloApp.kt deleted file mode 100644 index b84e3945dc..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/HaloApp.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.gh.gamecenter.feedback - -import android.app.Application -import android.content.res.Configuration -import com.gh.gamecenter.core.iinterface.IApplication -import com.google.auto.service.AutoService - -@AutoService(IApplication::class) -class HaloApp : IApplication { - - override fun attachBaseContext() { - // Do nothing - } - - override fun onCreate(application: Application) { - mApp = application - } - - - override fun onLowMemory() { - // Do nothing - } - - override fun onTerminate() { - // Do nothing - } - - override fun onTrimMemory(level: Int) { - // Do nothing - } - - override fun onConfigurationChanged(newConfig: Configuration) { - // Do nothing - } - - companion object { - private lateinit var mApp: Application - - @JvmStatic - fun getInstance(): Application { - return mApp - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpCategoryEntity.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpCategoryEntity.kt deleted file mode 100644 index 28b7415c81..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpCategoryEntity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.gh.gamecenter.feedback.entity - -import com.google.gson.annotations.SerializedName - -data class HelpCategoryEntity( - @SerializedName(value = "_id", alternate = ["qa_id"]) - val id: String = "", - val icon: String = "", - val name: String = "", - @SerializedName("contents") - val helpEntities: ArrayList = arrayListOf() -) \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpEntity.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpEntity.kt deleted file mode 100644 index 8f842882f2..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/entity/HelpEntity.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.gh.gamecenter.feedback.entity - -import android.os.Parcelable -import com.google.gson.annotations.SerializedName -import kotlinx.parcelize.Parcelize - -@Parcelize -data class HelpEntity( - @SerializedName("_id") - val id: String = "", - @SerializedName(value = "title", alternate = ["index_title"]) - val title: String = "", - val type: String = "", - val content: String = "", - @SerializedName("help_id") - val helpId: String = "" -) : Parcelable \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt deleted file mode 100644 index c61fdf3b65..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.entity.SettingsEntity -import com.gh.gamecenter.feature.provider.IAdHelperProvider - -@Route(path = RouteConsts.provider.adHelper, name = "AdHelper暴露服务") -class AdHelperProviderImpl : IAdHelperProvider { - override fun getSuggestionFunctionAd(): SettingsEntity.AD? { - return null - } - - override fun init(context: Context?) { - - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt deleted file mode 100644 index caf72948f0..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ /dev/null @@ -1,111 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.app.Activity -import android.app.Application -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IAppProvider -import com.gh.gamecenter.core.provider.IFlavorProvider -import com.gh.gamecenter.floatingwindow.BuildConfig -import com.gh.gamecenter.floatingwindow.HaloApp -import com.gh.gamecenter.floatingwindow.R - -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") -class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } - - override fun getAppName(): String { - return HaloApp.getInstance().getString(R.string.app_name) - } - - override fun getAppVersion(): String { - return BuildConfig.VERSION_NAME - } - - override fun getGid(): String { - return "" - } - - override fun refreshGid() { - // Do nothing - } - - override fun getOaid(): String { - return "" - } - - override fun getChannel(): String { - return "" - } - - override fun setChannel(channel: String) { - // Do nothing - } - - override fun getUserAgent(): String { - return "" - } - - override fun getServerUserMark(): String { - return "" - } - - override fun getDeviceRamSize(): Long { - return 0L - } - - override fun getTemporaryLocalDeviceId(): String { - return "" - } - - override fun isUserAcceptPrivacyPolicy(context: Context): Boolean { - return true - } - - override fun put(key: String, any: Any) { - // Do nothing - } - - override fun get(key: String, isRemove: Boolean): Any { - return "" - } - - override fun getFlavorProvider(): IFlavorProvider { - return object : IFlavorProvider { - override fun getChannelStr(application: Application): String { - return "" - } - - override fun init(application: Application, activity: Activity, activateRatio: Int) { - // do nothing - } - - override fun logEvent(content: String) { - // do nothing - } - - override fun logCoreEvent() { - // do nothing - } - } - } - - override fun getFlavor(): String { - return "internal" - } - - override fun getIsBrandNewInstall(): Boolean { - return true - } - - override fun setSkippingThirdParty(isSkippingThirdParty: Boolean) { - // do nothing - } - - override fun initImageLoaderIfNeeded() { - // do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt deleted file mode 100644 index 26efa128d2..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IBuildConfigProvider -import com.gh.gamecenter.floatingwindow.BuildConfig - -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") -class BuildConfigImpl : IBuildConfigProvider { - override fun init(context: Context?) { - // Do nothing - } - - override fun getApplicationId(): String = BuildConfig.APPLICATION_ID - - override fun getVersionName(): String = BuildConfig.VERSION_NAME - - override fun getExposureVersion(): String = "" - - override fun isDebug(): Boolean = BuildConfig.DEBUG - - override fun getApiHost(): String = BuildConfig.API_HOST - - override fun getDevApiHost(): String = BuildConfig.DEV_API_HOST - - override fun getNewApiHost(): String = "" - - override fun getNewDevApiHost(): String = "" - - override fun getVApiHost() = "" - - override fun getVDevApiHost() = "" - -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt deleted file mode 100644 index 3513051110..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.ICheckLoginProvider -import com.gh.gamecenter.feedback.CheckLoginUtils - -@Route(path = RouteConsts.provider.checkLogin, name = "CheckLoginUtils暴露服务") -class CheckLoginProviderImpl : ICheckLoginProvider { - override fun checkLogin(context: Context, entrance: String, action: (() -> Unit)?) { - CheckLoginUtils.checkLogin(context, entrance, action) - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt deleted file mode 100644 index 992aae09eb..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt +++ /dev/null @@ -1,106 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IConfigProvider - -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") -class ConfigProviderImpl : IConfigProvider { - override fun getTencentAppId(): String { - return "" - } - - override fun getWechatAppId(): String { - return "" - } - - override fun getWechatSecret(): String { - return "" - } - - override fun getUploadLimitSize(): Long { - return 0L - } - - override fun getSize(): Int { - return 0 - } - - override fun getRatio(): Int { - return 0 - } - - override fun getQuality(): Int { - return 0 - } - - override fun getGif(): String { - return "" - } - - override fun getJpeg(): String { - return "" - } - - override fun getWebp(): String { - return "" - } - - override fun getGitThumb(): String { - return "" - } - - override fun getGifWaterMark(): String { - return "" - } - - - override fun getVideoSnapshotSuffix(): String { - return "" - } - - override fun getImageCropSuffix(): String { - return "" - } - - override fun getImageInfoSuffix(): String { - return "" - } - - override fun getImageResizeSuffix(): String { - return "" - } - - override fun getQQ(): String { - return "" - } - - override fun getQQun(): String { - return "" - } - - override fun getQQunKey(): String { - return "" - } - - override fun getQuickLoginAppId(): String { - return "" - } - - override fun getQuickLoginAppKey(): String { - return "" - } - - override fun getWeiboAppKey(): String { - return "" - } - - override fun getNightModeSetting(): Boolean { - return false - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt deleted file mode 100644 index ffc5998a06..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IDataUtilsProvider - -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") -class DataUtilsProviderImpl : IDataUtilsProvider { - - override fun getDeviceCertification() { - // Do nothing - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt deleted file mode 100644 index 2e08a8ee56..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt +++ /dev/null @@ -1,131 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IDirectProvider -import com.gh.gamecenter.core.utils.ToastUtils - -@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务") -class DirectProviderImpl : IDirectProvider { - - override fun directToWebView(context: Context, url: String, entrance: String?) { - ToastUtils.toast("调用->DirectProviderImpl.directToWebView") - } - - override fun directToRegulationTestPage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToRegulationTestPage") - } - - override fun directToQqConversation(context: Context, qq: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToQqConversation") - } - - override fun directToCommodityDetail(context: Context, commodityId: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToCommodityDetail") - } - - override fun directToEnergyRecord(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") - } - - override fun directToEnergyRecord(context: Context, position: Int) { - ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") - } - - override fun directToEnergyRulePage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage") - } - - override fun directToInviteFriends(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToInviteFriends") - } - - override fun directToExchangeRulePage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToExchangeRulePage") - } - - override fun directToExchangeCommodityPage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToExchangeCommodityPage") - } - - override fun directToLotteryParadisePage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToLotteryParadisePage") - } - - override fun directDouyin(context: Context, userId: String) { - ToastUtils.toast("调用->DirectProviderImpl.directDouyin") - } - - override fun directToSuggestionFromDiagnosis(context: Context, content: String, diagnosis: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToSuggestionFromDiagnosis") - } - - override fun directToQa(context: Context, text: String?, id: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToQa") - } - - override fun directToHelpAndFeedback(context: Context, bundle: Bundle?) { - ToastUtils.toast("调用->DirectProviderImpl.directToHelpAndFeedback") - } - - override fun directToQqGroup(context: Context, groupNumber: String?): Boolean { - ToastUtils.toast("调用->DirectProviderImpl.directToQqGroup") - return true - } - - override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { - ToastUtils.toast("调用->DirectProviderImpl.directToHomeActivity") - } - - override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { - ToastUtils.toast("调用->DirectProviderImpl.directToAnswerDetail") - } - - override fun directToCommunityArticle( - context: Context, - articleId: String?, - communityId: String?, - entrance: String?, - path: String? - ) { - ToastUtils.toast("调用->DirectProviderImpl.directToCommunityArticle") - } - - override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { - ToastUtils.toast("调用->DirectProviderImpl.directToVideoDetail") - } - - override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { - ToastUtils.toast("调用->DirectProviderImpl.directToAmway") - } - - override fun directToOrderCenter(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToOrderCenter") - } - - override fun directToOrderDetail(context: Context, orderId: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToOrderDetail") - } - - override fun directToMyPrizePage(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToMyPrizePage") - } - - override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") - } - - override fun directToQGame(context: Context) { - ToastUtils.toast("调用->DirectProviderImpl.directToQGame") - } - - override fun directToExternalBrowser(context: Context, url: String) { - ToastUtils.toast("调用->DirectProviderImpl.directToExternalBrowser") - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ExposureManagerProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ExposureManagerProviderImpl.kt deleted file mode 100644 index 555afae576..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ExposureManagerProviderImpl.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.exposure.ExposureEvent -import com.gh.gamecenter.feature.provider.IExposureManagerProvider - -@Route(path = RouteConsts.provider.exposureManager, name = "ExposureManager暴露服务") -class ExposureManagerProviderImpl: IExposureManagerProvider { - override fun logExposure(exposureEvent: ExposureEvent) { - // do nothing - } - - override fun init(context: Context?) { - // do nothing - } - -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt deleted file mode 100644 index cdd9e5e331..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IHandleGameResponseProvider - -@Route(path = RouteConsts.provider.handleGameResponse, name = "处理游戏类型返回") -class HandleGameResponseProviderImpl : IHandleGameResponseProvider { - - override fun handleGameResponse(response: List, entrance: String) = response - - override fun init(context: Context?) { - // Do nothing - } - -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt deleted file mode 100644 index 5c498fc71d..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt +++ /dev/null @@ -1,101 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.entity.SimpleGameEntity -import com.gh.gamecenter.common.entity.SuggestType -import com.gh.gamecenter.common.provider.IHelpAndFeedbackProvider -import com.gh.gamecenter.feedback.view.help.QaFeedbackDialogFragment -import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity - -@Route(path = RouteConsts.provider.helpAndFeedback, name = "HelpAndFeedbackActivity暴露服务") -class HelpAndFeedbackProviderImpl : IHelpAndFeedbackProvider { - - override fun startSuggestionActivity( - context: Context?, - suggestType: SuggestType?, - suggestHintType: String?, - content: String? - ) { - SuggestionActivity.startSuggestionActivity(context, suggestType, suggestHintType, content) - } - - override fun startSuggestionActivity( - context: Context?, - suggestType: SuggestType?, - suggestHintType: String?, - content: String?, - isQaFeedback: Boolean, - qaContentId: String? - ) { - SuggestionActivity.startSuggestionActivity(context, suggestType, suggestHintType, content) - } - - override fun startSuggestionActivity( - context: Context?, - suggestType: SuggestType?, - suggestHintType: String?, - content: String?, - game: SimpleGameEntity? - ) { - SuggestionActivity.startSuggestionActivity(context, suggestType, suggestHintType, content, game) - } - - override fun startSuggestionActivity( - context: Context?, - suggestType: SuggestType?, - suggestHintType: String?, - content: String?, - game: SimpleGameEntity?, - gamePlatform: String? - ) { - SuggestionActivity.startSuggestionActivity(context, suggestType, suggestHintType, content, game, gamePlatform) - } - - override fun startSuggestionActivity(context: Context?, suggestType: SuggestType?, hint: String?) { - SuggestionActivity.startSuggestionActivity(context, suggestType, hint) - } - - override fun getIntentFromNetworkDiagnosis(context: Context?, diagnosis: String?): Intent? { - return SuggestionActivity.getIntentFromNetworkDiagnosis(context, diagnosis) - } - - override fun getIntent( - context: Context?, - suggestType: SuggestType?, - hiddenHint: String?, - suggestHintType: String?, - content: String?, - platform: String?, - game: SimpleGameEntity?, - isQaFeedback: Boolean, - qaContentId: String?, - fromRatingKey: Boolean, - diagnosis: String - ): Intent? { - return SuggestionActivity.getIntent( - context, - suggestType, - hiddenHint, - suggestHintType, - content, - platform, - game, - isQaFeedback, - qaContentId, - fromRatingKey, - diagnosis - ) - } - - override fun showQaFeedbackDialogFragment(activity: AppCompatActivity, contentId: String) { - QaFeedbackDialogFragment.show(activity, contentId) - } - - override fun init(context: Context?) { - //Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt deleted file mode 100644 index ccdae185f9..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt +++ /dev/null @@ -1,136 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.entity.CommunityEntity -import com.gh.gamecenter.common.entity.LinkEntity -import com.gh.gamecenter.common.entity.SimpleGameEntity -import com.gh.gamecenter.common.entity.SuggestType -import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider -import com.gh.gamecenter.core.utils.ToastUtils -import com.gh.gamecenter.feature.exposure.ExposureEvent -import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity - -@Route(path = RouteConsts.provider.linkDirectUtils, name = "DirectUtils暴露服务,主要是暴露directToLinkPage方法") -class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { - - override fun directToLinkPage( - context: Context, - linkEntity: LinkEntity, - entrance: String, - path: String - ) { - ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToLinkPage") - } - - override fun directToLinkPage( - context: Context, - linkEntity: LinkEntity, - entrance: String, - path: String, - exposureEvent: ExposureEvent? - ) { - ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToLinkPage") - } - - override fun directToSuggestion(context: Context, type: SuggestType, requestCode: Int?) { - if (requestCode != null) { - val intent = SuggestionActivity.getIntent( - context, - type, - "", - "", - "", - "", - null, - false, - "", - false, - "" - ) - (context as AppCompatActivity).startActivityForResult(intent, requestCode) - } - } - - override fun directToSuggestion( - context: Context, - type: SuggestType, - suggestHintType: String?, - content: String?, - isQaFeedback: Boolean, - qaContentId: String - ) { - val intent = SuggestionActivity.getIntent( - context, - type, - "", - suggestHintType, - content, - "", - null, - isQaFeedback, - qaContentId, - false, - "" - ) - context.startActivity(intent) - } - - override fun directToSuggestion( - context: Context, - type: SuggestType, - suggestHintType: String?, - content: String?, - game: SimpleGameEntity, - platform: String - ) { - val intent = SuggestionActivity.getIntent( - context, - type, - "", - suggestHintType, - content, - platform, - game, - false, - "", - false, - "" - ) - context.startActivity(intent) - } - - override fun directToSuggestion(context: Context, type: SuggestType, hiddenHint: String) { - val intent = SuggestionActivity.getIntent( - context, - type, - hiddenHint, - "", - "", - "", - null, - false, - "", - false, - "" - ) - context.startActivity(intent) - } - - override fun directToCommunityColumn( - context: Context, - community: CommunityEntity?, - subjectId: String, - entrance: String?, - path: String? - ) { - ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToCommunityColumn") - } - - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt deleted file mode 100644 index e5871f9e47..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.* - -@Route(path = RouteConsts.provider.logUtils, name = "LogUtils暴露服务") -class LogUtilsProviderImpl : ILogUtilsProvider { - - override fun login(loginStep: String, loginType: String, entrance: String) { - // Do nothing - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt deleted file mode 100644 index 77a69c7d7a..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt +++ /dev/null @@ -1,38 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IPackageUtilsProvider - -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") -class PackageUtilsProviderImpl : IPackageUtilsProvider { - override fun obtainProcessName(): String? { - return "" - } - - override fun getGhVersionName(): String { - return "" - } - - override fun getGhVersionCode(): Int { - return 0 - } - - override fun getInstalledPackages(context: Context, flag: Int): List { - return listOf() - } - - override fun getApkSignatureByPackageName(context: Context, packageName: String): Array { - return arrayOf() - } - - override fun getSideLoadedInfo(): MutableMap? { - return mutableMapOf() - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt deleted file mode 100644 index df0a171f4e..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IReservationRepositoryProvider - -@Route(path = RouteConsts.provider.reservationRepository, name = "ReservationRepository暴露服务") -class ReservationRepositoryProviderImpl : IReservationRepositoryProvider { - - override fun refreshReservations() { - // Do nothing - } - - override fun clearReservations() { - // Do nothing - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt deleted file mode 100644 index 8cc92ee74e..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IWebProvider - -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") -class WebProviderImpl : IWebProvider { - override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? { - return null - } - - override fun getWebIntent(context: Context, title: String, url: String): Intent? { - return null - } - - override fun getBindWechatIntent(context: Context): Intent? { - return null - } - - override fun getQAIntent( - context: Context?, - url: String?, - title: String?, - isWebPageHandleBackPressed: Boolean, - qaType: Int - ): Intent? { - return null - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/ApiService.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/ApiService.kt deleted file mode 100644 index 6d281ad2c1..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/ApiService.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.gh.gamecenter.feedback.retrofit - -import com.gh.gamecenter.feature.entity.GameEntity -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.entity.HelpEntity -import io.reactivex.Observable -import io.reactivex.Single -import okhttp3.RequestBody -import okhttp3.ResponseBody -import retrofit2.http.* - -interface ApiService { - - /** - * 获取搜索帮助列表 - */ - @GET("helps/contents") - fun getSearchHelps(@Query("filter") filter: String?, @Query("page") page: Int): Observable> - - /** - * 获取QA内容列表 - */ - @GET("qa/contents") - fun getQaContents(@Query("filter") filter: String?, @Query("page") page: Int): Observable> - - /** - * 获取使用帮助列表 - */ - @GET("helps") - fun getHelpCategory(): Single> - - /** - * 获取QA相关配置(目前只有是否开启搜索框) - */ - @GET("qa/{qa_id}") - fun getQaConfig(@Path("qa_id") qaId: String?): Single - - /** - * 获取QA合集数据 - */ - @GET("qa") - fun getQaCollection(@Query("collection_id") collectionId: String?): Single> - - /** - * 上传意见反馈 - */ - @Headers("Content-Type: application/json", "Accept: application/json") - @POST("suggestions") - fun postSuggestion(@Body body: RequestBody?): Observable - - /** - * 获取意见反馈游戏收录提示数据 - */ - @GET("games") - fun getSuggestGameCollectHintData(@Query("filter") filter: String?): Observable> - - /** - * 提交没帮助反馈 - */ - @POST("qa/contents/{content_id}/suggestions") - fun qaSuggestions(@Path("content_id") contentId: String?, @Body body: RequestBody?): Single -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/RetrofitManager.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/RetrofitManager.kt deleted file mode 100644 index 0a699601a0..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/retrofit/RetrofitManager.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.gh.gamecenter.feedback.retrofit - -import com.gh.gamecenter.common.retrofit.BaseRetrofitManager -import com.gh.gamecenter.common.utils.EnvHelper.getHost -import com.gh.gamecenter.core.utils.SingletonHolder -import com.gh.gamecenter.feedback.HaloApp - -class RetrofitManager private constructor() : BaseRetrofitManager() { - - val api: ApiService - - init { - val context = HaloApp.getInstance().applicationContext - val okHttpNormalConfig = getOkHttpConfig(context, 0, 2) - api = provideService(okHttpNormalConfig, getHost(), ApiService::class.java) - } - - companion object : SingletonHolder(::RetrofitManager) -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/utils/NewLogUtils.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/utils/NewLogUtils.kt deleted file mode 100644 index 92c9448337..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/utils/NewLogUtils.kt +++ /dev/null @@ -1,96 +0,0 @@ -package com.gh.gamecenter.feedback.utils - -import com.gh.gamecenter.common.json.JsonObjectBuilder -import com.gh.gamecenter.common.json.json -import com.gh.gamecenter.common.loghub.LoghubUtils -import com.gh.gamecenter.common.tracker.Tracker -import com.gh.gamecenter.common.utils.LogUtils -import com.lightgame.utils.Utils -import org.json.JSONObject - -object NewLogUtils { - - private const val KEY_EVENT = "event" - private const val KEY_META = "meta" - private const val KEY_TIMESTAMP = "timestamp" - private const val KEY_LAUNCH_ID = "launch_id" - private const val KEY_SESSION_ID = "session_id" - private const val KEY_CONTENT_ID = "content_id" - private const val KEY_CONTENT_TITLE = "content_title" - private const val KEY_HELP_ID = "help_id" - private const val KEY_SEARCH_KEY = "search_key" - - private fun log(jsonObject: JSONObject, logStore: String = "event", uploadImmediately: Boolean = false) { - Utils.log("NewLogUtils", jsonObject.toString(4)) - LoghubUtils.log(jsonObject, logStore, uploadImmediately) - } - - fun parseAndPutMeta(): JsonObjectBuilder.() -> Unit = { - val meta = LogUtils.getMetaObject() - val metaKeys = meta.keys() - while (metaKeys.hasNext()) { - val key: String = metaKeys.next().toString() - val value = meta.getString(key) - key to value - } - } - - //进入QA内容详情 - fun logEnterQaContent(clickLocation: String, contentId: String, contentTitle: String, helpId: String) { - val json = json { - KEY_EVENT to "qa_enter_content_detail" - "click_location" to clickLocation - KEY_CONTENT_ID to contentId - KEY_CONTENT_TITLE to contentTitle - KEY_HELP_ID to helpId - KEY_META to LogUtils.getMetaObject() - KEY_LAUNCH_ID to Tracker.launchId - KEY_SESSION_ID to Tracker.sessionId - KEY_TIMESTAMP to System.currentTimeMillis() / 1000 - } - log(json) - } - - //点击QA更多 - fun logClickQaMoreBtn(helpId: String) { - val json = json { - KEY_EVENT to "qa_click_title_more" - KEY_HELP_ID to helpId - KEY_META to LogUtils.getMetaObject() - KEY_LAUNCH_ID to Tracker.launchId - KEY_SESSION_ID to Tracker.sessionId - KEY_TIMESTAMP to System.currentTimeMillis() / 1000 - } - log(json) - } - - //点击QA搜索结果 - fun logClickQaSearchItem(searchKey: String, contentId: String, contentTitle: String, helpId: String) { - val json = json { - KEY_EVENT to "qa_click_search_result" - KEY_SEARCH_KEY to searchKey - KEY_CONTENT_ID to contentId - KEY_CONTENT_TITLE to contentTitle - KEY_HELP_ID to helpId - KEY_META to LogUtils.getMetaObject() - KEY_LAUNCH_ID to Tracker.launchId - KEY_SESSION_ID to Tracker.sessionId - KEY_TIMESTAMP to System.currentTimeMillis() / 1000 - } - log(json) - } - - //点击QA搜索按钮 - fun logClickQaSearchBtn(searchKey: String, isEmptyResult: Boolean) { - val json = json { - KEY_EVENT to "qa_click_search_btn" - KEY_SEARCH_KEY to searchKey - "is_empty_result" to isEmptyResult - KEY_META to LogUtils.getMetaObject() - KEY_LAUNCH_ID to Tracker.launchId - KEY_SESSION_ID to Tracker.sessionId - KEY_TIMESTAMP to System.currentTimeMillis() / 1000 - } - log(json) - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/QaActivity.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/QaActivity.kt deleted file mode 100644 index 3472426674..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/QaActivity.kt +++ /dev/null @@ -1,52 +0,0 @@ -package com.gh.gamecenter.feedback.view - -import android.content.Context -import android.content.Intent -import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.base.activity.ToolBarActivity -import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.updateStatusBarColor -import com.gh.gamecenter.feedback.view.help.HelpContainerFragment -import com.gh.gamecenter.floatingwindow.R - -@Route(path = RouteConsts.activity.qaActivity) -class QaActivity : ToolBarActivity() { - - companion object { - /** - * qaId 存在则是QA页面 - * qaCollectionId 存在则是QA合集页面 - * 两个都存在则默认时QA合集页面 - */ - fun getIntent( - context: Context, - navigationTitle: String, - qaId: String? = null, - qaCollectionId: String? = null - ): Intent { - val args = Bundle() - args.putString(EntranceConsts.KEY_QA_ID, qaId) - args.putString(EntranceConsts.KEY_QA_COLLECTION_ID, qaCollectionId) - args.putString(EntranceConsts.KEY_NAVIGATION_TITLE, navigationTitle) - return getTargetIntent(context, QaActivity::class.java, HelpContainerFragment::class.java, args) - } - } - - override fun provideNormalIntent(): Intent { - return getTargetIntent(this, QaActivity::class.java, HelpContainerFragment::class.java) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - updateStatusBarColor(R.color.background_white, R.color.background_white) - } - - override fun isAutoResetViewBackgroundEnabled() = true - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - updateStatusBarColor(R.color.background_white, R.color.background_white) - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt deleted file mode 100644 index 8b1e05917b..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt +++ /dev/null @@ -1,77 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.content.Context -import android.content.Intent -import android.os.Bundle -import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.base.activity.BaseActivity_TabLayout -import com.gh.gamecenter.common.constant.CommonConsts -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.updateStatusBarColor -import com.gh.gamecenter.feedback.view.suggest.SuggestSelectFragment -import com.gh.gamecenter.floatingwindow.R -import com.lightgame.utils.Util_System_Keyboard - -@Route(path = RouteConsts.activity.helpAndFeedbackActivity) -class HelpAndFeedbackActivity : BaseActivity_TabLayout() { - - override fun getLayoutId(): Int { - return R.layout.activity_help_and_feedback - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (requestCode == CommonConsts.SUGGEST_TYPE_REQUEST - && resultCode == CommonConsts.SUGGEST_TYPE_REQUEST - ) { - finish() - } - } - - override fun initFragmentList(fragments: MutableList) { - fragments.add(HelpContainerFragment()) - fragments.add(SuggestSelectFragment()) - } - - override fun initTabTitleList(tabTitleList: MutableList) { - tabTitleList.add("使用帮助") - tabTitleList.add("意见反馈") - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setNavigationTitle("帮助与反馈") - val defaultPosition = intent.getIntExtra(PAGE_INDEX, CommonConsts.TAB_MAIN) - setCurrentItem(defaultPosition) - updateStatusBarColor(R.color.background_white, R.color.background_white) - } - - override fun onPageSelected(position: Int) { - super.onPageSelected(position) - if (position == CommonConsts.TAB_SUB) { - Util_System_Keyboard.hideSoftKeyboard(this) - } - } - - fun setCurrentItem(position: Int) { - mViewPager.currentItem = position - } - - override fun isAutoResetViewBackgroundEnabled() = true - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - updateStatusBarColor(R.color.background_white, R.color.background_white) - } - - companion object { - - @JvmStatic - fun getIntent(context: Context, position: Int = CommonConsts.TAB_MAIN): Intent { - val intent = Intent(context, HelpAndFeedbackActivity::class.java) - intent.putExtra(PAGE_INDEX, position) - return intent - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerFragment.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerFragment.kt deleted file mode 100644 index 857a0f033f..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerFragment.kt +++ /dev/null @@ -1,221 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.os.Bundle -import android.text.Editable -import android.text.TextWatcher -import android.view.View -import android.view.inputmethod.EditorInfo -import android.widget.TextView -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentTransaction -import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders -import com.gh.gamecenter.common.base.fragment.LazyFragment -import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.eventbus.EBNetworkState -import com.gh.gamecenter.common.mvvm.Status -import com.gh.gamecenter.common.utils.TextHelper -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.feedback.HaloApp -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.FragmentHelpContaierBinding -import com.lightgame.utils.Util_System_Keyboard -import org.greenrobot.eventbus.Subscribe -import org.greenrobot.eventbus.ThreadMode - -/** - * 该页面会根据来源自动切换数据源 - * 1.帮助反馈-使用帮助(默认,qaCollectionId/qaId 均不存在时) - * 2.Q&A合集(qaCollectionId 存在时) - * 3.Q&A(qaId 存在时) - */ -class HelpContainerFragment : LazyFragment() { - - private lateinit var mBinding: FragmentHelpContaierBinding - - private lateinit var mViewModel: HelpContainerViewModel - - private lateinit var mDefaultContentFragment: HelpQaCategoryFragment - private var mSearchContentFragment: HelpContentFragment? = null - - private var mNavigationTitle = "" - - override fun getRealLayoutId(): Int { - return R.layout.fragment_help_contaier - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mNavigationTitle = arguments?.getString(EntranceConsts.KEY_NAVIGATION_TITLE) ?: "" - if (mNavigationTitle.isNotEmpty()) setNavigationTitle(mNavigationTitle) - - val qaCollectionId = arguments?.getString(EntranceConsts.KEY_QA_COLLECTION_ID) - val qaId = arguments?.getString(EntranceConsts.KEY_QA_ID) - val factory = HelpContainerViewModel.Factory(HaloApp.getInstance(), qaId, qaCollectionId) - mViewModel = ViewModelProviders.of(this, factory).get(HelpContainerViewModel::class.java) - - mViewModel.configLiveData.observe(this, Observer { - if (it == null) { - mBinding.includeNoneData.root.visibility = View.GONE - mBinding.includeNoConnection.root.visibility = View.VISIBLE - mBinding.content.visibility = View.GONE - } else if (it.first == true) { - mBinding.searchBar.visibility = if (it.second == true) { - View.VISIBLE - } else View.GONE - - mBinding.includeNoConnection.root.visibility = View.GONE - mBinding.includeNoneData.root.visibility = View.GONE - mBinding.content.visibility = View.VISIBLE - } else { - mBinding.includeNoneData.root.visibility = View.VISIBLE - mBinding.includeNoConnection.root.visibility = View.GONE - mBinding.content.visibility = View.GONE - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) - .setText(R.string.content_delete_hint) - toast(R.string.comment_failed_unable) - } - }) - } - - override fun onRealLayoutInflated(inflatedView: View) { - super.onRealLayoutInflated(inflatedView) - - val qaId = arguments?.getString(EntranceConsts.KEY_QA_ID) - - mBinding = FragmentHelpContaierBinding.bind(inflatedView) - if (!qaId.isNullOrEmpty()) { - changeFragment(default = false) - } else { - changeFragment(default = true) - } - - mBinding.searchInput.addTextChangedListener(object : TextWatcher { - override fun afterTextChanged(s: Editable?) {} - - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} - - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - if (s.isNullOrEmpty()) { - if (!qaId.isNullOrEmpty()) { - if (mSearchContentFragment != null) { - mSearchContentFragment?.updateSearchKey("") - } - } else { - changeFragment(default = true) - } - mBinding.deleteButton.visibility = View.GONE - } else { - mBinding.deleteButton.visibility = View.VISIBLE - } - } - }) - mBinding.searchInput.filters = arrayOf(TextHelper.getFilter(50, "最多输入50个字")) - mBinding.searchButton.setOnClickListener { - search() - } - mBinding.deleteButton.setOnClickListener { - mBinding.searchInput.setText("") - } - mBinding.searchInput.setOnEditorActionListener { v, actionId, event -> - if (actionId == EditorInfo.IME_ACTION_SEARCH) { - search() - } - false - } - mBinding.includeNoConnection.root.setOnClickListener { - mBinding.content.visibility = View.VISIBLE - mBinding.includeNoConnection.root.visibility = View.GONE - mViewModel.initData() - } - } - - fun search() { - val key = mBinding.searchInput.text.toString() - if (key.isEmpty()) { - toast("请输入关键词搜索") - } else { - if (mSearchContentFragment != null) { - mSearchContentFragment?.updateSearchKey(key) - } - changeFragment(default = false) - Util_System_Keyboard.hideSoftKeyboard(activity) - if (!mViewModel.qaId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA搜索", "$mNavigationTitle+$key") - } else if (!mViewModel.qaCollectionId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA合集搜索", "$mNavigationTitle+$key") - //MtaHelper.onEvent("QA", "QA合集搜索结果", key) - } else { - MtaHelper.onEvent("意见反馈", "使用帮助搜索", key) - //MtaHelper.onEvent("意见反馈", "使用帮助搜索结果", key) - } - - } - if (!mViewModel.qaId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA点击", "点击搜索") - } else if (!mViewModel.qaCollectionId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA合集点击", "点击搜索") - } else { - MtaHelper.onEvent("意见反馈", "使用帮助点击", "点击搜索") - } - } - - private fun changeFragment(default: Boolean) { - val transaction = childFragmentManager.beginTransaction() - hideFragments(transaction) - if (default) { - mDefaultContentFragment = alterFragment(transaction, HelpQaCategoryFragment::class.java, default) - } else { - mSearchContentFragment = alterFragment(transaction, HelpContentFragment::class.java, default) - } - - transaction.commitAllowingStateLoss() - } - - private fun alterFragment(transaction: FragmentTransaction, cls: Class, default: Boolean): T { - val tag = cls.simpleName + "" + default - var fragmentByTag = childFragmentManager.findFragmentByTag(tag) as T? - try { - if (fragmentByTag != null) { - transaction.show(fragmentByTag) - } else { - fragmentByTag = cls.newInstance() - val bundle = Bundle() - bundle.putString(EntranceConsts.KEY_QA_ID, mViewModel.qaId) - bundle.putString(EntranceConsts.KEY_QA_COLLECTION_ID, mViewModel.qaCollectionId) - if (!default) { - bundle.putString(EntranceConsts.KEY_SEARCHKEY, mBinding.searchInput.text.toString()) - bundle.putString(EntranceConsts.KEY_NAVIGATION_TITLE, mNavigationTitle) - } - fragmentByTag.arguments = bundle - transaction.add(R.id.content_container, fragmentByTag, tag) - } - } catch (e: Exception) { - e.printStackTrace() - } - - return fragmentByTag!! - } - - - // 连接上网络事件 - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEventMainThread(busNetworkState: EBNetworkState) { - if (busNetworkState.isNetworkConnected - && (mViewModel.categoryLiveData.value?.status == Status.ERROR || mViewModel.configLiveData.value == null) - ) { - mViewModel.initData() - } - } - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - mBinding.searchInput.run { - post { - setHintTextColor(R.color.text_body.toColor(requireContext())) - setTextColor(R.color.text_title.toColor(requireContext())) - } - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerViewModel.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerViewModel.kt deleted file mode 100644 index de60084fd5..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContainerViewModel.kt +++ /dev/null @@ -1,114 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.annotation.SuppressLint -import android.app.Application -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import com.gh.gamecenter.common.mvvm.Resource -import com.gh.gamecenter.common.retrofit.BiResponse -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.retrofit.RetrofitManager -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers -import okhttp3.ResponseBody -import org.json.JSONObject -import retrofit2.HttpException - -class HelpContainerViewModel( - application: Application, - val qaId: String?, - val qaCollectionId: String? -) : AndroidViewModel(application) { - private val mApi = RetrofitManager.getInstance().api - - /** - * Pair first: 是否显示内容(true:显示,false:隐藏) - * Pair second: 是否显示搜索框(true:显示,false:隐藏) - */ - val configLiveData = MutableLiveData>() - - val categoryLiveData = MutableLiveData>>() - - init { - initData() - } - - fun initData() { - if (!qaId.isNullOrEmpty()) { - getQaConfig() - } else { - getHelpCategory() - } - } - - @SuppressLint("CheckResult") - fun getHelpCategory() { - mApi.getHelpCategory() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } - - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) - } - - @SuppressLint("CheckResult") - fun getQaConfig() { - mApi.getQaConfig(qaId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - val jsonObject = JSONObject(data.string()) - val active = jsonObject.getBoolean("active") - val search = jsonObject.getBoolean("search") - configLiveData.postValue(Pair(active, search)) - } - - override fun onFailure(exception: Exception) { - configLiveData.postValue(null) - } - }) - } - - @SuppressLint("CheckResult") - fun getQaCollection() { - mApi.getQaCollection(qaCollectionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - categoryLiveData.postValue(Resource.success(data)) - } - - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) - } - - class Factory( - private val mApplication: Application, - private val mQaId: String?, - private val mQaCollectionId: String? - ) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T { - return HelpContainerViewModel(mApplication, mQaId, mQaCollectionId) as T - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentAdapter.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentAdapter.kt deleted file mode 100644 index 72bcc22fd9..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentAdapter.kt +++ /dev/null @@ -1,195 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.content.Context -import android.text.TextUtils -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.baselist.ListAdapter -import com.gh.gamecenter.common.baselist.NormalListViewModel -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.ItemViewType -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.EnvHelper -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.fromHtml -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.viewholder.FooterViewHolder -import com.gh.gamecenter.core.provider.IWebProvider -import com.gh.gamecenter.core.utils.HtmlUtils -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.feedback.entity.HelpEntity -import com.gh.gamecenter.feedback.utils.NewLogUtils -import com.gh.gamecenter.feedback.view.QaActivity -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.HelpItemBinding - -class HelpContentAdapter( - context: Context, - private val mFragment: HelpContentFragment, - private val mViewModel: NormalListViewModel, - private val mQaId: String?, - private val mQaCollectionId: String?, - private val mNavigationTitle: String -) : ListAdapter(context) { - var searchKey = "" - - override fun setListData(updateData: MutableList?) { - super.setListData(updateData) - } - - private fun replayKeyword(title: String?): String? { - val translationKey = escapeExprSpecialWord(mFragment.searchKey) - return if (TextUtils.isEmpty(translationKey)) title - else title?.replace(translationKey?.toRegex()!!, getHtmlKeyword()) - } - - // 特殊符号转译 - private fun escapeExprSpecialWord(s: String?): String? { - var keyword = s - if (!keyword.isNullOrEmpty()) { - val fbsArr = - arrayOf("\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|") - for (key in fbsArr) { - if (keyword!!.contains(key)) { - keyword = keyword.replace(key, "\\" + key) - } - } - } - return keyword - } - - private fun getHtmlKeyword(): String { - return "" + mFragment.searchKey + "" - } - - override fun getItemViewType(position: Int): Int { - return if (position == itemCount - 1) ItemViewType.ITEM_FOOTER else ItemViewType.ITEM_BODY - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val view: View - return when (viewType) { - ItemViewType.ITEM_FOOTER -> { - view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false) - (view.layoutParams as RecyclerView.LayoutParams).apply { - height = RecyclerView.LayoutParams.WRAP_CONTENT - view.layoutParams = this - } - view.setPadding(0, 20F.dip2px(), 0, 20F.dip2px()) - FooterViewHolder(view) - } - else -> { - view = mLayoutInflater.inflate(R.layout.help_item, parent, false) - HelpItemViewHolder(HelpItemBinding.bind(view)) - } - } - } - - override fun getItemCount(): Int { - return if (mEntityList == null || mEntityList.isEmpty()) 0 else mEntityList.size + FOOTER_ITEM_COUNT - } - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - when (holder) { - is HelpItemViewHolder -> { - val entity = mEntityList[position] - holder.binding.content.text = entity.title.fromHtml() - holder.itemView.setOnClickListener { - val webActivity = - ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider - if (entity.content.startsWith("http")) { - mContext.startActivity( - webActivity?.getIntent( - mContext, - entity.content, - false - ) - ) - } else { - val url = if (EnvHelper.isDevEnv) { - Constants.HELP_ADDRESS_DEV - } else { - Constants.HELP_ADDRESS - } - mContext.startActivity( - webActivity?.getQAIntent( - mContext, - "${url}${entity.id}&help_id=${entity.helpId}", - mNavigationTitle, - true, - if (!mQaCollectionId.isNullOrEmpty()) 0 else 1 - ) - ) - } - val category = mFragment.getHelpCategory() - val activity = mFragment.activity - val navigationTitle = if (activity is QaActivity) { - activity.findViewById(R.id.normal_title).text.toString() - } else "未知" - if (searchKey.isNotEmpty()) { - if (!mQaCollectionId.isNullOrEmpty()) { - MtaHelper.onEvent( - "QA", - "QA合集搜索结果", - "${searchKey}+${HtmlUtils.stripHtml(entity.title)}" - ) - } else { - MtaHelper.onEvent( - "意见反馈", - "使用帮助搜索结果", - "${searchKey}+${HtmlUtils.stripHtml(entity.title)}" - ) - } - NewLogUtils.logClickQaSearchItem( - searchKey, - entity.id, - HtmlUtils.filterHtmlLabel(entity.title), - entity.helpId - ) - NewLogUtils.logEnterQaContent( - "搜索结果", - entity.id, - HtmlUtils.filterHtmlLabel(entity.title), - entity.helpId - ) - } else if (!mQaId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA内容", navigationTitle + "+" + entity.title) - NewLogUtils.logEnterQaContent( - "QA", - entity.id, - HtmlUtils.filterHtmlLabel(entity.title), - entity.helpId - ) - } else if (!mQaCollectionId.isNullOrEmpty()) { - if (category != null) { - MtaHelper.onEvent( - "QA", - "QA合集内容", - navigationTitle + "+" + category.name + "+" + entity.title - ) - } else { - MtaHelper.onEvent("QA", "QA合集内容", navigationTitle + "+" + entity.title) - } - } else { - if (category != null) { - MtaHelper.onEvent("意见反馈", "使用帮助内容", category.name + "+" + entity.title) - } else { - MtaHelper.onEvent("意见反馈", "使用帮助内容", entity.title) - } - } - - } - } - is FooterViewHolder -> { - holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) - holder.hint.text = "没有更多了~" - holder.hint.setTextColor(R.color.text_subtitle.toColor(mContext)) - holder.hint.textSize = 12F - } - } - } - -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentFragment.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentFragment.kt deleted file mode 100644 index f10f312aaf..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpContentFragment.kt +++ /dev/null @@ -1,189 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.os.Bundle -import android.view.View -import android.widget.TextView -import androidx.core.content.ContextCompat -import androidx.lifecycle.ViewModelProviders -import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.baselist.* -import com.gh.gamecenter.common.constant.CommonConsts -import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IDirectProvider -import com.gh.gamecenter.core.utils.UrlFilterUtils -import com.gh.gamecenter.feedback.HaloApp -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.entity.HelpEntity -import com.gh.gamecenter.feedback.retrofit.RetrofitManager -import com.gh.gamecenter.feedback.utils.NewLogUtils -import com.gh.gamecenter.floatingwindow.R -import io.reactivex.Observable - -class HelpContentFragment : ListFragment>() { - - lateinit var mReuseNoneDataButton: TextView - lateinit var mReuseNoneDataSearch: View - - private var mAdapter: HelpContentAdapter? = null - - private var mCategory: HelpCategoryEntity? = null - - private var mQaCollectionId: String? = null - private var mQaId: String? = null - private var mNavigationTitle = "" - - var searchKey: String? = null - - - override fun provideListAdapter(): HelpContentAdapter { - if (mAdapter == null) { - mAdapter = - HelpContentAdapter(requireContext(), this, mListViewModel, mQaId, mQaCollectionId, mNavigationTitle) - mAdapter?.searchKey = searchKey ?: "" - } - return mAdapter!! - } - - override fun getItemDecoration(): RecyclerView.ItemDecoration? { - return null - } - - override fun isAutomaticLoad(): Boolean { - return !mQaId.isNullOrEmpty() || !searchKey.isNullOrEmpty() - } - - override fun getLayoutId(): Int { - return R.layout.fragment_help_content - } - - override fun onCreate(savedInstanceState: Bundle?) { - searchKey = arguments?.getString(EntranceConsts.KEY_SEARCHKEY) - mQaId = arguments?.getString(EntranceConsts.KEY_QA_ID) - mQaCollectionId = arguments?.getString(EntranceConsts.KEY_QA_COLLECTION_ID) - mNavigationTitle = arguments?.getString(EntranceConsts.KEY_NAVIGATION_TITLE) ?: "" - super.onCreate(savedInstanceState) - mReuseNoneDataSearch = mCachedView.findViewById(R.id.reuse_none_data_search) - mReuseNoneDataButton = mCachedView.findViewById(R.id.reuseResetLoadTv) - mReuseNoneDataButton.text = "意见反馈" - mReuseNoneDataButton.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)) - mReuseNoneDataButton.background = - ContextCompat.getDrawable(requireContext(), R.drawable.bg_search_skip_game_btn_radius20) - mReuseNoneDataButton.visibility = View.VISIBLE - val reuseNoneDataTv = mReuseNoneDataSearch.findViewById(R.id.reuseNoneDataTv) - reuseNoneDataTv.text = "没有找到相关内容~" - val reuseNoneDataDescTv = mReuseNoneDataSearch.findViewById(R.id.reuseNoneDataDescTv) - reuseNoneDataDescTv.visibility = View.VISIBLE - reuseNoneDataDescTv.text = "换个搜索词试试看吧" - mReuseNoneDataButton.setOnClickListener { - if (activity is HelpAndFeedbackActivity) { - (activity as HelpAndFeedbackActivity).setCurrentItem(CommonConsts.TAB_SUB) - } else { - val provider = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider - provider?.directToHelpAndFeedback(requireContext(), CommonConsts.TAB_SUB) - } - } - } - - override fun provideDataObservable(page: Int): Observable> { - val filterQuery = if (searchKey != null) { - if (!mQaCollectionId.isNullOrEmpty()) { - UrlFilterUtils.getFilterQuery("collection_id", mQaCollectionId, "keyword", searchKey) - } else if (!mQaId.isNullOrEmpty()) { - UrlFilterUtils.getFilterQuery("qa_id", mQaId, "keyword", searchKey) - } else { - UrlFilterUtils.getFilterQuery("keyword", searchKey) - } - } else if (mCategory != null) { - if (!mQaCollectionId.isNullOrEmpty()) { - UrlFilterUtils.getFilterQuery("qa_id", mCategory?.id) - } else { - UrlFilterUtils.getFilterQuery("help_id", mCategory?.id) - } - } else { - if (!mQaId.isNullOrEmpty()) { - UrlFilterUtils.getFilterQuery("qa_id", mQaId) - } else { - "" - } - } - - return if (mQaId.isNullOrEmpty() && mQaCollectionId.isNullOrEmpty()) { - RetrofitManager.getInstance().api.getSearchHelps(filterQuery, page) - } else { - RetrofitManager.getInstance().api.getQaContents(filterQuery, page) - } - } - - override fun provideListViewModel(): NormalListViewModel { - val factory = NormalListViewModel.Factory(HaloApp.getInstance(), this) - return ViewModelProviders.of(this, factory) - .get(NormalListViewModel::class.java) as NormalListViewModel - } - - override fun autoLoadMore() { - mListViewModel.load(LoadType.NORMAL) - } - - override fun theNumberNeededToFillAScreen(): Int { - return 10 - } - - fun updateSearchKey(key: String) { - if (key != searchKey) { - searchKey = key - mAdapter?.searchKey = searchKey ?: "" - onLoadRefresh() - } - } - - fun setHelpCategory(category: HelpCategoryEntity?) { - if (mCategory != category) { - mCategory = category - onLoadRefresh() - } - } - - fun getHelpCategory(): HelpCategoryEntity? { - return mCategory - } - - override fun onLoadEmpty() { - super.onLoadEmpty() - if (searchKey.isNullOrEmpty()) { - mReuseNoneDataSearch.visibility = View.GONE - mReuseNoData?.visibility = View.VISIBLE - } else { - mReuseNoneDataSearch.visibility = View.VISIBLE - mReuseNoData?.visibility = View.GONE - } - } - - override fun onChanged(ts: MutableList?) { - super.onChanged(ts) - if (!searchKey.isNullOrEmpty() && - (mListViewModel.loadStatusLiveData.value == LoadStatus.INIT_OVER || - mListViewModel.loadStatusLiveData.value == LoadStatus.INIT_LOADED || - mListViewModel.loadStatusLiveData.value == LoadStatus.INIT_EMPTY) - ) { - NewLogUtils.logClickQaSearchBtn(searchKey ?: "", ts?.isNullOrEmpty() == true) - } - } - - override fun onLoadDone() { - super.onLoadDone() - mReuseNoneDataSearch.visibility = View.GONE - } - - override fun onLoadError() { - super.onLoadError() - mReuseNoneDataSearch.visibility = View.GONE - } - - override fun onLoadRefresh() { - super.onLoadRefresh() - mReuseNoneDataSearch.visibility = View.GONE - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpItemViewHolder.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpItemViewHolder.kt deleted file mode 100644 index b15136b80a..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpItemViewHolder.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import com.gh.gamecenter.common.base.BaseRecyclerViewHolder -import com.gh.gamecenter.floatingwindow.databinding.HelpItemBinding - -class HelpItemViewHolder(val binding: HelpItemBinding) : BaseRecyclerViewHolder(binding.root) \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaAdapter.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaAdapter.kt deleted file mode 100644 index b2cb45c938..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaAdapter.kt +++ /dev/null @@ -1,77 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.EnvHelper -import com.gh.gamecenter.core.provider.IWebProvider -import com.gh.gamecenter.core.utils.HtmlUtils -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.utils.NewLogUtils -import com.gh.gamecenter.floatingwindow.databinding.HelpQaItemBinding - -class HelpQaAdapter(val context: Context, val helpCategoryEntity: HelpCategoryEntity, val mQaCollectionId: String?) : - RecyclerView.Adapter() { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return HelpQaItemViewHolder( - HelpQaItemBinding.inflate( - LayoutInflater.from(context), - parent, - false - ).root - ) - } - - override fun getItemCount(): Int = helpCategoryEntity.helpEntities.size - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val helpEntity = helpCategoryEntity.helpEntities[position] - val textView = holder.itemView as TextView - textView.text = helpEntity.title - textView.setOnClickListener { - val webActivity = - ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider - - if (helpEntity.content.startsWith("http")) { - context.startActivity(webActivity?.getIntent(context, helpEntity.content, false)) - } else { - val url = if (EnvHelper.isDevEnv) { - Constants.HELP_ADDRESS_DEV - } else { - Constants.HELP_ADDRESS - } - val qaIntent = webActivity?.getQAIntent( - context, - "${url}${helpEntity.id}&help_id=${helpCategoryEntity.id}", - helpCategoryEntity.name, - true, - if (!mQaCollectionId.isNullOrEmpty()) 0 else 1 - ) - qaIntent?.let { - context.startActivity(it) - } - - } - if (!mQaCollectionId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA合集点击", "点击首页+${HtmlUtils.stripHtml(helpEntity.title)}") - } else { - MtaHelper.onEvent("意见反馈", "使用帮助点击", "点击首页+${HtmlUtils.stripHtml(helpEntity.title)}") - } - NewLogUtils.logEnterQaContent( - "QA首页", - helpEntity.id, - HtmlUtils.filterHtmlLabel(helpEntity.title), - helpCategoryEntity.id - ) - } - } - - class HelpQaItemViewHolder(view: View) : RecyclerView.ViewHolder(view) -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryAdapter.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryAdapter.kt deleted file mode 100644 index abd31f6c8d..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryAdapter.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.ImageUtils -import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration -import com.gh.gamecenter.core.provider.IDirectProvider -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.utils.NewLogUtils -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.HelpQaCategoryItemBinding - -class HelpQaCategoryAdapter(val context: Context, private val mQaCollectionId: String?) : - RecyclerView.Adapter() { - - val mEntityList = arrayListOf() - - fun setListData(updateData: List) { - mEntityList.clear() - mEntityList.addAll(updateData) - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val view = LayoutInflater.from(context).inflate(R.layout.help_qa_category_item, parent, false) - return HelpQaCategoryViewHolder(HelpQaCategoryItemBinding.bind(view)) - } - - override fun getItemCount(): Int = mEntityList.size - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - if (holder is HelpQaCategoryViewHolder) { - val helpCategoryEntity = mEntityList[position] - ImageUtils.display(holder.binding.categoryIcon, helpCategoryEntity.icon) - holder.binding.categoryName.text = helpCategoryEntity.name - - holder.binding.qaRv.apply { - layoutManager = GridLayoutManager(context, 2) - addItemDecoration( - GridSpacingItemColorDecoration( - context, - 28, - 0, - R.color.transparent - ) - ) - adapter = HelpQaAdapter(context, helpCategoryEntity, mQaCollectionId) - } - holder.binding.categoryMore.setOnClickListener { - val provider = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider - provider?.directToQa(context, helpCategoryEntity.name, helpCategoryEntity.id) - if (!mQaCollectionId.isNullOrEmpty()) { - MtaHelper.onEvent("QA", "QA合集点击", "点击更多+${helpCategoryEntity.name}") - } else { - MtaHelper.onEvent("意见反馈", "使用帮助点击", "点击更多+${helpCategoryEntity.name}") - } - NewLogUtils.logClickQaMoreBtn(helpCategoryEntity.id) - } - } - } - - class HelpQaCategoryViewHolder(val binding: HelpQaCategoryItemBinding) : RecyclerView.ViewHolder(binding.root) - -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryFragment.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryFragment.kt deleted file mode 100644 index d5b6a0aac2..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.view.View -import android.widget.TextView -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.base.fragment.LazyFragment -import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.entity.ErrorEntity -import com.gh.gamecenter.common.mvvm.Status -import com.gh.gamecenter.common.utils.toDrawable -import com.gh.gamecenter.common.utils.toObject -import com.gh.gamecenter.common.utils.viewModelProvider -import com.gh.gamecenter.common.view.CustomDividerItemDecoration -import com.gh.gamecenter.floatingwindow.FloatingWindowProviderImpl -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.FragmentQaCategoryBinding - -class HelpQaCategoryFragment : LazyFragment() { - - private var mQaCollectionId = "" - private var mQaId = "" - private var mViewModel: HelpQaCategoryViewModel? = null - private lateinit var mBinding: FragmentQaCategoryBinding - private var mAdapter: HelpQaCategoryAdapter? = null - - - override fun getRealLayoutId() = R.layout.fragment_qa_category - - override fun onRealLayoutInflated(inflatedView: View) { - super.onRealLayoutInflated(inflatedView) - - mBinding = FragmentQaCategoryBinding.bind(inflatedView) - - FloatingWindowProviderImpl().getFloatingWindow("", "", this, mBinding.listRv) - - mBinding.listRv.apply { - layoutManager = LinearLayoutManager(context) - addItemDecoration(getItemDecoration()) - mAdapter = HelpQaCategoryAdapter(requireContext(), mQaCollectionId) - adapter = mAdapter - } - - mBinding.includeNoConnection.root.setOnClickListener { - mBinding.includeLoading.root.visibility = View.VISIBLE - mBinding.includeNoConnection.root.visibility = View.GONE - mViewModel?.initData() - } - } - - override fun onFragmentFirstVisible() { - super.onFragmentFirstVisible() - - mQaCollectionId = arguments?.getString(EntranceConsts.KEY_QA_COLLECTION_ID) ?: "" - mQaId = arguments?.getString(EntranceConsts.KEY_QA_ID) ?: "" - - val factory = HelpQaCategoryViewModel.Factory(mQaCollectionId) - mViewModel = viewModelProvider(factory) - mViewModel?.categoryLiveData?.observe(this, Observer { - mBinding.includeLoading.root.visibility = View.GONE - if (it.status == Status.SUCCESS) { - if (it.data.isNullOrEmpty()) { - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) - .setText(R.string.game_empty) - mBinding.includeNoneData.root.visibility = View.VISIBLE - } else { - mBinding.includeNoneData.root.visibility = View.GONE - mAdapter?.setListData(it.data!!) - } - mBinding.includeNoConnection.root.visibility = View.GONE - } else { - val errorEntity = it.exception?.response()?.errorBody()?.string()?.toObject() - if (errorEntity?.code == 403083) { // 隐藏 - mBinding.includeNoneData.root.visibility = View.VISIBLE - mBinding.includeNoConnection.root.visibility = View.GONE - mBinding.includeNoneData.root.findViewById(R.id.reuseNoneDataTv) - .setText(R.string.content_delete_hint) - toast(R.string.comment_failed_unable) - } else { - mBinding.includeNoneData.root.visibility = View.GONE - mBinding.includeNoConnection.root.visibility = View.VISIBLE - } - } - }) - } - - fun getItemDecoration(): RecyclerView.ItemDecoration { - return CustomDividerItemDecoration( - requireContext(), - onlyDecorateTheFirstItem = false, - notDecorateTheFirstItem = false, - notDecorateTheLastItem = true, - notDecorateTheFirstTwoItems = false - ).apply { - setDrawable(R.drawable.divider_item_line_space_16.toDrawable(requireContext())!!) - } - } - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - mBinding.listRv.run { - if (itemDecorationCount > 0) { - removeItemDecorationAt(0) - addItemDecoration(getItemDecoration()) - } - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryViewModel.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryViewModel.kt deleted file mode 100644 index e6dc2da706..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/HelpQaCategoryViewModel.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.annotation.SuppressLint -import android.app.Application -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import com.gh.gamecenter.common.mvvm.Resource -import com.gh.gamecenter.common.retrofit.BiResponse -import com.gh.gamecenter.feedback.HaloApp -import com.gh.gamecenter.feedback.entity.HelpCategoryEntity -import com.gh.gamecenter.feedback.retrofit.RetrofitManager -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers -import retrofit2.HttpException - -class HelpQaCategoryViewModel(application: Application, val qaCollectionId: String? = "") : - AndroidViewModel(application) { - - private val mApi = RetrofitManager.getInstance().api - val categoryLiveData = MutableLiveData>>() - - init { - initData() - } - - fun initData() { - if (!qaCollectionId.isNullOrEmpty()) { - getQaCollection() - } else { - getHelpCategory() - } - } - - @SuppressLint("CheckResult") - fun getQaCollection() { - mApi.getQaCollection(qaCollectionId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - val newList = ArrayList(data).apply { addAll(data) } - categoryLiveData.postValue(Resource.success(newList)) - } - - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) - } - - @SuppressLint("CheckResult") - fun getHelpCategory() { - mApi.getHelpCategory() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: List) { - val newList = ArrayList(data).apply { addAll(data) } - categoryLiveData.postValue(Resource.success(newList)) - } - - override fun onFailure(exception: Exception) { - super.onFailure(exception) - val httpException = if (exception is HttpException) { - exception - } else null - categoryLiveData.postValue(Resource.error(httpException)) - } - }) - } - - - class Factory(private val mQaCollectionId: String?) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T { - return HelpQaCategoryViewModel(HaloApp.getInstance(), mQaCollectionId) as T - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackDialogFragment.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackDialogFragment.kt deleted file mode 100644 index 08fb6461f2..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackDialogFragment.kt +++ /dev/null @@ -1,191 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.app.Dialog -import android.content.res.Configuration -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.appcompat.app.AppCompatActivity -import androidx.fragment.app.FragmentTransaction -import androidx.lifecycle.Lifecycle -import androidx.recyclerview.widget.GridLayoutManager -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.BuildConfig -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.entity.SuggestType -import com.gh.gamecenter.common.eventbus.EBReuse -import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.common.utils.DarkModeUtils.isDarkModeOn -import com.gh.gamecenter.common.utils.DarkModeUtils.isFollowSystemDarkModeFromSp -import com.gh.gamecenter.common.view.GridSpacingItemDecoration -import com.gh.gamecenter.core.provider.IAppProvider -import com.gh.gamecenter.core.provider.IDialogUtilsProvider -import com.gh.gamecenter.core.utils.ToastUtils -import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.DialogQaFeedbackBinding -import com.lightgame.dialog.BaseDialogFragment -import org.bouncycastle.asn1.x500.style.RFC4519Style.title -import org.greenrobot.eventbus.EventBus - -class QaFeedbackDialogFragment : BaseDialogFragment() { - var contentId: String = "" - private var mLoadingDialog: Dialog? = null - private lateinit var mBinding: DialogQaFeedbackBinding - private lateinit var mViewModel: QaFeedbackViewModel - private val mReasonList = arrayListOf("内容看不懂", "没有解决办法", "方法不可行", "其他原因") - private lateinit var mAdapter: QaFeedbackReasonAdapter - - private var mIsDarkModeOn = false - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - return DialogQaFeedbackBinding.inflate(inflater, null, false).apply { mBinding = this }.root - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mViewModel = viewModelProvider(QaFeedbackViewModel.Factory(contentId)) - mViewModel.feedbackSuccess.observe(this) { - if (it) { - ToastUtils.showToast("感谢您的反馈") - EventBus.getDefault().post(EBReuse("feedbackRefresh")) - dismissAllowingStateLoss() - } - mLoadingDialog?.dismiss() - } - - mIsDarkModeOn = isDarkModeOn(requireContext()) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - mBinding.contentEt.filters = arrayOf(TextHelper.getFilter(300, "最多允许输入300个字")) - mBinding.reasonRv.apply { - layoutManager = GridLayoutManager(requireContext(), 2) - addItemDecoration(GridSpacingItemDecoration(2, 8f.dip2px(), false)) - adapter = QaFeedbackReasonAdapter(requireContext(), mReasonList) { - mBinding.commitBtn.background = - R.drawable.bg_notification_open_btn_style_2.toDrawable(requireContext()) - mBinding.commitBtn.setTextColor(R.color.text_white.toColor(requireContext())) - }.apply { - mAdapter = this - } - } - mBinding.commitBtn.setOnClickListener { - val reason = mAdapter.getSelectReason() - if (reason.isEmpty()) return@setOnClickListener - qaFeedback(reason) - } - mBinding.feedbackMoreTv.setOnClickListener { - SuggestionActivity.startSuggestionActivity( - requireContext(), - SuggestType.gameQuestion, - "game", - "", - true, - contentId - ) - } - mBinding.closeIv.setOnClickListener { - dismissAllowingStateLoss() - } - } - - private fun qaFeedback(reason: String) { - if (contentId.isEmpty()) return - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider - val gameName = appProvider?.get(Constants.GAME_NAME, false) as? String - val headStr = if (gameName.isNullOrEmpty()) { - "【没帮助】" - } else { - //https://git.shanqu.cc/pm/halo/halo-app-issues/-/issues/1928 第4点 - "【来自:${gameName}-没帮助】" - } - val sb = StringBuilder(headStr).append(contentId).append(";").append(reason) - if (mBinding.contentEt.text.isNotEmpty()) { - sb.append(";") - sb.append(mBinding.contentEt.text.toString().trim()) - } - val dialogUtils = - ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider - mLoadingDialog = dialogUtils?.showWaitDialog(requireContext(), "提交中...") - mViewModel.qaSuggestions(sb.toString()) - } - - - override fun onStart() { - super.onStart() - val width = requireContext().resources.displayMetrics.widthPixels - 40F.dip2px() - val height = ViewGroup.LayoutParams.WRAP_CONTENT - requireDialog().window?.setLayout(width, height) - requireDialog().setCanceledOnTouchOutside(false) - } - - override fun onResume() { - super.onResume() - if (!isFollowSystemDarkModeFromSp() && mIsDarkModeOn != isDarkModeOn(requireContext())) { - onDarkModeChanged() - } - } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - onDarkModeChanged() - } - - private fun onDarkModeChanged() { - mIsDarkModeOn = isDarkModeOn(requireContext()) - - mBinding.run { - root.background = R.drawable.background_shape_white_radius_8.toDrawable(requireContext()) - title.setTextColor(R.color.text_title.toColor(requireContext())) - reasonRv.adapter?.run { - notifyItemRangeChanged(0, itemCount) - } - contentEt.run { - background = R.drawable.border_round_stroke_eee_4.toDrawable(requireContext()) - setHintTextColor(R.color.text_body.toColor(requireContext())) - setTextColor(R.color.text_title.toColor(requireContext())) - } - commitBtn.run { - if (::mAdapter.isInitialized && mAdapter.getSelectReason().isEmpty()) { - background = R.drawable.button_round_f5f5f5.toDrawable(requireContext()) - setTextColor(R.color.text_body.toColor(requireContext())) - } else { - background = R.drawable.bg_notification_open_btn_style_2.toDrawable(requireContext()) - setTextColor(R.color.text_white.toColor(requireContext())) - } - } - feedbackMoreTv.setTextColor(R.color.theme_font.toColor(requireContext())) - } - } - - companion object { - @JvmStatic - fun show(activity: AppCompatActivity, contentId: String) { - if (!activity.lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) return - var dialogFragment = - activity.supportFragmentManager.findFragmentByTag(QaFeedbackDialogFragment::class.java.name) as? QaFeedbackDialogFragment - if (dialogFragment == null) { - dialogFragment = QaFeedbackDialogFragment() - dialogFragment.contentId = contentId - dialogFragment.show( - activity.supportFragmentManager, - QaFeedbackDialogFragment::class.java.name - ) - } else { - dialogFragment.contentId = contentId - val transaction: FragmentTransaction = - activity.supportFragmentManager.beginTransaction() - transaction.show(dialogFragment) - transaction.commit() - } - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackReasonAdapter.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackReasonAdapter.kt deleted file mode 100644 index 9955c2cbec..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackReasonAdapter.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.toDrawable -import com.gh.gamecenter.floatingwindow.R -import com.gh.gamecenter.floatingwindow.databinding.ItemQaFeedbackReasonBinding -import com.lightgame.adapter.BaseRecyclerAdapter -import splitties.views.InputType.Companion.text - -class QaFeedbackReasonAdapter( - context: Context, - val reasonList: ArrayList, - val callback: (String) -> Unit -) : - BaseRecyclerAdapter(context) { - - private var mSelectPosition = -1 - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return QaFeedbackReasonViewHolder( - ItemQaFeedbackReasonBinding.inflate(LayoutInflater.from(mContext), parent, false) - ) - } - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val reason = reasonList[position] - if (holder is QaFeedbackReasonViewHolder) { - holder.binding.reasonTv.apply { - text = reason - background = - if (mSelectPosition == position) R.drawable.qa_feedback_rg_button_checked.toDrawable(mContext) - else R.drawable.qa_feedback_rg_button_normal.toDrawable(mContext) - setTextColor( - if (mSelectPosition == position) R.color.theme_font.toColor(mContext) - else R.color.text_title.toColor(mContext) - ) - } - holder.binding.reasonTv.setOnClickListener { - mSelectPosition = position - callback.invoke(holder.binding.reasonTv.text.toString()) - notifyDataSetChanged() - } - } - } - - override fun getItemCount(): Int = reasonList.size - - fun getSelectReason(): String { - return if (mSelectPosition >= 0) reasonList[mSelectPosition] else "" - } - -} - -class QaFeedbackReasonViewHolder(val binding: ItemQaFeedbackReasonBinding) : - RecyclerView.ViewHolder(binding.root) diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackViewModel.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackViewModel.kt deleted file mode 100644 index 8fc517400e..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/help/QaFeedbackViewModel.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.gh.gamecenter.feedback.view.help - -import android.annotation.SuppressLint -import android.app.Application -import android.os.Build -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.exposure.meta.MetaUtil.getBase64EncodedIMEI -import com.gh.gamecenter.common.retrofit.BiResponse -import com.gh.gamecenter.common.utils.singleToMain -import com.gh.gamecenter.common.utils.toRequestBody -import com.gh.gamecenter.core.provider.IAppProvider -import com.gh.gamecenter.core.provider.IPackageUtilsProvider -import com.gh.gamecenter.feedback.HaloApp -import com.gh.gamecenter.feedback.retrofit.RetrofitManager -import com.gh.gamecenter.floatingwindow.R -import com.walkud.rom.checker.RomIdentifier -import okhttp3.ResponseBody - -class QaFeedbackViewModel(application: Application, private val contentId: String) : AndroidViewModel(application) { - - val feedbackSuccess = MutableLiveData() - - @SuppressLint("CheckResult") - fun qaSuggestions(message: String) { - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider - val map = hashMapOf() - map["message"] = message - map["ghversion"] = packageUtilsConfig?.getGhVersionName() ?: "" - map["channel"] = appProvider?.getChannel() ?: "" - map["type"] = Build.MODEL - map["sdk"] = Build.VERSION.SDK_INT.toString() - map["version"] = Build.VERSION.RELEASE - map["source"] = HaloApp.getInstance().getString(R.string.app_name) - map["jnfj"] = getBase64EncodedIMEI() - map["manufacturer"] = Build.MANUFACTURER - map["rom"] = RomIdentifier.getRom().name + " " + RomIdentifier.getRom().versionName - - val requestBody = map.toRequestBody() - RetrofitManager.getInstance().api - .qaSuggestions(contentId, requestBody) - .compose(singleToMain()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - feedbackSuccess.postValue(true) - } - - override fun onFailure(exception: Exception) { - super.onFailure(exception) - feedbackSuccess.postValue(false) - } - }) - } - - class Factory(private val contentId: String) : ViewModelProvider.NewInstanceFactory() { - override fun create(modelClass: Class): T { - return QaFeedbackViewModel(HaloApp.getInstance(), contentId) as T - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestGameCollectAdapter.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestGameCollectAdapter.kt deleted file mode 100644 index 6914a7b40b..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestGameCollectAdapter.kt +++ /dev/null @@ -1,42 +0,0 @@ -package com.gh.gamecenter.feedback.view.suggest - -import android.content.Context -import android.view.ViewGroup -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.feature.databinding.GameItemBinding -import com.gh.gamecenter.feature.entity.GameEntity -import com.gh.gamecenter.feature.game.GameItemViewHolder -import com.gh.gamecenter.feature.provider.IGameDetailProvider -import com.gh.gamecenter.floatingwindow.R -import com.lightgame.adapter.BaseRecyclerAdapter - -class SuggestGameCollectAdapter( - context: Context, - private val mGameList: List -) : BaseRecyclerAdapter(context) { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameItemViewHolder { - return GameItemViewHolder(GameItemBinding.bind(mLayoutInflater.inflate(R.layout.game_item, parent, false))) - } - - override fun getItemCount(): Int { - return mGameList.size - } - - override fun onBindViewHolder(holder: GameItemViewHolder, position: Int) { - holder.itemView.setPadding(8F.dip2px(), 4F.dip2px(), 12F.dip2px(), 4F.dip2px()) - - val gameEntity = mGameList[position] - holder.bindGameItem(gameEntity) - holder.initServerType(gameEntity) - holder.binding.downloadBtn.text = "查看" - holder.binding.root.setOnClickListener { - val provider = ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation() as? IGameDetailProvider - provider?.startGameDetailActivity(mContext, gameEntity, "(意见反馈-收录提示)") - MtaHelper.onEvent("意见反馈", "意见反馈-游戏收录-查看游戏", gameEntity.name) - } - } -} \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestSelectFragment.java b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestSelectFragment.java deleted file mode 100644 index 850c797c2f..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestSelectFragment.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gh.gamecenter.feedback.view.suggest; - -import android.os.Bundle; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.alibaba.android.arouter.launcher.ARouter; -import com.gh.gamecenter.common.base.fragment.BaseFragment; -import com.gh.gamecenter.common.constant.CommonConsts; -import com.gh.gamecenter.common.constant.RouteConsts; -import com.gh.gamecenter.common.entity.SuggestType; -import com.gh.gamecenter.common.utils.ShareUtils; -import com.gh.gamecenter.core.provider.IConfigProvider; -import com.gh.gamecenter.core.provider.IDirectProvider; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider; -import com.gh.gamecenter.floatingwindow.R; -import com.gh.gamecenter.floatingwindow.databinding.FragmentSuggestSelectBinding; - -/** - * Created by khy on 2017/3/31. - */ -public class SuggestSelectFragment extends BaseFragment { - - private FragmentSuggestSelectBinding mBinding; - private IConfigProvider mConfigProvider; - - @Override - protected int getLayoutId() { - return 0; - } - - @Override - protected View getInflatedLayout() { - mBinding = FragmentSuggestSelectBinding.inflate(getLayoutInflater()); - return mBinding.getRoot(); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mConfigProvider = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation(); - final String qQun = mConfigProvider.getQQun(); - if (!TextUtils.isEmpty(qQun)) { - mBinding.suggestQqun.setText(qQun); - } - mBinding.suggestType1.setOnClickListener(this::OnClick); - mBinding.suggestType2.setOnClickListener(this::OnClick); - mBinding.suggestType3.setOnClickListener(this::OnClick); - mBinding.suggestType4.setOnClickListener(this::OnClick); - mBinding.suggestType5.setOnClickListener(this::OnClick); - mBinding.suggestType6.setOnClickListener(this::OnClick); - mBinding.suggestType7.setOnClickListener(this::OnClick); - mBinding.suggestQqunRl.setOnClickListener(this::OnClick); - } - - public void OnClick(View view) { - IDirectProvider directProvider = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); - SuggestType type = SuggestType.normal; - int id = view.getId(); - if (id == R.id.suggest_type1) { - type = SuggestType.normal; - MtaHelper.onEvent("意见反馈", "意见反馈", "普通反馈"); - } else if (id == R.id.suggest_type2) { - type = SuggestType.crash; - MtaHelper.onEvent("意见反馈", "意见反馈", "发生闪退"); - } else if (id == R.id.suggest_type3) { - type = SuggestType.gameQuestion; - MtaHelper.onEvent("意见反馈", "意见反馈", "游戏问题"); - } else if (id == R.id.suggest_type4) { - type = SuggestType.gameCollect; - MtaHelper.onEvent("意见反馈", "意见反馈", "游戏收录"); - } else if (id == R.id.suggest_type5) { - type = SuggestType.functionSuggest; - MtaHelper.onEvent("意见反馈", "意见反馈", "功能收录"); - } else if (id == R.id.suggest_type6) { - type = SuggestType.articleCollect; - MtaHelper.onEvent("意见反馈", "意见反馈", "文章投稿"); - } else if (id == R.id.suggest_type7) { - type = SuggestType.copyright; - MtaHelper.onEvent("意见反馈", "意见反馈", "版权申诉"); - } else if (id == R.id.suggest_qqun_rl) { - MtaHelper.onEvent("意见反馈", "意见反馈", "点击QQ群号"); - if (ShareUtils.isQQClientAvailable(requireContext())) { - String groupNumber = "vd754P2_uNUJqDcgX4V-pyXEGZZVH0DE"; - if (!TextUtils.isEmpty(mConfigProvider.getQQunKey())) { - groupNumber = mConfigProvider.getQQunKey(); - } - directProvider.directToQqGroup(requireContext(), groupNumber); // Q群:367541038 KEY - } else { - toast("请先安装QQ"); - } - return; - } - ILinkDirectUtilsProvider directUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); - directUtils.directToSuggestion(requireContext(), type, CommonConsts.SUGGEST_TYPE_REQUEST); - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - if (mBinding != null) { - mBinding.getRoot().setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background_white)); - mBinding.divider1.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider2.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider3.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider4.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider5.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider6.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.divider7.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.background)); - mBinding.suggestQunDesTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_subtitleDesc)); - mBinding.suggestQqun.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv1.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv2.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv3.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv4.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv5.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv6.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestTitleTv7.setTextColor(ContextCompat.getColor(requireContext(), R.color.theme_font)); - mBinding.suggestDesTv1.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv2.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv3.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv4.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv5.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv6.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - mBinding.suggestDesTv7.setTextColor(ContextCompat.getColor(requireContext(), R.color.content)); - } - } -} diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestionActivity.java b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestionActivity.java deleted file mode 100644 index a73b7ff4e1..0000000000 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/view/suggest/SuggestionActivity.java +++ /dev/null @@ -1,1500 +0,0 @@ -package com.gh.gamecenter.feedback.view.suggest; - -import android.app.Dialog; -import android.content.Context; -import android.content.Intent; -import android.content.SharedPreferences; -import android.database.Cursor; -import android.graphics.Paint; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.provider.MediaStore; -import android.text.Html; -import android.text.InputFilter; -import android.text.TextUtils; -import android.view.View; -import android.view.Window; -import android.widget.CheckedTextView; -import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.RadioGroup; -import android.widget.ScrollView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.alibaba.android.arouter.facade.annotation.Route; -import com.alibaba.android.arouter.launcher.ARouter; -import com.gh.gamecenter.common.base.TrackableDialog; -import com.gh.gamecenter.common.base.activity.ToolBarActivity; -import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment; -import com.gh.gamecenter.common.callback.OnListClickListener; -import com.gh.gamecenter.common.callback.OnRequestCallBackListener; -import com.gh.gamecenter.common.constant.CommonConsts; -import com.gh.gamecenter.common.constant.Config; -import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.constant.RouteConsts; -import com.gh.gamecenter.common.entity.ErrorEntity; -import com.gh.gamecenter.common.entity.NotificationUgc; -import com.gh.gamecenter.common.entity.SimpleGameEntity; -import com.gh.gamecenter.common.entity.SuggestType; -import com.gh.gamecenter.common.exposure.meta.MetaUtil; -import com.gh.gamecenter.common.retrofit.Response; -import com.gh.gamecenter.common.utils.DialogHelper; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.common.utils.ImageUtils; -import com.gh.gamecenter.common.utils.NetworkUtils; -import com.gh.gamecenter.common.utils.NotificationHelper; -import com.gh.gamecenter.common.utils.TextHelper; -import com.gh.gamecenter.common.utils.UploadImageUtils; -import com.gh.gamecenter.common.view.FixLinearLayoutManager; -import com.gh.gamecenter.common.view.choosepic.ChoosePicAdapter; -import com.gh.gamecenter.core.AppExecutor; -import com.gh.gamecenter.core.provider.IAppProvider; -import com.gh.gamecenter.core.provider.ICheckLoginProvider; -import com.gh.gamecenter.core.provider.IPackageUtilsProvider; -import com.gh.gamecenter.core.provider.IWebProvider; -import com.gh.gamecenter.core.utils.DisplayUtils; -import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.core.utils.TimeUtils; -import com.gh.gamecenter.core.utils.ToastUtils; -import com.gh.gamecenter.core.utils.UrlFilterUtils; -import com.gh.gamecenter.feature.entity.GameEntity; -import com.gh.gamecenter.feature.entity.InstallGameEntity; -import com.gh.gamecenter.feature.entity.SettingsEntity; -import com.gh.gamecenter.feature.game.SelectGameAdapter; -import com.gh.gamecenter.feature.provider.IAdHelperProvider; -import com.gh.gamecenter.feature.provider.IGameDetailProvider; -import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider; -import com.gh.gamecenter.feature.provider.IRegionSettingHelperProvider; -import com.gh.gamecenter.feature.utils.ApkActiveUtils; -import com.gh.gamecenter.feedback.retrofit.RetrofitManager; -import com.gh.gamecenter.floatingwindow.R; -import com.gh.gamecenter.floatingwindow.databinding.ActivitySuggestBinding; -import com.gh.gamecenter.login.entity.UserInfoEntity; -import com.gh.gamecenter.login.user.UserManager; -import com.lightgame.utils.Util_System_ClipboardManager; -import com.lightgame.utils.Util_System_Keyboard; -import com.lightgame.utils.Utils; -import com.lightgame.view.CheckableImageView; -import com.walkud.rom.checker.RomIdentifier; - -import org.jetbrains.annotations.NotNull; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.functions.Function; -import io.reactivex.schedulers.Schedulers; -import kotlin.collections.CollectionsKt; -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.HttpException; - -/** - * Created by khy on 2017/3/31. - */ -@Route(path = RouteConsts.activity.suggestionActivity) -public class SuggestionActivity extends ToolBarActivity implements OnRequestCallBackListener, OnListClickListener, View.OnClickListener { - - EditText mSuggestContentEt; - RecyclerView mSuggestPicRv; - EditText mSuggestEmailEt; - TextView mSuggestPostBtn; - View suggestPostLl; - TextView mSuggestSelectGame; - TextView mSuggestGameName; - View mSuggestGameLl; - ScrollView mScrollView; - CheckedTextView mTypeAccelerate; - CheckedTextView mTypeStandalone; - CheckedTextView mTypeMaterial; - CheckedTextView mTypeOther; - LinearLayout mSuggestTypeContainer; - EditText mTypeOtherName; - TextView mGameNameTitle; - TextView mTypeName; - TextView mEmailName; - TextView mAdTv; - View mPlatformContainer; - TextView mPlatformEt; - TextView mPlatformTitle; - TextView mLinkEt; - View mLinkContainer; - View mContactMethodContainer; - View mPicContainer; - - View mCopyrightContainer; - RadioGroup mSuggestIdentityRg; - TextView mSuggestIdentityTv; - TextView mCredentialsCodeTv; - EditText mCredentialsCodeEt; - TextView mCredentialsPhotoTv; - RecyclerView mCredentialsPhotoRv; - TextView mAppNameTv; - EditText mAppNameEt; - TextView mInfringementAppScreenshotTv; - RecyclerView mInfringementAppScreenshotRv; - TextView mExplanationTv; - EditText mExplanationEt; - TextView mContactMethodTv; - EditText mContactMethodEt; - TextView mLookDetailDesTv; - View mCrashTypeContainer; - CheckableImageView mAppCrashTypeIv; - CheckableImageView mGameCrashTypeIv; - - public static final int MEDIA_STORE_REQUEST = 1; - public static final int MEDIA_STORE_CREDENTIALS_REQUEST = 2; - public static final int MEDIA_STORE_SCREENSHOT_REQUEST = 3; - public static final String FROM_RATING_KEY = "from_rating_key"; - - private ChoosePicAdapter mAdapter; - private ChoosePicAdapter mCredentialsAdapter; - private ChoosePicAdapter mScreenshotAdapter; - - private ArrayList mCredentialsPathList = new ArrayList<>(); - private ArrayList mScreenshotPathList = new ArrayList<>(); - - private Dialog selectGameDialog; - private WaitingDialogFragment postDialog; - - private SharedPreferences sp; - - @Nullable - private SimpleGameEntity mGameEntity; - - @Nullable - private InstallGameEntity mSelectGameEntity; - - private String[] mFunctionTypeName; - - private SuggestType mSuggestType; - - private String mGameInfo; - private String mHideHint; - private String mSuggestContent; - private String mSuggestHintType; - private String mDiagnosisResult; - private String mDiagnosisMessage; - - private boolean mAgreePostPic; - private boolean fromRating = false; - private boolean isQaFeedback = false; - private String qaContentId = ""; - - private int mFunctionType = -1; - - private String mCollectCancelPkgName = ""; - - private String mSuggestIdentity = "person";//版权方身份 - - public static void startSuggestionActivity(Context context, SuggestType suggestType, String suggestHintType, String content) { - startSuggestionActivity(context, suggestType, suggestHintType, content, false, ""); - } - - public static void startSuggestionActivity(Context context, SuggestType suggestType, String suggestHintType, String content, boolean isQaFeedback, String qaContentId) { - ILinkDirectUtilsProvider directUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); - directUtils.directToSuggestion(context, suggestType, suggestHintType, content, isQaFeedback, qaContentId); - } - - // 上传相关游戏ID - public static void startSuggestionActivity(Context context, - SuggestType suggestType, - String suggestHintType, - String content, - SimpleGameEntity game) { - startSuggestionActivity(context, suggestType, suggestHintType, content, game, ""); - } - - public static void startSuggestionActivity(Context context, - SuggestType suggestType, - String suggestHintType, - String content, - SimpleGameEntity game, - String gamePlatform) { - ILinkDirectUtilsProvider directUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); - directUtils.directToSuggestion(context, suggestType, suggestHintType, content, game, gamePlatform); - } - - public static void startSuggestionActivity(Context context, SuggestType suggestType, String hint) { - ILinkDirectUtilsProvider directUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); - directUtils.directToSuggestion(context, suggestType, hint); - } - - public static Intent getIntentFromNetworkDiagnosis(Context context, String diagnosis) { - Intent intent = new Intent(context, SuggestionActivity.class); - intent.putExtra(EntranceConsts.KEY_SUGGESTTYPE, SuggestType.normal); - intent.putExtra(EntranceConsts.KEY_CONTENT, "网络诊断结果" + TimeUtils.getFormatTime(System.currentTimeMillis(), "yyyy.MM.dd")); - intent.putExtra(EntranceConsts.KEY_DIAGNOSIS, diagnosis); - return intent; - } - - public static Intent getIntent( - Context context, - SuggestType suggestType, - String hiddenHint, - String suggestHintType, - String content, - String platform, - SimpleGameEntity game, - boolean isQaFeedback, - String qaContentId, - boolean fromRatingKey, - String diagnosis - ) { - Intent intent = new Intent(context, SuggestionActivity.class); - if (!diagnosis.isEmpty()) { - intent.putExtra(EntranceConsts.KEY_SUGGESTTYPE, SuggestType.normal); - intent.putExtra(EntranceConsts.KEY_CONTENT, "网络诊断结果" + TimeUtils.getFormatTime(System.currentTimeMillis(), "yyyy.MM.dd")); - intent.putExtra(EntranceConsts.KEY_DIAGNOSIS, diagnosis); - } else { - intent.putExtra(EntranceConsts.KEY_SUGGESTTYPE, suggestType); - intent.putExtra(EntranceConsts.KEY_HIDE_SUGGEST_HINT, hiddenHint); - intent.putExtra(EntranceConsts.KEY_SUGGEST_HINT_TYPE, suggestHintType); - intent.putExtra(EntranceConsts.KEY_CONTENT, content); - intent.putExtra(FROM_RATING_KEY, fromRatingKey); - intent.putExtra(EntranceConsts.KEY_PLATFORM, platform); - intent.putExtra(SimpleGameEntity.class.getSimpleName(), game); - intent.putExtra(EntranceConsts.KEY_IS_QA_FEEDBACK, isQaFeedback); - intent.putExtra(EntranceConsts.KEY_QA_CONTENT_ID, qaContentId); - } - return intent; - } - - @Override - protected int getLayoutId() { - return R.layout.activity_suggest; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (data == null) return; - if (requestCode == MEDIA_STORE_REQUEST || requestCode == MEDIA_STORE_CREDENTIALS_REQUEST || requestCode == MEDIA_STORE_SCREENSHOT_REQUEST) { - Uri selectedImage = data.getData(); - if (selectedImage == null) { - return; - } - String[] filePathColumn = {MediaStore.Images.Media.DATA}; - - Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); - if (cursor == null || !cursor.moveToFirst()) { - return; - } - try { - int columnIndex = cursor.getColumnIndex(filePathColumn[0]); - String picturePath = cursor.getString(columnIndex); - cursor.close(); - - Utils.log("picturePath = " + picturePath); - - File file = new File(picturePath); - if (file.length() > ImageUtils.getUploadFileMaxSize()) { - long count = ImageUtils.getUploadFileMaxSize() / 1024 / 1024; - Utils.toast(this, getString(R.string.pic_max_hint, count)); - } else { - if (requestCode == MEDIA_STORE_REQUEST) { - mAdapter.addFileList(picturePath); - } else if (requestCode == MEDIA_STORE_CREDENTIALS_REQUEST) { - mCredentialsAdapter.addFileList(picturePath); - } else { - mScreenshotAdapter.addFileList(picturePath); - } - } - } catch (Exception e) { - Utils.toast(this, e.getMessage()); - } - } - } - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - initView(); - - Bundle extras = getIntent().getExtras(); - if (extras == null) return; - - Object suggestType = extras.get(EntranceConsts.KEY_SUGGESTTYPE); - if (suggestType instanceof SuggestType) { - mSuggestType = (SuggestType) suggestType; - } else { - mSuggestType = SuggestType.normal; - } - mSuggestContent = extras.getString(EntranceConsts.KEY_CONTENT); - mSuggestHintType = extras.getString(EntranceConsts.KEY_SUGGEST_HINT_TYPE); - mHideHint = extras.getString(EntranceConsts.KEY_HIDE_SUGGEST_HINT, ""); - String gamePlatform = extras.getString(EntranceConsts.KEY_PLATFORM, ""); - mFunctionTypeName = getResources().getStringArray(R.array.suggest_function_type); - mGameEntity = extras.getParcelable(SimpleGameEntity.class.getSimpleName()); - fromRating = extras.getBoolean(FROM_RATING_KEY, false); - isQaFeedback = extras.getBoolean(EntranceConsts.KEY_IS_QA_FEEDBACK, false); - qaContentId = extras.getString(EntranceConsts.KEY_QA_CONTENT_ID, ""); - mDiagnosisResult = extras.getString(EntranceConsts.KEY_DIAGNOSIS, ""); - if (!mDiagnosisResult.isEmpty()) { - mDiagnosisMessage = mSuggestContent; - } - - setNavigationTitle("意见反馈-" + mSuggestType.getType()); - IAdHelperProvider provider = (IAdHelperProvider) ARouter.getInstance().build(RouteConsts.provider.adHelper).navigation(); - SettingsEntity.AD ad = provider.getSuggestionFunctionAd(); - if (mSuggestType == SuggestType.functionSuggest && ad != null) { - mAdTv.setVisibility(View.VISIBLE); - mAdTv.setText(ad.getTitle()); - mAdTv.setOnClickListener(v -> { - MtaHelper.onEvent("广告位统计", "意见反馈_功能收录", ad.getTitle()); - ILinkDirectUtilsProvider directUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); - directUtils.directToLinkPage(this, - ad.toLinkEntity(), - "(意见反馈-功能收录-广告位)", - ""); - }); - } - - sp = PreferenceManager.getDefaultSharedPreferences(this); - - // 意见反馈上传图片列表 - mSuggestPicRv.setLayoutManager(new GridLayoutManager(this, 5) { - @Override - public boolean canScrollVertically() { - return false; - } - }); - mAdapter = new ChoosePicAdapter(this, this); - mSuggestPicRv.setAdapter(mAdapter); - - if (!TextUtils.isEmpty(mSuggestContent)) { - if (mSuggestType == SuggestType.gameQuestion - && ("game".equals(mSuggestHintType) || "welfare_game".equals(mSuggestHintType) || "online_game".equals(mSuggestHintType) || "local_game".equals(mSuggestHintType))) { - mSuggestContentEt.setText("问题反馈:"); - mSuggestSelectGame.setVisibility(View.GONE); - mSuggestGameName.setVisibility(View.VISIBLE); - mSuggestGameName.setText(mSuggestContent); - } else if (mSuggestType == SuggestType.gameQuestion && "notfound".equals(mSuggestHintType) && mGameEntity != null) { - mSuggestContentEt.setText(mSuggestContent); - mSuggestSelectGame.setVisibility(View.GONE); - mSuggestGameName.setVisibility(View.VISIBLE); - mSuggestGameName.setText(mGameEntity.getName()); - } else { - mSuggestContentEt.setText(mSuggestContent); - } - if (!TextUtils.isEmpty(gamePlatform)) { - mPlatformEt.setText(gamePlatform); - } - mSuggestContentEt.setSelection(mSuggestContentEt.getText().length()); - } - - initSuggest(mSuggestType); - - String suggestionType = sp.getString(CommonConsts.SUGGESTION_HINT_TYPE, null); - if (!TextUtils.isEmpty(mSuggestHintType) && !TextUtils.isEmpty(suggestionType)) { - SettingsEntity.Suggestion typeEntity = GsonUtils.fromJson(suggestionType, SettingsEntity.Suggestion.class); - if (typeEntity != null) { - switch (mSuggestHintType) { - case EntranceConsts.KEY_PLUGIN: - List plugin = typeEntity.getPlugin(); - if (plugin != null && plugin.size() > 0) { - showHintDialog(plugin); - } - break; - case "local_game": - List localGameList = typeEntity.getLocalGame(); - if (localGameList != null && localGameList.size() > 0) { - showHintDialog(localGameList); - } - break; - case "welfare_game": - List welfareGame = typeEntity.getWelfareGame(); - if (welfareGame != null && welfareGame.size() > 0) { - showHintDialog(welfareGame); - } - break; - case "online_game": - List onlineGame = typeEntity.getOnlineGame(); - if (onlineGame != null && onlineGame.size() > 0) { - showHintDialog(onlineGame); - } - break; - case "gjlocal_game": - List internationalLocalGame = typeEntity.getInternationalLocalGame(); - if (internationalLocalGame != null && internationalLocalGame.size() > 0) { - showHintDialog(internationalLocalGame); - } - break; - case "gjonline_game": - List internationalOnlineGame = typeEntity.getInternationalOnlineGame(); - if (internationalOnlineGame != null && internationalOnlineGame.size() > 0) { - showHintDialog(internationalOnlineGame); - } - break; - case "libao": - List libao = typeEntity.getLibao(); - if (libao != null && libao.size() > 0) { - showHintDialog(libao); - } - break; - case "service": - List service = typeEntity.getService(); - if (service != null && service.size() > 0) { - showHintDialog(service); - } - break; - case "report": - List report = typeEntity.getReport(); - if (report != null && report.size() > 0) { - showHintDialog(report); - } - break; - - case "video": - List video = typeEntity.getVideo(); - if (video != null && video.size() > 0) { - showHintDialog(video); - } - break; - } - } - } - - UserInfoEntity userInfo = UserManager.getInstance().getUserInfoEntity(); - if (userInfo != null && !TextUtils.isEmpty(userInfo.getQq())) { - mSuggestEmailEt.setText(userInfo.getQq()); - } - - mTypeOtherName.setOnFocusChangeListener((v, hasFocus) -> { - if (hasFocus) { - mTypeAccelerate.setChecked(false); - mTypeMaterial.setChecked(false); - mTypeOther.setChecked(true); - mTypeStandalone.setChecked(false); - mFunctionType = 3; - } - }); - - if (mGameEntity != null && fromRating) { - mGameInfo = mGameEntity.getName(); - mSuggestGameName.setText(mGameEntity.getName()); - mSuggestSelectGame.setVisibility(View.GONE); - mSuggestGameName.setVisibility(View.VISIBLE); - mSuggestGameLl.setEnabled(false); - } - mSuggestContentEt.setFilters(new InputFilter[]{TextHelper.getFilter(256, "最多输入256个字")}); - mSuggestEmailEt.setFilters(new InputFilter[]{TextHelper.getFilter(64, "最多输入64个字")}); - mTypeOtherName.setFilters(new InputFilter[]{TextHelper.getFilter(30, " 最多输入30个字")}); - Util_System_Keyboard.showSoftKeyboard(this, mSuggestContentEt); - if (mSuggestType != SuggestType.copyright) { - mSuggestContentEt.setFocusable(true); - mSuggestContentEt.setFocusableInTouchMode(true); - mSuggestContentEt.requestFocus(); - } else { - mCredentialsAdapter = new ChoosePicAdapter(this, 5, new OnListClickListener() { - @Override - public void onListClick(View view, int position, T data) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); - startActivityForResult(intent, MEDIA_STORE_CREDENTIALS_REQUEST); - } - }, null); - mCredentialsAdapter.setPicItem(R.layout.game_upload_pic_item); - mCredentialsAdapter.setSuggestAddPicIcon(R.drawable.icon_pic_add); - mCredentialsPhotoRv.setLayoutManager(new GridLayoutManager(this, 5) { - @Override - public boolean canScrollVertically() { - return false; - } - }); - mCredentialsPhotoRv.setAdapter(mCredentialsAdapter); - - mScreenshotAdapter = new ChoosePicAdapter(this, 5, new OnListClickListener() { - @Override - public void onListClick(View view, int position, T data) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); - startActivityForResult(intent, MEDIA_STORE_SCREENSHOT_REQUEST); - } - }, null); - mScreenshotAdapter.setPicItem(R.layout.game_upload_pic_item); - mScreenshotAdapter.setSuggestAddPicIcon(R.drawable.icon_pic_add); - mInfringementAppScreenshotRv.setLayoutManager(new GridLayoutManager(this, 5) { - @Override - public boolean canScrollVertically() { - return false; - } - }); - mInfringementAppScreenshotRv.setAdapter(mScreenshotAdapter); - - mSuggestIdentityRg.setOnCheckedChangeListener((group, checkedId) -> { - if (checkedId == R.id.suggestPersonalRb) { - mSuggestIdentity = "person"; - mCredentialsCodeEt.setHint("请填写身份证号或护照号"); - mCredentialsPhotoTv.setText(Html.fromHtml(getString(R.string.suggestion_credentials_pic))); - } else if (checkedId == R.id.suggestCompanyRb) { - mSuggestIdentity = "company"; - mCredentialsCodeEt.setHint("请填写公司营业执照或组织代码等"); - mCredentialsPhotoTv.setText(Html.fromHtml(getString(R.string.suggestion_company_pic))); - } - }); - } - } - - private void initView() { - mSuggestContentEt = findViewById(R.id.suggest_content_et); - mSuggestPicRv = findViewById(R.id.suggest_pic_rv); - mSuggestEmailEt = findViewById(R.id.suggest_email_et); - mSuggestPostBtn = findViewById(R.id.suggest_post_btn); - suggestPostLl = findViewById(R.id.suggest_post_ll); - mSuggestSelectGame = findViewById(R.id.suggest_game_select); - mSuggestGameName = findViewById(R.id.suggest_game_name); - mSuggestGameLl = findViewById(R.id.suggest_game_container); - mScrollView = findViewById(R.id.suggest_scrollview); - mTypeAccelerate = findViewById(R.id.type_accelerate); - mTypeStandalone = findViewById(R.id.type_standalone); - mTypeMaterial = findViewById(R.id.type_material); - mTypeOther = findViewById(R.id.type_other); - mSuggestTypeContainer = findViewById(R.id.suggest_type_container); - mTypeOtherName = findViewById(R.id.type_other_name); - mGameNameTitle = findViewById(R.id.suggest_game_name_title); - mTypeName = findViewById(R.id.suggest_type_name); - mEmailName = findViewById(R.id.suggest_email_name); - mAdTv = findViewById(R.id.tv_ad); - mPlatformContainer = findViewById(R.id.suggest_platform_container); - mPlatformEt = findViewById(R.id.suggest_platform_et); - mPlatformTitle = findViewById(R.id.suggest_platform_title); - mLinkEt = findViewById(R.id.suggest_link_et); - mLinkContainer = findViewById(R.id.suggest_link_container); - mContactMethodContainer = findViewById(R.id.contactMethodContainer); - mPicContainer = findViewById(R.id.picContainer); - - mCopyrightContainer = findViewById(R.id.copyrightContainer); - mSuggestIdentityRg = findViewById(R.id.suggestIdentityRg); - mSuggestIdentityTv = findViewById(R.id.suggestIdentityTv); - mCredentialsCodeTv = findViewById(R.id.credentialsCodeTv); - mCredentialsCodeEt = findViewById(R.id.credentialsCodeEt); - mCredentialsPhotoTv = findViewById(R.id.credentialsPhotoTv); - mCredentialsPhotoRv = findViewById(R.id.credentialsPhotoRv); - mAppNameTv = findViewById(R.id.appNameTv); - mAppNameEt = findViewById(R.id.appNameEt); - mInfringementAppScreenshotTv = findViewById(R.id.infringementAppScreenshotTv); - mInfringementAppScreenshotRv = findViewById(R.id.infringementAppScreenshotRv); - mExplanationTv = findViewById(R.id.explanationTv); - mExplanationEt = findViewById(R.id.explanationEt); - mContactMethodTv = findViewById(R.id.contactMethodTv); - mContactMethodEt = findViewById(R.id.contactMethodEt); - mLookDetailDesTv = findViewById(R.id.lookDetailDesTv); - mCrashTypeContainer = findViewById(R.id.suggest_crash_type_container); - mAppCrashTypeIv = findViewById(R.id.appCrashTypeIv); - mGameCrashTypeIv = findViewById(R.id.gameCrashTypeIv); - - ArrayList clickableViewList = CollectionsKt.arrayListOf( - mSuggestPostBtn, - mSuggestGameLl, - mTypeAccelerate, - mTypeMaterial, - mTypeOther, - mTypeStandalone, - mLookDetailDesTv, - mAppCrashTypeIv, - mGameCrashTypeIv - ); - for (View view : clickableViewList) { - view.setOnClickListener(this); - } - } - - private void initSuggest(SuggestType type) { - if (type == SuggestType.normal) { - mSuggestContentEt.setHint("请详细描述你遇到的问题... \n ↓↓你还可以上传截图"); - mSuggestTypeContainer.setVisibility(View.GONE); - mSuggestGameLl.setVisibility(View.GONE); - mCopyrightContainer.setVisibility(View.GONE); - } else if (type == SuggestType.crash) { - mSuggestContentEt.setHint("请详细描述闪退之前你所进行的操作... \n ↓↓你还可以上传截图"); - mSuggestTypeContainer.setVisibility(View.GONE); - mSuggestGameLl.setVisibility(View.GONE); - mCopyrightContainer.setVisibility(View.GONE); - mCrashTypeContainer.setVisibility(View.VISIBLE); - // 通过提示弹窗点击进入的意见反馈-发生闪退,[闪退类型]需要自动选择App闪退 - if (mHideHint.equals("APP闪退:")) { - mAppCrashTypeIv.setChecked(true); - } - } else if (type == SuggestType.gameQuestion) { - mSuggestTypeContainer.setVisibility(View.GONE); - mCopyrightContainer.setVisibility(View.GONE); - if (!EntranceConsts.KEY_PLUGIN.equals(mSuggestHintType)) { - mSuggestContentEt.setHint("请描述具体遇到的问题... \n ↓↓你还可以上传截图"); - mSuggestGameLl.setVisibility(View.VISIBLE); - mPlatformContainer.setVisibility(View.VISIBLE); - mGameNameTitle.setText(Html.fromHtml(getString(R.string.suggestion_game_name))); - mPlatformTitle.setText(Html.fromHtml(getString(R.string.suggestion_platform_name))); - } else { - mSuggestContentEt.setHint("请写上游戏名字,以及具体遇到的问题... \n ↓↓你还可以上传截图"); - mSuggestGameLl.setVisibility(View.GONE); - mPlatformContainer.setVisibility(View.GONE); - } - } else if (type == SuggestType.gameCollect) { - mLinkContainer.setVisibility(View.VISIBLE); - mSuggestGameLl.setVisibility(View.VISIBLE); - mGameNameTitle.setText(Html.fromHtml(getString(R.string.suggestion_game_name))); - mSuggestTypeContainer.setVisibility(View.GONE); - mSuggestContentEt.setHint("请在上方选择或填写游戏名↑↑ \n 在此处可输入补充信息(例如游戏的平台版本等)"); - mEmailName.setText(Html.fromHtml(getString(R.string.suggestion_contact))); - mCopyrightContainer.setVisibility(View.GONE); - } else if (type == SuggestType.functionSuggest) { - mSuggestContentEt.setHint("请详细描述你的建议... \n ↓↓你还可以上传截图"); - mSuggestTypeContainer.setVisibility(View.VISIBLE); - mSuggestGameLl.setVisibility(View.VISIBLE); - mGameNameTitle.setText(Html.fromHtml(getString(R.string.suggestion_game_name))); - mTypeName.setText(Html.fromHtml(getString(R.string.suggestion_function))); - mEmailName.setText(Html.fromHtml(getString(R.string.suggestion_contact))); - mCopyrightContainer.setVisibility(View.GONE); - } else if (type == SuggestType.articleCollect) { - mSuggestContentEt.setHint("简单介绍帖子内容,别忘了填写帖子链接哦 \n ↓↓你还可以上传截图"); - mSuggestTypeContainer.setVisibility(View.GONE); - mSuggestGameLl.setVisibility(View.GONE); - mCopyrightContainer.setVisibility(View.GONE); - } else if (type == SuggestType.copyright) { - mSuggestGameLl.setVisibility(View.GONE); - mSuggestTypeContainer.setVisibility(View.GONE); - mPlatformContainer.setVisibility(View.GONE); - mLinkContainer.setVisibility(View.GONE); - mContactMethodContainer.setVisibility(View.GONE); - mPicContainer.setVisibility(View.GONE); - mCopyrightContainer.setVisibility(View.VISIBLE); - mCredentialsCodeEt.requestFocus(); - mSuggestIdentityTv.setText(Html.fromHtml(getString(R.string.suggestion_identity))); - mCredentialsCodeTv.setText(Html.fromHtml(getString(R.string.suggestion_credentials_code))); - mCredentialsPhotoTv.setText(Html.fromHtml(getString(R.string.suggestion_credentials_pic))); - mAppNameTv.setText(Html.fromHtml(getString(R.string.suggestion_app_name))); - mInfringementAppScreenshotTv.setText(Html.fromHtml(getString(R.string.suggestion_infringement))); - mExplanationTv.setText(Html.fromHtml(getString(R.string.suggestion_explanation))); - mContactMethodTv.setText(Html.fromHtml(getString(R.string.suggestion_contact_method))); - mLookDetailDesTv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); - } - } - - private void showHintDialog(List dialogType) { - final Dialog dialog = new Dialog(SuggestionActivity.this); - - LinearLayout container = new LinearLayout(SuggestionActivity.this); - container.setOrientation(LinearLayout.VERTICAL); - container.setBackgroundColor(ContextCompat.getColor(this, R.color.background_white)); - container.setPadding(0, DisplayUtils.dip2px(SuggestionActivity.this, 12), 0, DisplayUtils.dip2px(SuggestionActivity.this, 12)); - - for (String s : dialogType) { - final TextView reportTv = new TextView(SuggestionActivity.this); - reportTv.setText(s); - reportTv.setTextSize(17); - reportTv.setTextColor(ContextCompat.getColor(this, R.color.text_title)); - reportTv.setBackgroundResource(R.drawable.textview_white_style); - int widthPixels = getResources().getDisplayMetrics().widthPixels; - reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10, - LinearLayout.LayoutParams.WRAP_CONTENT)); - reportTv.setPadding( - DisplayUtils.dip2px(SuggestionActivity.this, 20), - DisplayUtils.dip2px(SuggestionActivity.this, 12), - DisplayUtils.dip2px(SuggestionActivity.this, 20), - DisplayUtils.dip2px(SuggestionActivity.this, 12)); - container.addView(reportTv); - - reportTv.setOnClickListener(v -> { - dialog.cancel(); - mSuggestContentEt.setText((mSuggestContentEt.getText().toString() + reportTv.getText().toString())); - mSuggestContentEt.setSelection(mSuggestContentEt.getText().length()); - }); - } - - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(container); - dialog.show(); - } - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - - autoFilledContentIfAvailable(); - } - - private void autoFilledContentIfAvailable() { - if (!TextUtils.isEmpty(mSuggestContentEt.getText())) { - return; - } - - String clipboardText = Util_System_ClipboardManager.getText(this); - if (clipboardText != null - && clipboardText.contains("游戏名") - && clipboardText.contains("游戏ID") - && clipboardText.contains("游戏包MD5")) { - mSuggestContentEt.setText(clipboardText + "\n"); - mSuggestContentEt.post(() -> { - mSuggestContentEt.setSelection(mSuggestContentEt.getText().length()); - }); - } - } - - @Override - public void loadDone() { - // do nothing - } - - @Override - public void loadDone(Object obj) { - if (selectGameDialog != null) { - selectGameDialog.cancel(); - } - - mSuggestSelectGame.setVisibility(View.GONE); - mSuggestGameName.setVisibility(View.VISIBLE); - if (obj instanceof InstallGameEntity) { - InstallGameEntity entity = (InstallGameEntity) obj; - mGameInfo = entity.getGameName() + "(" + entity.getPackageName() + ", " + entity.getGameVersion() + ")"; - mSuggestGameName.setText(entity.getGameName()); - - mSelectGameEntity = entity; - } else { - String name = obj.toString().replace(" ", ""); - mGameInfo = name; - mSuggestGameName.setText(name); - } - } - - @Override - public void loadError() { - // do nothing - } - - @Override - public void loadEmpty() { - // do nothing - } - - @Override - public void loadNotFound() { - // do nothing - } - - @Override - public void onClick(View view) { - int id = view.getId(); - if (id == R.id.suggest_post_btn) { - clickPostBtn(); - } else if (id == R.id.suggest_game_container) { - showSelectDialog(); - } else if (id == R.id.type_accelerate) { - mTypeAccelerate.setChecked(true); - mTypeMaterial.setChecked(false); - mTypeOther.setChecked(false); - mTypeStandalone.setChecked(false); - mFunctionType = 0; - mSuggestContentEt.requestFocus(); - } else if (id == R.id.type_standalone) { - mTypeAccelerate.setChecked(false); - mTypeMaterial.setChecked(false); - mTypeOther.setChecked(false); - mTypeStandalone.setChecked(true); - mFunctionType = 1; - mSuggestContentEt.requestFocus(); - } else if (id == R.id.type_material) { - mTypeAccelerate.setChecked(false); - mTypeMaterial.setChecked(true); - mTypeOther.setChecked(false); - mTypeStandalone.setChecked(false); - mFunctionType = 2; - mSuggestContentEt.requestFocus(); - } else if (id == R.id.type_other) { - mTypeAccelerate.setChecked(false); - mTypeMaterial.setChecked(false); - mTypeOther.setChecked(true); - mTypeStandalone.setChecked(false); - mFunctionType = 3; - mTypeOtherName.requestFocus(); - } else if (id == R.id.lookDetailDesTv) { - IWebProvider webActivity = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); - startActivity(webActivity.getWebIntent(this, getString(R.string.copyright_title), getString(R.string.copyright_rules_url))); - } else if (id == R.id.appCrashTypeIv) { - if (!mAppCrashTypeIv.isChecked()) { - mAppCrashTypeIv.setChecked(!mAppCrashTypeIv.isChecked()); - mGameCrashTypeIv.setChecked(!mAppCrashTypeIv.isChecked()); - } - } else if (id == R.id.gameCrashTypeIv) { - if (!mGameCrashTypeIv.isChecked()) { - mGameCrashTypeIv.setChecked(!mGameCrashTypeIv.isChecked()); - mAppCrashTypeIv.setChecked(!mGameCrashTypeIv.isChecked()); - } - } - } - - private void clickPostBtn() { - if (mSuggestType != SuggestType.copyright) { - postNormalSuggestion(); - } else { - postCopyrightSuggestion(); - } - } - - private void postNormalSuggestion() { - boolean isStatusNotPass = !isEnterContent() - || !isSelectCrashType() - || !isSelectGame() - || !isSelectFunctionType() - || !isEnterPlatform(); - if (isStatusNotPass) return; - - String email = mSuggestEmailEt.getText().toString().trim(); - // 闪退反馈不需要反馈(由闪退提示框跳转) - if (mSuggestType == SuggestType.crash && !mHideHint.isEmpty()) { - readPostSuggestion(email); - } else { - ICheckLoginProvider checkLoginConfig = (ICheckLoginProvider) ARouter.getInstance().build(RouteConsts.provider.checkLogin).navigation(); - checkLoginConfig.checkLogin(this, getPostEntrance(), () -> { - readPostSuggestion(email); - return null; - }); - } - } - - private void postCopyrightSuggestion() { - ICheckLoginProvider checkLoginConfig = (ICheckLoginProvider) ARouter.getInstance().build(RouteConsts.provider.checkLogin).navigation(); - checkLoginConfig.checkLogin(this, "我的光环-反馈-[提交]", () -> { - if (checkCopyrightData()) { - postDialog = WaitingDialogFragment.newInstance(getString(R.string.dialog_feedback_doing)); - postDialog.show(getSupportFragmentManager(), null); - postCopyrightPic(true); - } - return null; - }); - } - - private boolean isEnterContent() { - if (TextUtils.isEmpty(mSuggestContentEt.getText().toString()) && - mSuggestType != SuggestType.functionSuggest && - mSuggestType != SuggestType.gameCollect) { - toast("请输入反馈内容"); - return false; - } - return true; - } - - private boolean isSelectCrashType() { - if (mSuggestType == SuggestType.crash - && !mAppCrashTypeIv.isChecked() - && !mGameCrashTypeIv.isChecked()) { - toast("请选择闪退类型"); - return false; - } - return true; - } - - private boolean isSelectGame() { - if (mSuggestGameLl.getVisibility() == View.VISIBLE && - TextUtils.isEmpty(mSuggestGameName.getText().toString())) { - toast("请选择游戏"); - return false; - } - return true; - } - - private boolean isSelectFunctionType() { - if ((mSuggestTypeContainer.getVisibility() == View.VISIBLE) && - (mFunctionType == -1 || (mFunctionType == 3 && TextUtils.isEmpty(mTypeOtherName.getText().toString().trim())))) { - toast("请选择功能需求"); - return false; - } - return true; - } - - private boolean isEnterPlatform() { - if (mPlatformContainer.getVisibility() == View.VISIBLE && - TextUtils.isEmpty(mPlatformEt.getText().toString())) { - toast("请填写游戏平台"); - return false; - } - return true; - } - - private String getPostEntrance() { - String entrance = "我的光环-反馈-[提交]"; - if (!TextUtils.isEmpty(mSuggestContent)) { - switch (mSuggestContent) { - case "问题投诉": - entrance = "问题详情-投诉-提交反馈"; - break; - case "回答投诉": - entrance = "回答详情-投诉-提交反馈"; - break; - case "文章投诉": - entrance = "社区文章详情-投诉-提交反馈"; - break; - } - } - return entrance; - } - - private boolean checkCopyrightData() { - if (TextUtils.isEmpty(mSuggestIdentity)) { - ToastUtils.showToast("请先选择版权方身份"); - return false; - } else { - if (TextUtils.isEmpty(mCredentialsCodeEt.getText().toString())) { - ToastUtils.showToast(mSuggestIdentity.equals("person") ? "请填写身份证号或护照号等" : "请填写公司营业执照或组织代码等"); - return false; - } - } - if (mCredentialsAdapter.getFileList().size() == 0) { - ToastUtils.showToast("请先添加版权证明文件"); - return false; - } - if (TextUtils.isEmpty(mAppNameEt.getText().toString())) { - ToastUtils.showToast("请先填写侵权的应用名字"); - return false; - } - if (mScreenshotAdapter.getFileList().size() == 0) { - ToastUtils.showToast("请先添加侵权应用截图"); - return false; - } - if (TextUtils.isEmpty(mExplanationEt.getText().toString())) { - ToastUtils.showToast("请先填写说明"); - return false; - } - if (TextUtils.isEmpty(mContactMethodEt.getText().toString())) { - ToastUtils.showToast("请先填写联系方式"); - return false; - } - return true; - } - - private void readPostSuggestion(String email) { - if (TextUtils.isEmpty(email)) { - if (mSuggestType == SuggestType.functionSuggest || mSuggestType == SuggestType.gameCollect) { - toast("请填写联系方式"); - } else { - showConfirmDialog(email); - } - } else if (mSuggestType == SuggestType.gameCollect && mSelectGameEntity != null) { - getGameCollectDialogData(); - } else { - postSuggestion(email); - } - } - - private void postSuggestion(String email) { - postDialog = WaitingDialogFragment.newInstance(getString(R.string.dialog_feedback_doing)); - postDialog.show(getSupportFragmentManager(), null); - - List fileList = mAdapter.getFileList(); - if (fileList != null && fileList.size() > 0) { - postPic(email); - } else { - initPostData(email, null); - } - } - - private void getGameCollectDialogData() { - postDialog = WaitingDialogFragment.newInstance("反馈中..."); - postDialog.show(getSupportFragmentManager(), null); - String filter = UrlFilterUtils.getFilterQuery("package", mSelectGameEntity.getPackageName(), "type", "suggestion_check"); - IRegionSettingHelperProvider regionSettingHelperProvider = (IRegionSettingHelperProvider) ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper).navigation(); - RetrofitManager.Companion.getInstance() - .getApi() - .getSuggestGameCollectHintData(filter) - .map((Function, List>) regionSettingHelperProvider::filterGame) - .map(ApkActiveUtils.filterMapperList) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response>() { - @Override - public void onResponse(@Nullable List response) { - MtaHelper.onEvent("意见反馈", "意见反馈-游戏收录弹窗", "出现提示弹窗"); - - for (GameEntity gameEntity : response) { - ArrayList tagStyle = gameEntity.getTag(); - for (int i = 0; i < tagStyle.size(); i++) { - if (i >= 2) { - tagStyle.remove(i); - i--; - } - } - } - showGameCollectDialog(response); - postDialog.dismiss(); - } - - @Override - public void onFailure(@Nullable HttpException e) { - postDialog.dismiss(); - postSuggestion(mSuggestEmailEt.getText().toString().trim()); - } - }); - } - - private void showGameCollectDialog(List gameList) { - View view = View.inflate(this, R.layout.dialog_game_collect, null); - View back = view.findViewById(R.id.back); - View forcePost = view.findViewById(R.id.force_post); - RecyclerView recyclerView = view.findViewById(R.id.recycler_view); - recyclerView.setLayoutManager(new FixLinearLayoutManager(this)); - recyclerView.setAdapter(new SuggestGameCollectAdapter(this, gameList)); - - Dialog dialog = new TrackableDialog(this, - R.style.GhAlertDialog, - "意见反馈", - "意见反馈-游戏收录弹窗", - null, - "点击空白", - "点击手机返回键", false); - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(view); - dialog.show(); - - back.setOnClickListener(v -> { - MtaHelper.onEvent("意见反馈", "意见反馈-游戏收录弹窗", "点击返回"); - dialog.dismiss(); - - if (mSelectGameEntity != null) { - mCollectCancelPkgName = mSelectGameEntity.getPackageName(); - } - }); - forcePost.setOnClickListener(v -> { - MtaHelper.onEvent("意见反馈", "意见反馈-游戏收录弹窗", "点击不是我要的游戏,继续提交"); - dialog.dismiss(); - postSuggestion(mSuggestEmailEt.getText().toString().trim()); - }); - } - - // 弹出确认对话框 - private void showConfirmDialog(final String email) { - DialogHelper.showCenterWarningDialog(this, "温馨提示", "填写联系方式有助于我们更好地一对一解决您的问题,确定不填写吗?", - "直接提交", "我要填写", - () -> { - mSuggestEmailEt.requestFocus(); - mSuggestEmailEt.postDelayed(() -> Util_System_Keyboard.showSoftKeyboard(getApplicationContext(), mSuggestEmailEt), 300); - return null; - }, - () -> { - postSuggestion(email); - return null; - }); - } - - private void postPic(final String email) { - UploadImageUtils.INSTANCE.compressAndUploadImageList(UploadImageUtils.UploadType.suggestion - , mAdapter.getFileList(), false, new UploadImageUtils.OnUploadImageListListener() { - @Override - public void onCompressSuccess(@NotNull List imageUrls) { - - } - - @Override - public void onProgress(long total, long progress) { - int percent = (int) (100 * (progress / (float) total)); - if (percent >= 100) percent = 99; - if (postDialog != null) { - postDialog.uploadWaitingHint("图片上传中 " + percent + "%"); - } - } - - @Override - public void onSingleSuccess(@NotNull Map imageUrlMap) { - // do nothing - } - - @Override - public void onSuccess(@NotNull LinkedHashMap imageUrlMap, @NotNull Map errorMap) { - Utils.log("意见反馈:图片上传完成"); - final JSONArray picArray = new JSONArray(); - for (Map.Entry entry: imageUrlMap.entrySet()) { - picArray.put(entry.getValue()); - } - initPostData(email, picArray); - } - - @Override - public void onError(@NotNull Map errorMap) { - if (postDialog != null) { - postDialog.dismissAllowingStateLoss(); - } - Utils.toast(SuggestionActivity.this, "上传失败"); - Utils.log("意见反馈:图片上传失败"); - } - }); - } - - private void postCopyrightPic(boolean isCredentialsPic) { - UploadImageUtils.INSTANCE.uploadImageListOneByOne(UploadImageUtils.UploadType.suggestion, - isCredentialsPic ? mCredentialsAdapter.getFileList() : mScreenshotAdapter.getFileList(), - false, new UploadImageUtils.OnUploadImageListCountListener() { - @Override - public void onSuccess(@NotNull Map map) { - for (Map.Entry entry : map.entrySet()) { - if (isCredentialsPic) { - mCredentialsPathList.add(entry.getValue()); - } else { - mScreenshotPathList.add(entry.getValue()); - } - } - } - - @Override - public void onFinish() { - if (isCredentialsPic) { - postCopyrightPic(false); - } else { - initPostCopyRightData(); - } - } - - @Override - public void onError() { - if (postDialog != null) { - postDialog.dismissAllowingStateLoss(); - } - mCredentialsPathList.clear(); - mScreenshotPathList.clear(); - Utils.toast(SuggestionActivity.this, "上传失败"); - Utils.log("意见反馈:图片上传失败"); - } - }); - } - - private void initPostCopyRightData() { - IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); - - Map params = new HashMap<>(); - params.put("from", mContactMethodEt.getText().toString()); - params.put("ghversion", packageUtilsConfig.getGhVersionName()); - params.put("channel", appProvider.getChannel()); - params.put("type", Build.MODEL); - params.put("sdk", String.valueOf(Build.VERSION.SDK_INT)); - params.put("version", Build.VERSION.RELEASE); - params.put("source", getString(R.string.app_name)); - params.put("jnfj", MetaUtil.getBase64EncodedIMEI()); - params.put("manufacturer", Build.MANUFACTURER); - params.put("rom", RomIdentifier.getRom().name() + " " + RomIdentifier.getRom().getVersionName()); - - params.put("owner_type", mSuggestIdentity); - params.put("owner_card", mCredentialsCodeEt.getText().toString()); - params.put("certificates", mCredentialsPathList); - params.put("screenshots", mScreenshotPathList); - params.put("app_name", mAppNameEt.getText().toString()); - params.put("message", mExplanationEt.getText().toString()); - params.put("suggestion_type", "版权申诉"); - - sendSuggestion(new JSONObject(params)); -// if (CheckLoginUtils.isLogin()) { -// // 创建一条信息至七陌客服 -// String feedbackType = "意见反馈-" + mSuggestType.getType(); -// ImManager.sendFeedbackMessage(feedbackType + ": " + mExplanationEt.getText().toString()); -// } - } - - private void initPostData(String email, JSONArray picArray) { - IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); - - Map params = new HashMap<>(); - params.put("from", email); - params.put("ghversion", packageUtilsConfig.getGhVersionName()); - params.put("channel", appProvider.getChannel()); - params.put("type", Build.MODEL); - params.put("sdk", String.valueOf(Build.VERSION.SDK_INT)); - params.put("version", Build.VERSION.RELEASE); - params.put("source", getString(R.string.app_name)); - params.put("jnfj", MetaUtil.getBase64EncodedIMEI()); - params.put("manufacturer", Build.MANUFACTURER); - params.put("rom", RomIdentifier.getRom().name() + " " + RomIdentifier.getRom().getVersionName()); - params.put("link", mLinkEt.getText().toString()); - - if (fromRating) { - params.put("suggestion_type", mSuggestType.getType() + "(评论)"); - } else if (!mDiagnosisResult.isEmpty()) { - params.put("suggestion_type", "网络诊断"); - } else if (mSuggestType == SuggestType.crash) { - if (mAppCrashTypeIv.isChecked()) { - params.put("suggestion_type", "APP闪退"); - } else { - params.put("suggestion_type", "游戏闪退"); - } - } else if (isQaFeedback) { - params.put("suggestion_type", "QA反馈"); - } else { - params.put("suggestion_type", mSuggestType.getType()); - } - - if (mGameEntity != null) { - params.put("game_id", mGameEntity.getId()); - } - - String message; - String content = mSuggestContentEt.getText().toString().trim(); - if (mSuggestType == SuggestType.gameCollect) { - message = mGameInfo + "," + content; - } else if (mSuggestType == SuggestType.functionSuggest) { - String typeName; - if (mFunctionType == 3) { - typeName = "其他(" + mTypeOtherName.getText().toString().trim() + ")"; - } else { - typeName = mFunctionTypeName[mFunctionType]; - } - message = mGameInfo + "," + typeName + "," + content; - } else if (mSuggestType == SuggestType.gameQuestion) { - if (EntranceConsts.KEY_PLUGIN.equals(mSuggestHintType)) { - message = "【插件问题】" + content; - } else { - if (isQaFeedback && !qaContentId.isEmpty()) { - final String gameName = (String) appProvider.get(Constants.GAME_NAME, false); - if (gameName.isEmpty()) { - message = "【游戏问题】" + qaContentId + ";" + mSuggestGameName.getText() + "-" + mPlatformEt.getText() + "," + content; - } else { - //https://git.shanqu.cc/pm/halo/halo-app-issues/-/issues/1928 第4点 - message = "【来自:" + gameName + "-游戏问题】" + qaContentId + ";" + mSuggestGameName.getText() + "-" + mPlatformEt.getText() + "," + content; - } - } else { - message = mSuggestGameName.getText() + "-" + mPlatformEt.getText() + "," + content; - } - } - } else if (mSuggestType == SuggestType.normal && !mDiagnosisResult.isEmpty()) { - message = mDiagnosisMessage; - params.put("log", mDiagnosisResult); - } else if (mSuggestType == SuggestType.normal && isQaFeedback && !qaContentId.isEmpty()) { - final String gameName = (String) appProvider.get(Constants.GAME_NAME, false); - if (TextUtils.isEmpty(gameName)) { - message = "【普通问题】" + qaContentId + ";" + content; - } else { - //https://git.shanqu.cc/pm/halo/halo-app-issues/-/issues/1928 第4点 - message = "【来自:" + gameName + "-普通问题】" + qaContentId + ";" + content; - } - } else { - message = content; - if (mSuggestType == SuggestType.crash) { - params.put("log", Config.getExceptionMsg()); - Config.setExceptionMsg(null); - Config.updateContainsErrorMsg(false); - if (com.gh.gamecenter.common.BuildConfig.BUILD_TIME != 0) { - message = message + " [此闪退基于" + com.gh.gamecenter.common.BuildConfig.BUILD_TIME + "测试包]"; - } - } - } - message = mHideHint + message; - params.put("message", message); - - JSONObject jsonObject = new JSONObject(params); - - if (picArray != null && picArray.length() > 0) { - try { - jsonObject.put("pic", picArray); - } catch (JSONException e) { - e.printStackTrace(); - } - } - - sendSuggestion(jsonObject); - -// if (CheckLoginUtils.isLogin()) { -// // 创建一条信息至七陌客服 -// String feedbackType = "意见反馈-" + mSuggestType.getType(); -// ImManager.sendFeedbackMessage(feedbackType + ": " + message); -// } - } - - private void sendSuggestion(JSONObject jsonObject) { - - RequestBody body = RequestBody.create(MediaType.parse("application/json"), - jsonObject.toString()); - RetrofitManager.Companion.getInstance().getApi().postSuggestion(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Response() { - @Override - public void onResponse(ResponseBody response) { - if (postDialog != null) { - postDialog.dismissAllowingStateLoss(); - } - setResult(CommonConsts.SUGGEST_TYPE_REQUEST); - toast("感谢您的反馈!"); - finish(); - AppExecutor.getUiExecutor().executeWithDelay(() -> NotificationHelper.showNotificationHintDialog(NotificationUgc.FEEDBACK, null), 1000); - } - - @Override - public void onFailure(HttpException e) { - - if (postDialog != null) { - postDialog.dismissAllowingStateLoss(); - } - - try { - if (e != null && e.code() == 403) { - String string = e.response().errorBody().string(); - ErrorEntity error = GsonUtils.fromJson(string, ErrorEntity.class); - if (error.getCode() == 403052) { - DialogHelper.showCenterDialog(SuggestionActivity.this, "提醒", "你已经提交过相同的反馈了" - , "关闭提交", "返回修改", () -> { - setResult(CommonConsts.SUGGEST_TYPE_REQUEST); - finish(); - }, () -> { - }); - return; - } else if (error.getCode() == 403062) { - DialogHelper.showCenterDialog(SuggestionActivity.this, - "提示", "光环助手已收录游戏:" + error.getData().getGameName(), - "退出并查看游戏", "仍然提交", () -> { - IGameDetailProvider provider = (IGameDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation(); - provider.startGameDetailActivity(SuggestionActivity.this, - error.getData().getGameId(), "(意见反馈-游戏收录-存在相同游戏)", null); - finish(); - }, () -> { - try { - jsonObject.put("again", true); - } catch (Exception e1) { - e1.printStackTrace(); - } - postDialog = WaitingDialogFragment.newInstance(getString(R.string.dialog_feedback_doing)); - postDialog.show(getSupportFragmentManager(), null); - sendSuggestion(jsonObject); - }); - return; - } else if (error.getCode() == 403208) { - ToastUtils.showToast("您已经提交过反馈信息,我们将尽快处理~"); - finish(); - return; - } - } - } catch (Exception e1) { - e1.printStackTrace(); - } - - toast("提交失败,请检查网络状态"); - } - }); - - } - - private void showSelectDialog() { - View view = View.inflate(this, R.layout.dialog_suggest_game, null); - RecyclerView recyclerView = view.findViewById(R.id.dialog_suggest_game_rv); - View back = view.findViewById(R.id.dialog_suggest_game_back); - ProgressBar pb = view.findViewById(R.id.dialog_suggest_game_load); - View manualBtn = view.findViewById(R.id.dialog_suggest_manual); - View manualContainer = view.findViewById(R.id.dialog_suggest_manual_container); - View manualConfirm = view.findViewById(R.id.dialog_suggest_confirm); - EditText manualEdit = view.findViewById(R.id.dialog_suggest_edit); - manualEdit.setFilters(new InputFilter[]{TextHelper.getFilter(30, " 最多输入30个字")}); - recyclerView.setLayoutManager(new GridLayoutManager(this, 4)); - recyclerView.setAdapter(new SelectGameAdapter(this, this, pb)); - - selectGameDialog = new Dialog(this); - selectGameDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - selectGameDialog.setCanceledOnTouchOutside(false); - selectGameDialog.setContentView(view); - selectGameDialog.show(); - - back.setOnClickListener(v -> selectGameDialog.cancel()); - manualBtn.setOnClickListener(v -> { - manualContainer.setVisibility(View.VISIBLE); - manualBtn.setVisibility(View.GONE); - }); - manualConfirm.setOnClickListener(v -> { - String gameName = manualEdit.getText().toString(); - if (!TextUtils.isEmpty(gameName)) { - loadDone(gameName); - } else { - toast("请输入游戏名字"); - } - }); - } - - @Override - public void onListClick(View view, int position, T data) { - if (!mAgreePostPic && !NetworkUtils.isWifiConnected(this)) { - mAgreePostPic = true; - DialogHelper.showCenterDialog(this, - "警告", - "当前使用移动网络,上传图片会消耗手机流量", - "我知道了", "", () -> { - List picList = (List) data; - if (position == mAdapter.getItemCount() - 1 && picList.size() < 5) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); - startActivityForResult(intent, MEDIA_STORE_REQUEST); - } - }, () -> { - }); - return; - } - List picList = (List) data; - if (position == mAdapter.getItemCount() - 1 && picList.size() < 5) { - Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); - startActivityForResult(intent, MEDIA_STORE_REQUEST); - } - } - - @Override - protected boolean handleBackPressed() { - if (mSelectGameEntity != null && mCollectCancelPkgName.equals(mSelectGameEntity.getPackageName())) { - return super.handleBackPressed(); - } - - if (!TextUtils.isEmpty(mSuggestContentEt.getText().toString()) || - !TextUtils.isEmpty(mSuggestGameName.getText().toString()) || - !TextUtils.isEmpty(mLinkEt.getText().toString()) || - !TextUtils.isEmpty(mPlatformEt.getText().toString()) || - !TextUtils.isEmpty(mCredentialsCodeEt.getText().toString()) || - !TextUtils.isEmpty(mAppNameEt.getText().toString()) || - !TextUtils.isEmpty(mExplanationEt.getText().toString()) || - !TextUtils.isEmpty(mContactMethodEt.getText().toString()) || - (mCredentialsAdapter != null && mCredentialsAdapter.getFileList().size() > 0) || - (mScreenshotAdapter != null && mScreenshotAdapter.getFileList().size() > 0) || - (mAdapter != null && mAdapter.getFileList().size() > 0) || - mFunctionType != -1) { - DialogHelper.showCenterDialog(this, "提示", - "确定放弃反馈吗?", "继续反馈", "放弃", - () -> { - }, this::finish); - return true; - } - return super.handleBackPressed(); - } - - @Override - protected boolean isAutoResetViewBackgroundEnabled() { - return true; - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - ActivitySuggestBinding binding = ActivitySuggestBinding.bind(mContentView); - binding.divider1.setBackgroundColor(ContextCompat.getColor(this, R.color.cutting_line)); - binding.divider2.setBackgroundColor(ContextCompat.getColor(this, R.color.cutting_line)); - binding.divider3.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider4.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider5.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider6.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider7.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider8.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - binding.divider9.setBackgroundColor(ContextCompat.getColor(this, R.color.background)); - } -} diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/help_search_delete.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/help_search_delete.webp deleted file mode 100644 index 96b5303fc3..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/help_search_delete.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_selected.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_selected.webp deleted file mode 100644 index 6b428b5168..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_selected.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_unselect.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_unselect.webp deleted file mode 100644 index a98441d7b3..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/ic_type_unselect.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_article_collect.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_article_collect.webp deleted file mode 100644 index a5dcd959f6..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_article_collect.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_copyright.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_copyright.webp deleted file mode 100644 index f48942a879..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_copyright.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_crash.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_crash.webp deleted file mode 100644 index 2125c29a3f..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_crash.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_function_suggest.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_function_suggest.webp deleted file mode 100644 index 78fc836fb0..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_function_suggest.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_collect.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_collect.webp deleted file mode 100644 index 46eff57618..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_collect.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_question.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_question.webp deleted file mode 100644 index e551f94815..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_game_question.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_normal.webp b/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_normal.webp deleted file mode 100644 index 613d423629..0000000000 Binary files a/feature/floating-window/src/demo/res/drawable-xxhdpi/suggest_type_normal.webp and /dev/null differ diff --git a/feature/floating-window/src/demo/res/drawable/border_round_stroke_eee_4.xml b/feature/floating-window/src/demo/res/drawable/border_round_stroke_eee_4.xml deleted file mode 100644 index 935cbcac7a..0000000000 --- a/feature/floating-window/src/demo/res/drawable/border_round_stroke_eee_4.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_checked.xml b/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_checked.xml deleted file mode 100644 index 6cdc96e47d..0000000000 --- a/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_checked.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_normal.xml b/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_normal.xml deleted file mode 100644 index 35ca1ac3fe..0000000000 --- a/feature/floating-window/src/demo/res/drawable/qa_feedback_rg_button_normal.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/drawable/selector_ic_crash_type.xml b/feature/floating-window/src/demo/res/drawable/selector_ic_crash_type.xml deleted file mode 100644 index 33dfa3abef..0000000000 --- a/feature/floating-window/src/demo/res/drawable/selector_ic_crash_type.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/activity_help_and_feedback.xml b/feature/floating-window/src/demo/res/layout/activity_help_and_feedback.xml deleted file mode 100644 index eae7fd61a1..0000000000 --- a/feature/floating-window/src/demo/res/layout/activity_help_and_feedback.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/activity_suggest.xml b/feature/floating-window/src/demo/res/layout/activity_suggest.xml deleted file mode 100644 index 31130bb7db..0000000000 --- a/feature/floating-window/src/demo/res/layout/activity_suggest.xml +++ /dev/null @@ -1,761 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/dialog_game_collect.xml b/feature/floating-window/src/demo/res/layout/dialog_game_collect.xml deleted file mode 100644 index c0c8668256..0000000000 --- a/feature/floating-window/src/demo/res/layout/dialog_game_collect.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/dialog_qa_feedback.xml b/feature/floating-window/src/demo/res/layout/dialog_qa_feedback.xml deleted file mode 100644 index 1fa6fb2dd3..0000000000 --- a/feature/floating-window/src/demo/res/layout/dialog_qa_feedback.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/fragment_help_contaier.xml b/feature/floating-window/src/demo/res/layout/fragment_help_contaier.xml deleted file mode 100644 index 0021c01a67..0000000000 --- a/feature/floating-window/src/demo/res/layout/fragment_help_contaier.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feature/floating-window/src/demo/res/layout/fragment_help_content.xml b/feature/floating-window/src/demo/res/layout/fragment_help_content.xml deleted file mode 100644 index 5f0fe3f00e..0000000000 --- a/feature/floating-window/src/demo/res/layout/fragment_help_content.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/fragment_qa_category.xml b/feature/floating-window/src/demo/res/layout/fragment_qa_category.xml deleted file mode 100644 index 856d7c7ca4..0000000000 --- a/feature/floating-window/src/demo/res/layout/fragment_qa_category.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/fragment_suggest_select.xml b/feature/floating-window/src/demo/res/layout/fragment_suggest_select.xml deleted file mode 100644 index 85fd8bf0f3..0000000000 --- a/feature/floating-window/src/demo/res/layout/fragment_suggest_select.xml +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/help_item.xml b/feature/floating-window/src/demo/res/layout/help_item.xml deleted file mode 100644 index ccd1943e4b..0000000000 --- a/feature/floating-window/src/demo/res/layout/help_item.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - diff --git a/feature/floating-window/src/demo/res/layout/help_qa_category_item.xml b/feature/floating-window/src/demo/res/layout/help_qa_category_item.xml deleted file mode 100644 index 3e32d648a2..0000000000 --- a/feature/floating-window/src/demo/res/layout/help_qa_category_item.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/help_qa_item.xml b/feature/floating-window/src/demo/res/layout/help_qa_item.xml deleted file mode 100644 index f55ae8a330..0000000000 --- a/feature/floating-window/src/demo/res/layout/help_qa_item.xml +++ /dev/null @@ -1,10 +0,0 @@ - - \ No newline at end of file diff --git a/feature/floating-window/src/demo/res/layout/item_qa_feedback_reason.xml b/feature/floating-window/src/demo/res/layout/item_qa_feedback_reason.xml deleted file mode 100644 index 66dc757911..0000000000 --- a/feature/floating-window/src/demo/res/layout/item_qa_feedback_reason.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/feature/floating-window/src/demo/res/values/strings.xml b/feature/floating-window/src/demo/res/values/strings.xml deleted file mode 100644 index 10a02ba2c5..0000000000 --- a/feature/floating-window/src/demo/res/values/strings.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - 右下角浮窗模块 - 请详细描述你遇到的问题\\n↓↓你还可以上传截图 - 指定游戏 - 提交 - QQ、邮箱或手机 - 欢迎畅所欲言,光环助手会努力变得更好 - 普通反馈 - 功能收录 - 游戏加速、单机功能订制收录 - 发生闪退 - 游戏/助手自动退出或重启,点击这里反馈 - 游戏问题 - 玩游戏过程中遇到的问题 - 收录更新 - 游戏版本太低、没有想要的游戏,点击这里提交 - 帖子投稿 - 版权申诉 - 原创或转发,我们都欢迎 - 如果您有版权方面的问题,请点击这里提交申诉 - 光环助手官方交流Q群: - 367541038 - 正在反馈... - - - 加速跳过 - 单机功能 - 替换素材 - - - 游戏平台*]]> - 功能需求*]]> - 联系方式*]]> - 版权方身份*]]> - 版权方证件*]]> - 证件正反面照片*]]> - 公司或组织证件照片*]]> - 侵权的应用*]]> - 侵权应用截图*]]> - 说明*]]> - 联系方式*]]> - \ No newline at end of file diff --git a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowManager.kt b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowManager.kt index 441bb783fb..eaa42d2b31 100644 --- a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowManager.kt +++ b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowManager.kt @@ -12,7 +12,7 @@ import androidx.core.view.ViewPropertyAnimatorListener import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.BaseLazyFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.ExposureSource @@ -363,8 +363,7 @@ internal object FloatingWindowManager { } fun logExposure(gameId: String, windowId: String): ExposureEvent { - val exposureMangerProvider = - ARouter.getInstance().build(RouteConsts.provider.exposureManager).navigation() as? IExposureManagerProvider + val exposureMangerProvider = TheRouter.get(IExposureManagerProvider::class.java) val exposureSourceList = arrayListOf() diff --git a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowProviderImpl.kt b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowProviderImpl.kt index 48b996bd5a..af6d1a45db 100644 --- a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowProviderImpl.kt +++ b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowProviderImpl.kt @@ -4,8 +4,8 @@ import android.app.Activity import android.content.Context import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.facade.annotation.Route -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.router.Route +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.BaseLazyFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.retrofit.BiResponse @@ -21,8 +21,8 @@ import com.lightgame.utils.Utils import io.reactivex.disposables.Disposable import java.util.* -@Route(path = RouteConsts.provider.floatingwindow, name = "FloatingWindow 暴露服务") -class FloatingWindowProviderImpl : IFloatingWindowProvider { +@com.therouter.inject.ServiceProvider +class FloatingWindowProviderImpl : IFloatingWindowProvider { override fun getAndShowFloatingWindow( gameId: String, @@ -30,7 +30,7 @@ class FloatingWindowProviderImpl : IFloatingWindowProvider location: String, fragment: Fragment, recyclerView: RecyclerView, - welcomeDialogCallback: ((welcomeDialogEntity: WelcomeDialogEntity) -> Unit)? + welcomeDialogCallback: ((welcomeDialogEntity: Any) -> Unit)? ): Disposable { return RetrofitManager.api .getFloatingWindow(gameId) @@ -71,7 +71,7 @@ class FloatingWindowProviderImpl : IFloatingWindowProvider fragment: Fragment, recyclerView: RecyclerView, windowEntityList: ArrayList<*>, - welcomeDialogCallback: ((entity: WelcomeDialogEntity) -> Unit)? + welcomeDialogCallback: ((entity: Any) -> Unit)? ) { FloatingWindowManager.showFloatingWindowIfNeeded( windowEntityList as ArrayList, @@ -93,7 +93,7 @@ class FloatingWindowProviderImpl : IFloatingWindowProvider } private fun filterValidWindow(rawWindowList: ArrayList): ArrayList { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) val isBrandNewInstall = appProvider?.getIsBrandNewInstall() ?: false val validWindowEntityList = arrayListOf() @@ -198,8 +198,4 @@ class FloatingWindowProviderImpl : IFloatingWindowProvider ) } - override fun init(context: Context?) { - // Do nothing - } - } \ No newline at end of file diff --git a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowViewAdapter.kt b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowViewAdapter.kt index 2eeaf5af03..85d2fd6a94 100644 --- a/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowViewAdapter.kt +++ b/feature/floating-window/src/main/java/com/gh/gamecenter/floatingwindow/FloatingWindowViewAdapter.kt @@ -4,10 +4,9 @@ import android.net.Uri import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.common.view.WrapContentDraweeView import com.gh.gamecenter.feature.entity.FloatingWindowEntity @@ -99,8 +98,7 @@ class FloatingWindowViewAdapter( ImageUtils.display(iv, windowEntity.image) holder.binding.imageIv.setOnClickListener { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils) - .navigation() as ILinkDirectUtilsProvider + val directUtils = TheRouter.get(ILinkDirectUtilsProvider::class.java) // 仅页面为首页-推荐,且可展开为大图时才执行回调 if (windowEntity.expandable && mGameId.isEmpty()) { @@ -119,7 +117,7 @@ class FloatingWindowViewAdapter( windowEntity.link.link = uri.toString() } - directUtils.directToLinkPage(it.context, windowEntity.link, "右下角悬浮窗", "", exposureEvent) + directUtils?.directToLinkPage(it.context, windowEntity.link, "右下角悬浮窗", "", exposureEvent) LogUtils.logFloatingWindowClicked( action = "点击悬浮窗跳转页面", diff --git a/feature/floating-window/src/main/manifest/AndroidManifest.xml b/feature/floating-window/src/main/manifest/AndroidManifest.xml deleted file mode 100644 index 4281df2dd7..0000000000 --- a/feature/floating-window/src/main/manifest/AndroidManifest.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/feature/jg_push/build.gradle b/feature/jg_push/build.gradle index 6313235569..2c2251d867 100644 --- a/feature/jg_push/build.gradle +++ b/feature/jg_push/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -18,11 +19,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -47,7 +43,8 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' diff --git a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt index 9b0e955172..1dd011974b 100644 --- a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt +++ b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt @@ -5,7 +5,7 @@ import android.content.Context import android.os.Build import cn.jiguang.api.utils.JCollectionAuth import cn.jpush.android.api.JPushInterface -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.singleToMain @@ -41,7 +41,7 @@ object JPushHelper { fun bindRegistrationId(registrationId: String?) { SensorsBridge.profileAppend(KEY_REGISTRATION_ID, registrationId ?: "") - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) val data = mapOf( "oaid" to appProvider?.getOaid(), "registration_id" to registrationId, diff --git a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt index 2b67ca4ea9..2cb86003d5 100644 --- a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt +++ b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.jg.push.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPushProvider import com.gh.gamecenter.jg.push.HaloApp @@ -12,7 +12,7 @@ import io.reactivex.Single /** * 极光推送服务提供者类 */ -@Route(path = RouteConsts.provider.push, name = "极光推送暴露服务") +@com.therouter.inject.ServiceProvider class JGPushProviderImpl : IPushProvider { override fun initialize(applicationContext: Context) { Utils.log("JGPushProviderImpl", "初始化推送") @@ -51,5 +51,4 @@ class JGPushProviderImpl : IPushProvider { JPushHelper.cleanBadgeNumber(applicationContext) } - override fun init(p0: Context?) {} } \ No newline at end of file diff --git a/feature/media_select/build.gradle b/feature/media_select/build.gradle index 8b674852fb..1f1ec8ffed 100644 --- a/feature/media_select/build.gradle +++ b/feature/media_select/build.gradle @@ -24,12 +24,6 @@ android { kotlinOptions { jvmTarget = "1.8" } - - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } } dependencies { diff --git a/feature/new_feedback/build.gradle b/feature/new_feedback/build.gradle index 5f6aea3dc2..bd067da34a 100644 --- a/feature/new_feedback/build.gradle +++ b/feature/new_feedback/build.gradle @@ -6,6 +6,7 @@ if (isRelease.toBoolean()) { apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -49,12 +50,6 @@ android { } } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildFeatures { viewBinding true } @@ -80,11 +75,8 @@ android { } dependencies { - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' - - kapt "com.alibaba:arouter-compiler:$arouterVersion" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + ksp "cn.therouter:apt:${routerVersion}" if (!isRelease.toBoolean()) { implementation "androidx.multidex:multidex:${multiDex}" } diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/CheckLoginUtils.java b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/CheckLoginUtils.java index 64bb79fd8e..cb709418a3 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/CheckLoginUtils.java +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/CheckLoginUtils.java @@ -4,7 +4,7 @@ import android.app.Activity; import android.content.Context; import android.text.TextUtils; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; @@ -29,7 +29,7 @@ public class CheckLoginUtils { if (SPUtils.getBoolean(Constants.SP_HAS_GET_PHONE_INFO) || NetworkUtils.isOpenMobileData(context)) { startQuickLogin(context, entrance); } else { - ARouter.getInstance().build(RouteConsts.activity.loginActivity) + TheRouter.build(RouteConsts.activity.loginActivity) .withString(EntranceConsts.KEY_ENTRANCE, entrance) .navigation(); } diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt index c6be2d8088..65f30b5a82 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/FeedbackModuleApp.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.feedback import android.os.Build import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.animated.giflite.GifDecoder import com.facebook.common.logging.FLog import com.facebook.imageformat.DefaultImageFormats @@ -34,10 +34,10 @@ class FeedbackModuleApp : MultiDexApplication() { private fun initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + // 可以直接删掉本行 ARouter.openLog() // 打印日志 + // 可以直接删掉本行 ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 + // 可以直接删掉本行 ARouter.init(this) // 尽可能早,推荐在Application中初始化 } fun initFresco() { diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt deleted file mode 100644 index c61fdf3b65..0000000000 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AdHelperProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.feedback.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.feature.entity.SettingsEntity -import com.gh.gamecenter.feature.provider.IAdHelperProvider - -@Route(path = RouteConsts.provider.adHelper, name = "AdHelper暴露服务") -class AdHelperProviderImpl : IAdHelperProvider { - override fun getSuggestionFunctionAd(): SettingsEntity.AD? { - return null - } - - override fun init(context: Context?) { - - } -} \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt index 1068bc006a..b51d6ccede 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.feedback.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider @@ -11,11 +11,8 @@ import com.gh.gamecenter.feedback.BuildConfig import com.gh.gamecenter.feedback.HaloApp import com.gh.gamecenter.feedback.R -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } override fun getAppName(): String { return HaloApp.getInstance().getString(R.string.app_name) diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt index f553cdd256..dc8c453ce9 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/BuildConfigImpl.kt @@ -1,16 +1,13 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBuildConfigProvider import com.gh.gamecenter.feedback.BuildConfig -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +@com.therouter.inject.ServiceProvider class BuildConfigImpl : IBuildConfigProvider { - override fun init(context: Context?) { - // Do nothing - } override fun getApplicationId(): String = BuildConfig.APPLICATION_ID diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt index 3513051110..05a4dab9f1 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/CheckLoginProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ICheckLoginProvider import com.gh.gamecenter.feedback.CheckLoginUtils -@Route(path = RouteConsts.provider.checkLogin, name = "CheckLoginUtils暴露服务") +@com.therouter.inject.ServiceProvider class CheckLoginProviderImpl : ICheckLoginProvider { override fun checkLogin(context: Context, entrance: String, action: (() -> Unit)?) { CheckLoginUtils.checkLogin(context, entrance, action) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt index 28fb1cd6d7..e3b2dd3dca 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ConfigProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider import com.gh.gamecenter.feedback.BuildConfig -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +@com.therouter.inject.ServiceProvider class ConfigProviderImpl : IConfigProvider { override fun getTencentAppId(): String { return BuildConfig.TENCENT_APPID @@ -99,8 +99,4 @@ class ConfigProviderImpl : IConfigProvider { override fun getNightModeSetting(): Boolean { return false } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt index ffc5998a06..6deb128d45 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DataUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDataUtilsProvider -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataUtilsProviderImpl : IDataUtilsProvider { override fun getDeviceCertification() { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt index 2e08a8ee56..f6a88f0ce1 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.feedback.provider import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务") +@com.therouter.inject.ServiceProvider class DirectProviderImpl : IDirectProvider { override fun directToWebView(context: Context, url: String, entrance: String?) { @@ -124,8 +124,4 @@ class DirectProviderImpl : IDirectProvider { override fun directToExternalBrowser(context: Context, url: String) { ToastUtils.toast("调用->DirectProviderImpl.directToExternalBrowser") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt index cdd9e5e331..8c2a266d2f 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/HandleGameResponseProviderImpl.kt @@ -1,17 +1,13 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IHandleGameResponseProvider -@Route(path = RouteConsts.provider.handleGameResponse, name = "处理游戏类型返回") +@com.therouter.inject.ServiceProvider class HandleGameResponseProviderImpl : IHandleGameResponseProvider { override fun handleGameResponse(response: List, entrance: String) = response - override fun init(context: Context?) { - // Do nothing - } - } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt index 66d6a20589..cc4fe1a223 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.feedback.provider import android.content.Context import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity @@ -13,7 +13,7 @@ import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity -@Route(path = RouteConsts.provider.linkDirectUtils, name = "DirectUtils暴露服务,主要是暴露directToLinkPage方法") +@com.therouter.inject.ServiceProvider class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { override fun directToLinkPage( @@ -64,8 +64,4 @@ class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToCommunityColumn") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt index e5871f9e47..b475741380 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LogUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.* -@Route(path = RouteConsts.provider.logUtils, name = "LogUtils暴露服务") +@com.therouter.inject.ServiceProvider class LogUtilsProviderImpl : ILogUtilsProvider { override fun login(loginStep: String, loginType: String, entrance: String) { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt index b762b7076c..e4e39d508d 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/PackageUtilsProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.feedback.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageUtilsProvider -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +@com.therouter.inject.ServiceProvider class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun obtainProcessName(): String? { return "" @@ -43,8 +43,4 @@ class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun getVersionNameByPackageName(packageName: String): String { return "" } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt index df0a171f4e..66a7785b13 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/ReservationRepositoryProviderImpl.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.feedback.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IReservationRepositoryProvider -@Route(path = RouteConsts.provider.reservationRepository, name = "ReservationRepository暴露服务") +@com.therouter.inject.ServiceProvider class ReservationRepositoryProviderImpl : IReservationRepositoryProvider { override fun refreshReservations() { @@ -15,8 +15,4 @@ class ReservationRepositoryProviderImpl : IReservationRepositoryProvider { override fun clearReservations() { // Do nothing } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt index f758d0c80d..30139fd3ca 100644 --- a/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt +++ b/feature/new_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/WebProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.feedback.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWebProvider -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +@com.therouter.inject.ServiceProvider class WebProviderImpl : IWebProvider { override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? { return null @@ -39,8 +39,4 @@ class WebProviderImpl : IWebProvider { ): Intent? { return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt index 67ad96ad66..32b962c1cd 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/provider/HelpAndFeedbackProviderImpl.kt @@ -6,7 +6,7 @@ import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.fragment.BaseFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.SimpleGameEntity @@ -17,7 +17,7 @@ import com.gh.gamecenter.feedback.view.qa.HelpContainerFragment import com.gh.gamecenter.feedback.view.qa.QaFeedbackDialogFragment import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity -@Route(path = RouteConsts.provider.helpAndFeedback, name = "HelpAndFeedbackActivity暴露服务") +@com.therouter.inject.ServiceProvider class HelpAndFeedbackProviderImpl : IHelpAndFeedbackProvider { override fun isSuggestionActivity(activity: Activity): Boolean = activity is SuggestionActivity @@ -101,8 +101,4 @@ class HelpAndFeedbackProviderImpl : IHelpAndFeedbackProvider { override fun getHelpContainerFragmentClass(): String { return HelpContainerFragment::class.java.name } - - override fun init(context: Context?) { - //Do nothing - } } \ No newline at end of file diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt index e1017c228c..0eb1d006f8 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpAndFeedbackActivity.kt @@ -2,10 +2,11 @@ package com.gh.gamecenter.feedback.view.help import android.os.Bundle import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feedback.R +import com.therouter.router.Autowired /** * 帮助与反馈 diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpVideoAdapter.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpVideoAdapter.kt index df20d5b916..8ffde65ab7 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpVideoAdapter.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/help/HelpVideoAdapter.kt @@ -9,7 +9,7 @@ import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts @@ -79,7 +79,7 @@ class HelpVideoAdapter( } root.setOnClickListener { - ARouter.getInstance().build(RouteConsts.activity.fullScreenVideoActivity) + TheRouter.build(RouteConsts.activity.fullScreenVideoActivity) .withString(EntranceConsts.KEY_URL, helpVideo.video?.url) .withString(EntranceConsts.KEY_POSTER_PATH, helpVideo.video?.poster) .withString(EntranceConsts.KEY_NAVIGATION_TITLE, "帮助视频") diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/qa/HelpContentFragment.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/qa/HelpContentFragment.kt index bc9d3ba553..03e6407b11 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/qa/HelpContentFragment.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/qa/HelpContentFragment.kt @@ -7,7 +7,7 @@ import android.widget.TextView import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.baselist.ListFragment import com.gh.gamecenter.common.baselist.LoadStatus @@ -49,8 +49,7 @@ class HelpContentFragment : ListFragment() map["message"] = message map["ghversion"] = packageUtilsConfig?.getGhVersionName() ?: "" diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestViewModel.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestViewModel.kt index 8de4fa450d..145789ff03 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestViewModel.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestViewModel.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment import com.gh.gamecenter.common.constant.Config @@ -159,9 +159,8 @@ class SuggestViewModel( picArray: JSONArray? = null, diagnosisResult: String = "" ) { - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) + val appProvider = TheRouter.get(IAppProvider::class.java) val suggestType = if (mIsFromRating) { "$mSuggestType(评论)" @@ -307,9 +306,8 @@ class SuggestViewModel( credentialsPicArray: JSONArray?, screenshotsPicArray: JSONArray? ) { - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) + val appProvider = TheRouter.get(IAppProvider::class.java) val jsonObject = json { "ghversion" to packageUtilsConfig?.getGhVersionName() diff --git a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestionCategoryFragment.kt b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestionCategoryFragment.kt index 5c3232598a..a6042d8633 100644 --- a/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestionCategoryFragment.kt +++ b/feature/new_feedback/src/main/java/com/gh/gamecenter/feedback/view/suggest/SuggestionCategoryFragment.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.feedback.view.suggest import android.os.Bundle import android.view.View import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.baselist.ListFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.ShareUtils @@ -41,9 +41,8 @@ class SuggestionCategoryFragment : ListFragment { +@com.therouter.inject.ServiceProvider +class PkgProviderImpl : IPkgProvider { @SuppressLint("CheckResult") - override fun requestPkgConfig(configId: String, onConfigReceived: (config: PkgConfigEntity) -> Unit) { + override fun requestPkgConfig(configId: String, onConfigReceived: (config: Any) -> Unit) { RetrofitManager.getInstance().api.getPkgConfig(configId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -25,8 +21,4 @@ class PkgProviderImpl : IPkgProvider { }) } - override fun init(context: Context?) { - // Do nothing - } - } \ No newline at end of file diff --git a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/PkgModuleApp.kt b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/PkgModuleApp.kt index cf9c45b56a..23cf6ba4a6 100644 --- a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/PkgModuleApp.kt +++ b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/PkgModuleApp.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.pkg import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.core.iinterface.IApplication import java.util.* @@ -20,10 +20,10 @@ class PkgModuleApp : MultiDexApplication() { private fun initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + // 可以直接删掉本行 ARouter.openLog() // 打印日志 + // 可以直接删掉本行 ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 + // 可以直接删掉本行 ARouter.init(this) // 尽可能早,推荐在Application中初始化 } companion object { diff --git a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt index e11f133c27..2bc049068d 100644 --- a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt +++ b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.pkg.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider @@ -11,12 +11,8 @@ import com.gh.gamecenter.pkg.BuildConfig import com.gh.gamecenter.pkg.HaloApp import com.gh.gamecenter.pkg.R -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun get(key: String, isRemove: Boolean): Any? { return "" } diff --git a/feature/qq_game/build.gradle b/feature/qq_game/build.gradle index 236ef018fc..8e45f241b5 100644 --- a/feature/qq_game/build.gradle +++ b/feature/qq_game/build.gradle @@ -2,6 +2,7 @@ apply plugin: 'com.android.library' apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -26,12 +27,6 @@ android { } } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -52,7 +47,8 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' diff --git a/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/MiniGameChannelInfoProxyImpl.java b/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/MiniGameChannelInfoProxyImpl.java index 194f500c23..ee78fcea0b 100644 --- a/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/MiniGameChannelInfoProxyImpl.java +++ b/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/MiniGameChannelInfoProxyImpl.java @@ -9,7 +9,7 @@ import androidx.annotation.Keep; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.blankj.utilcode.util.AppUtils; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.utils.PackageFlavorHelper; @@ -58,7 +58,7 @@ public class MiniGameChannelInfoProxyImpl extends IMiniGameChannelInfoProxy { */ @Override public String getAppVersion() { - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); return appProvider.getAppVersion(); } diff --git a/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/QGameProviderImpl.kt b/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/QGameProviderImpl.kt index 3fe8d9f46a..9f8bf76cf5 100644 --- a/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/QGameProviderImpl.kt +++ b/feature/qq_game/src/main/java/com/gh/gamecenter/qqmini/QGameProviderImpl.kt @@ -4,7 +4,7 @@ import android.app.Activity import android.content.Context import android.content.Intent import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IQGameProvider import com.tencent.mm.opensdk.modelmsg.SendAuth @@ -12,17 +12,13 @@ import com.tencent.qqmini.minigame.opensdk.wx.WXEntryActivityHelper import com.tencent.qqmini.sdk.launcher.AppLoaderFactory import com.tencent.qqmini.sdk.launcher.model.ShareData -@Route(path = RouteConsts.provider.qGame, name = "QQ小游戏暴露服务") +@com.therouter.inject.ServiceProvider class QGameProviderImpl : IQGameProvider { override fun initOpenSdkLogin(context: Context, wxAppId: String, qqAppId: String) { QGameHelper.initOpenSdkLogin(context, wxAppId, qqAppId) } - override fun init(context: Context?) { - // do nothing - } - override fun setLoginInfo(context: Context, userId: String, userName: String, token: String) { QGameHelper.setLoginInfo(context, userId, userName, token) } diff --git a/feature/quick_login/build.gradle b/feature/quick_login/build.gradle index cd3e8f5778..d6cb142236 100644 --- a/feature/quick_login/build.gradle +++ b/feature/quick_login/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'kotlin-parcelize' + id 'com.google.devtools.ksp' } android { @@ -11,11 +12,7 @@ android { defaultConfig { minSdk 22 - javaCompileOptions { - annotationProcessorOptions { - arguments = [AROUTER_MODULE_NAME: project.getName()] - } - } + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -37,7 +34,7 @@ android { dependencies { api("cn.jiguang.sdk:jverification:$jverifiationVersion") - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' } diff --git a/feature/quick_login/src/main/java/com/gh/gamecenter/LoginHelper.kt b/feature/quick_login/src/main/java/com/gh/gamecenter/LoginHelper.kt index 57fb3ebe63..05b0191bf3 100644 --- a/feature/quick_login/src/main/java/com/gh/gamecenter/LoginHelper.kt +++ b/feature/quick_login/src/main/java/com/gh/gamecenter/LoginHelper.kt @@ -16,7 +16,7 @@ import androidx.core.view.WindowCompat import androidx.core.view.doOnAttach import cn.com.chinatelecom.account.api.CtAuth import cn.jiguang.verifysdk.api.* -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.GlobalActivityManager.getCurrentPageEntity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.databinding.SetWaitDialogBinding @@ -53,7 +53,7 @@ object LoginHelper { private var loginProvider: ILoginProvider? = null fun getLoginProvider(): ILoginProvider? = - loginProvider ?: (ARouter.getInstance().build(RouteConsts.provider.login).navigation() as? ILoginProvider) + loginProvider ?: (TheRouter.get(ILoginProvider::class.java)) ?.also { loginProvider = it } @@ -80,7 +80,7 @@ object LoginHelper { } } - fun loginAuth(context: Context, entrance: String, callback: (() -> Unit)?) { + fun loginAuth(context: Context, continuablePath: String?, callback: (() -> Unit)?) { runOnUiThread { val dialogContext = DialogHelper.checkDialogContext(context) if (dialogContext is Activity && (dialogContext.isFinishing || dialogContext.isDestroyed)) return@runOnUiThread @@ -100,11 +100,9 @@ object LoginHelper { // no implement null } - - } isDarkMode = DarkModeUtils.isDarkModeOn(context) - setUiConfig(context, callback) + setUiConfig(context, continuablePath, callback) val settings = LoginSettings() settings.isAutoFinish = false settings.timeout = 5 * 1000 @@ -144,7 +142,6 @@ object LoginHelper { } } } - } JVerificationInterface.loginAuth( @@ -155,11 +152,11 @@ object LoginHelper { when (code) { LOGIN_AUTH_CODE_SUCCESS -> { loginToken = content - getLoginProvider()?.startQuickLoginHelperPageFromQuickLogin(content, context, callback) + getLoginProvider()?.startQuickLoginHelperPageFromQuickLogin(content, context, continuablePath, callback) } LOGIN_AUTH_CODE_FAILURE -> { - getLoginProvider()?.startCodeLoginPageFromQuickLogin(openAuthPageSuccess, context, callback) + getLoginProvider()?.startCodeLoginPageFromQuickLogin(openAuthPageSuccess, context, continuablePath, callback) } } } @@ -171,7 +168,7 @@ object LoginHelper { } } - private fun setUiConfig(context: Context, callback: (() -> Unit)?) { + private fun setUiConfig(context: Context, continuablePath: String?, callback: (() -> Unit)?) { backgroundView = getLoginProvider()?.createQuickLoginBackgroundView(context) val beanArrayList: MutableList = ArrayList() beanArrayList.add(PrivacyBean("用户协议", com.gh.gamecenter.common.R.string.disclaimer_url.toResString(), ", ")) @@ -230,15 +227,14 @@ object LoginHelper { .setPrivacyMarginL(40) //隐私条款距离手机左右边缘的边距 .setPrivacyMarginR(40) // 添加自定义布局 - .addBottomView(getCustomView(context, callback)) { _, _ -> } + .addBottomView(getCustomView(context, continuablePath, callback)) { _, _ -> } .setStatusBarDarkMode(false) .build() JVerificationInterface.setCustomUIWithConfig(uiConfig) - } - private fun getCustomView(context: Context, callback: (() -> Unit)?): View? { - return getLoginProvider()?.createCustomView(context, callback) + private fun getCustomView(context: Context, continuablePath: String?, callback: (() -> Unit)?): View? { + return getLoginProvider()?.createCustomView(context, continuablePath, callback) ?.also { root -> root.doOnAttach { initView(it) diff --git a/feature/quick_login/src/main/java/com/gh/gamecenter/provider/QuickLoginProviderImpl.kt b/feature/quick_login/src/main/java/com/gh/gamecenter/provider/QuickLoginProviderImpl.kt index f6b4ae2775..1d94588aa6 100644 --- a/feature/quick_login/src/main/java/com/gh/gamecenter/provider/QuickLoginProviderImpl.kt +++ b/feature/quick_login/src/main/java/com/gh/gamecenter/provider/QuickLoginProviderImpl.kt @@ -4,12 +4,10 @@ import android.app.Activity import android.app.Application import android.content.Context import cn.jiguang.verifysdk.api.JVerificationInterface -import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.LoginHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IQuickLoginProvider -@Route(path = RouteConsts.provider.quickLogin, name = "一键登录暴露服务") +@com.therouter.inject.ServiceProvider class QuickLoginProviderImpl : IQuickLoginProvider { override fun init(app: Application) { @@ -21,8 +19,8 @@ class QuickLoginProviderImpl : IQuickLoginProvider { LoginHelper.preLogin(context) } - override fun startLogin(context: Context, entrance: String, callback: (() -> Unit)?) { - LoginHelper.loginAuth(context, entrance, callback) + override fun startLogin(context: Context, entrance: String, continuablePath: String?, callback: (() -> Unit)?) { + LoginHelper.loginAuth(context, continuablePath, callback) } override fun isOpenMobileData(context: Context): Boolean { @@ -45,7 +43,4 @@ class QuickLoginProviderImpl : IQuickLoginProvider { LoginHelper.release() } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/feature/route_doc/.gitignore b/feature/route_doc/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/feature/route_doc/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/feature/route_doc/build.gradle b/feature/route_doc/build.gradle new file mode 100644 index 0000000000..bbd03f8726 --- /dev/null +++ b/feature/route_doc/build.gradle @@ -0,0 +1,36 @@ +plugins { + id 'java-library' + id 'org.jetbrains.kotlin.jvm' +} + +compileJava { + sourceCompatibility = '1.8' + targetCompatibility = '1.8' +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { + kotlinOptions { + freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" + } +} + +dependencies { + implementation 'org.apache.commons:commons-lang3:3.5' + implementation 'org.apache.commons:commons-collections4:4.1' + + implementation 'com.alibaba:fastjson:1.2.69' + + implementation 'com.squareup:javapoet:1.8.0' + + // ksp deps https://github.com/google/ksp/releases/tag/1.7.20-1.0.6 + implementation 'com.google.devtools.ksp:symbol-processing-api:1.6.10-1.0.4' + // https://square.github.io/kotlinpoet/ + implementation("com.squareup:kotlinpoet:1.11.0") + implementation("com.squareup:kotlinpoet-ksp:1.11.0") + implementation("com.squareup:kotlinpoet-metadata:1.11.0") +} diff --git a/feature/route_doc/gradle.properties b/feature/route_doc/gradle.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/RouteSymbolProcessorProvider.kt b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/RouteSymbolProcessorProvider.kt new file mode 100644 index 0000000000..c462e06789 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/RouteSymbolProcessorProvider.kt @@ -0,0 +1,265 @@ +package com.gh.gamecenter.ksp.compiler + +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.serializer.SerializerFeature +import com.gh.gamecenter.ksp.compiler.entity.RouteDoc +import com.gh.gamecenter.ksp.compiler.entity.RouteMeta +import com.gh.gamecenter.ksp.compiler.entity.RouteMetaKsp +import com.gh.gamecenter.ksp.compiler.entity.TypeKind +import com.gh.gamecenter.ksp.compiler.entity.kspRawType +import com.gh.gamecenter.ksp.compiler.utils.Consts +import com.gh.gamecenter.ksp.compiler.utils.KSPLoggerWrapper +import com.gh.gamecenter.ksp.compiler.utils.findAnnotationWithType +import com.gh.gamecenter.ksp.compiler.utils.findModuleName +import com.gh.gamecenter.ksp.compiler.utils.typeExchange +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSClassDeclaration +import com.google.devtools.ksp.symbol.KSFile +import com.squareup.kotlinpoet.ksp.KotlinPoetKspPreview +import com.therouter.router.Autowired +import com.therouter.router.Route +import java.util.* +import kotlin.text.get + +@KotlinPoetKspPreview +class RouteSymbolProcessorProvider : SymbolProcessorProvider { + + override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { + return RouteSymbolProcessor( + KSPLoggerWrapper(environment.logger), environment.codeGenerator, environment.options + ) + } + + class RouteSymbolProcessor( + private val logger: KSPLoggerWrapper, + private val codeGenerator: CodeGenerator, + options: Map + ) : SymbolProcessor { + companion object { + private val ROUTE_CLASS_NAME = Route::class.qualifiedName!! + } + + private val moduleName = options.findModuleName(logger) + private val generateDoc = true + + override fun process(resolver: Resolver): List { + val symbol = resolver.getSymbolsWithAnnotation(ROUTE_CLASS_NAME) + + val elements = symbol.filterIsInstance().toList() + + if (elements.isNotEmpty()) { + logger.warn(">>> RouteSymbolProcessor init. <<<") + try { + parseRoute(elements) + } catch (e: Exception) { + logger.exception(e) + } + } + + return emptyList() + } + + private fun parseRoute(elements: List) { + logger.warn(">>> Found routes, size is " + elements.size + " <<<") + + val groupsMap = HashMap>() + val docSource = mutableMapOf>() + + for (element in elements) { + categories(extractRouteMeta(element), groupsMap) + } + + generateGroupFiles(groupsMap, docSource) + generateRootFile(groupsMap, docSource) + } + + private fun categories( + routeMeta: RouteMeta, groupsMap: HashMap> + ) { + if (routeVerify(routeMeta)) { + logger.warn(">>> Start categories, group = " + routeMeta.group + ", path = " + routeMeta.path + routeMeta.paramsType + " <<<") + val routeMetas = groupsMap[routeMeta.group] + if (routeMetas.isNullOrEmpty()) { + val routeMetaSet = sortedSetOf({ r1, r2 -> + try { + r1!!.path.compareTo(r2!!.path) + } catch (npe: NullPointerException) { + logger.error(npe.message.toString()) + 0 + } + }) + routeMetaSet.add(routeMeta) + groupsMap[routeMeta.group] = routeMetaSet + } else { + routeMetas.add(routeMeta) + } + } else { + logger.warn(">>> Route meta verify error, group is " + routeMeta.group + " <<<") + } + } + + private fun generateGroupFiles( + groupsMap: HashMap>, + docSource: MutableMap> + ) { + for (entry in groupsMap) { + if (entry.key.isEmpty() || entry.value.isEmpty()) { + continue + } + + val groupName = entry.key + val groupRouteMetas = entry.value + val dependencies = mutableSetOf() + val routeDocList = mutableListOf() + + for (routeMeta in groupRouteMetas) { + val routeDoc = extractDocInfo(routeMeta) + val element = routeMeta.kspRawType + element.containingFile?.let { + dependencies.add(it) + } + + extractRouteMetaParamInfoDoc(routeMeta)?.let { + routeDoc.params = it + } + + routeDoc.className = element.qualifiedName!!.asString() + routeDocList.add(routeDoc) + } + docSource[groupName] = routeDocList + } + } + + private fun generateRootFile( + groupsMap: HashMap>, + docSource: MutableMap> + ) { + if (groupsMap.isEmpty()) { + return + } + + val dependencies = mutableSetOf() + for (entry in groupsMap) { + val groupName = entry.key + + if (groupName.isEmpty() || entry.value.isEmpty()) { + continue + } + + logger.warn(">>> Route meta generateRootFile, groupName is " + groupName + " <<<") + + for (item in entry.value) { + item.kspRawType.containingFile?.let { + dependencies.add(it) + } + } + } + + val rootClassName = Consts.NAME_OF_ROOT + Consts.SEPARATOR + moduleName + + logger.warn(">>> Generated root, name is $rootClassName <<<") + generateDocFile(docSource, dependencies) + } + + @Suppress("SpellCheckingInspection") + private fun generateDocFile( + docSource: MutableMap>, source: MutableSet + ) { + if (generateDoc) { + val doc = JSON.toJSONString(docSource, SerializerFeature.PrettyFormat) + val dependencies = Dependencies(false, *source.toTypedArray()) + val file = codeGenerator.createNewFile( + dependencies, + Consts.PACKAGE_OF_GENERATE_DOCS, + "router-map-of-$moduleName", + "json" + ) + file.use { + it.write(doc.toByteArray()) + } + logger.warn(">>> Generated doc, name is arouter-map-of-$moduleName <<<") + } + } + + private fun routeVerify(meta: RouteMeta): Boolean { + val path = meta.path + // The path must be start with '/' and not empty! + if (path.isNullOrEmpty() || !path.startsWith("/")) { + return false + } + return if (meta.group.isNullOrEmpty()) { // Use default group(the first word in path) + try { + val defaultGroup = path.substring(1, path.indexOf("/", 1)) + if (defaultGroup.isEmpty()) { + return false + } + meta.group = defaultGroup + true + } catch (e: Exception) { + logger.error("Failed to extract default group! " + e.message) + false + } + } else true + } + + private fun extractRouteMeta(element: KSClassDeclaration): RouteMeta { + val qualifiedName = element.qualifiedName?.asString() + ?: error("local variable can not be annotated with @Route") + val route = element.findAnnotationWithType() + ?: error("$qualifiedName must annotated with @Route") + + val paramsType = HashMap() + val injectConfig = HashMap() + injectParamCollector(element, paramsType, injectConfig) + return RouteMetaKsp.build(route, element, paramsType).also { + it.injectConfig = injectConfig + } + } + + private fun extractDocInfo(routeMeta: RouteMeta): RouteDoc { + val routeDoc = RouteDoc() + routeDoc.group = routeMeta.group + routeDoc.path = routeMeta.path + routeDoc.description = routeMeta.name + routeDoc.mark = routeMeta.extra + return routeDoc + } + + private fun extractRouteMetaParamInfoDoc(routeMeta: RouteMeta): MutableList? { + val paramsType = routeMeta.paramsType + val injectConfigs = routeMeta.injectConfig + if (!paramsType.isNullOrEmpty()) { + val paramList = mutableListOf() + for (types in paramsType) { + val param = RouteDoc.Param() + val injectConfig = injectConfigs[types.key] + param.key = types.key + param.type = TypeKind.entries[types.value].name.lowercase() + param.description = injectConfig?.description + param.isRequired = injectConfig?.required == true + paramList.add(param) + } + return paramList + } + return null + } + + private fun injectParamCollector( + element: KSClassDeclaration, + paramsType: HashMap, + injectConfig: HashMap + ) { + for (field in element.getAllProperties()) { + val annotation = field.findAnnotationWithType() + if (annotation != null) { + val injectName = annotation.name.ifEmpty { field.simpleName.asString() } + paramsType[injectName] = field.typeExchange() + injectConfig[injectName] = annotation + } + } + } + } + +} + diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteDoc.java b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteDoc.java new file mode 100644 index 0000000000..6d413c3b7f --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteDoc.java @@ -0,0 +1,152 @@ +package com.gh.gamecenter.ksp.compiler.entity; + +import com.alibaba.fastjson.annotation.JSONField; + +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * Description route info, used for generate router map + * + * @author zhilong Contact me. + * @version 1.0 + * @since 2018/8/9 11:59 AM + */ +public class RouteDoc { + @JSONField(ordinal = 1) + private String group; + @JSONField(ordinal = 2) + private String path; + @JSONField(ordinal = 3) + private String description; + @JSONField(ordinal = 4) + private String prototype; + @JSONField(ordinal = 5) + private String className; + @JSONField(ordinal = 6) + private String type; + @JSONField(ordinal = 7) + private int mark; + @JSONField(ordinal = 8) + private List params; + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getPrototype() { + return prototype; + } + + public void setPrototype(String prototype) { + this.prototype = prototype; + } + + public void addPrototype(String prototype) { + if (StringUtils.isNotEmpty(getPrototype())) { + setPrototype(prototype); + } else { + setPrototype(getPrototype() + ", " + prototype); + } + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + if (StringUtils.isNotEmpty(description)) { + this.description = description; + } + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public int getMark() { + return mark; + } + + public void setMark(int mark) { + this.mark = mark; + } + + public List getParams() { + return params; + } + + public void setParams(List params) { + this.params = params; + } + + public static class Param { + @JSONField(ordinal = 1) + private String key; + @JSONField(ordinal = 2) + private String type; + @JSONField(ordinal = 3) + private String description; + @JSONField(ordinal = 4) + private boolean required; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + if (StringUtils.isNotEmpty(description)) { + this.description = description; + } + } + + public boolean isRequired() { + return required; + } + + public void setRequired(boolean required) { + this.required = required; + } + } +} diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMeta.java b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMeta.java new file mode 100644 index 0000000000..2c3db82840 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMeta.java @@ -0,0 +1,160 @@ +package com.gh.gamecenter.ksp.compiler.entity; + +import com.therouter.router.Autowired; + +import java.util.Map; + +import javax.lang.model.element.Element; + +/** + * It contains basic route information. + * + * @author Alex Contact me. + * @version 1.0 + * @since 16/8/24 09:45 + */ +public class RouteMeta { + private Element rawType; // Raw type of route + private Class destination; // Destination + private String path; // Path of route + private String group; // Group of route + private int priority = -1; // The smaller the number, the higher the priority + private int extra; // Extra data + private Map paramsType; // Param type + private String name; + + private Map injectConfig; // Cache inject config. + + public RouteMeta() { + } + + /** + * For versions of 'compiler' less than 1.0.7, contain 1.0.7 + * + * @param destination destination + * @param path path + * @param group group + * @param priority priority + * @param extra extra + * @return this + */ + public static RouteMeta build( Class destination, String path, String group, int priority, int extra) { + return new RouteMeta(null, destination, null, path, group, null, priority, extra); + } + + + /** + * Type + * + * @param rawType rawType + * @param destination destination + * @param path path + * @param group group + * @param paramsType paramsType + * @param priority priority + * @param extra extra + */ + public RouteMeta(Element rawType, Class destination, String name, String path, String group, Map paramsType, int priority, int extra) { + this.name = name; + this.destination = destination; + this.rawType = rawType; + this.path = path; + this.group = group; + this.paramsType = paramsType; + this.priority = priority; + this.extra = extra; + } + + public Map getParamsType() { + return paramsType; + } + + public RouteMeta setParamsType(Map paramsType) { + this.paramsType = paramsType; + return this; + } + + public Map getInjectConfig() { + return injectConfig; + } + + public void setInjectConfig(Map injectConfig) { + this.injectConfig = injectConfig; + } + + public Element getRawType() { + return rawType; + } + + public RouteMeta setRawType(Element rawType) { + this.rawType = rawType; + return this; + } + + public Class getDestination() { + return destination; + } + + public RouteMeta setDestination(Class destination) { + this.destination = destination; + return this; + } + + public String getPath() { + return path; + } + + public RouteMeta setPath(String path) { + this.path = path; + return this; + } + + public String getGroup() { + return group; + } + + public RouteMeta setGroup(String group) { + this.group = group; + return this; + } + + public int getPriority() { + return priority; + } + + public RouteMeta setPriority(int priority) { + this.priority = priority; + return this; + } + + public int getExtra() { + return extra; + } + + public RouteMeta setExtra(int extra) { + this.extra = extra; + return this; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "RouteMeta{" + + ", rawType=" + rawType + + ", destination=" + destination + + ", path='" + path + '\'' + + ", group='" + group + '\'' + + ", priority=" + priority + + ", extra=" + extra + + ", paramsType=" + paramsType + + ", name='" + name + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKsp.java b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKsp.java new file mode 100644 index 0000000000..a07ac18755 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKsp.java @@ -0,0 +1,33 @@ +package com.gh.gamecenter.ksp.compiler.entity; + +import com.google.devtools.ksp.symbol.KSClassDeclaration; +import com.therouter.router.Route; + +import java.util.Map; + +import javax.lang.model.element.Element; + +public class RouteMetaKsp extends RouteMeta { + private KSClassDeclaration kspRawTypeInner; // Raw type of ksp : KSClassDeclaration + + public RouteMetaKsp(Route route, Element rawType, Map paramsType) { + super(rawType, null, route.description(), route.path(), "", paramsType, 1, 1); + } + + /** + * Type + * + * @param route route + * @param kspRawType kspRawType + * @param paramsType paramsType + */ + public static RouteMeta build(Route route, KSClassDeclaration kspRawType, Map paramsType) { + RouteMetaKsp meta = new RouteMetaKsp(route, null, paramsType); + meta.kspRawTypeInner = kspRawType; + return meta; + } + + public KSClassDeclaration getKspRawTypeInner() { + return kspRawTypeInner; + } +} diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKspExt.kt b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKspExt.kt new file mode 100644 index 0000000000..5555c8fc51 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/RouteMetaKspExt.kt @@ -0,0 +1,6 @@ +package com.gh.gamecenter.ksp.compiler.entity + +import com.google.devtools.ksp.symbol.KSClassDeclaration + +internal val RouteMeta.kspRawType: KSClassDeclaration + get() = (this as RouteMetaKsp).kspRawTypeInner diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/TypeKind.java b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/TypeKind.java new file mode 100644 index 0000000000..f5fc2ff5c5 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/entity/TypeKind.java @@ -0,0 +1,19 @@ +package com.gh.gamecenter.ksp.compiler.entity; + +public enum TypeKind { + // Base type + BOOLEAN, + BYTE, + SHORT, + INT, + LONG, + CHAR, + FLOAT, + DOUBLE, + + // Other type + STRING, + SERIALIZABLE, + PARCELABLE, + OBJECT; +} diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/ArouterExt.kt b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/ArouterExt.kt new file mode 100644 index 0000000000..04093b813b --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/ArouterExt.kt @@ -0,0 +1,48 @@ +package com.gh.gamecenter.ksp.compiler.utils + +import com.gh.gamecenter.ksp.compiler.entity.TypeKind +import com.google.devtools.ksp.processing.KSPLogger +import com.google.devtools.ksp.symbol.KSPropertyDeclaration + +/** + * AutoWire Inject Field Type check and convert + * */ +internal fun KSPropertyDeclaration.typeExchange(): Int { + val type = this.type.resolve() + @Suppress("KotlinConstantConditions") + return when (type.declaration.qualifiedName?.asString()) { + Consts.KBYTE -> TypeKind.BYTE.ordinal + Consts.KSHORT -> TypeKind.SHORT.ordinal + Consts.KINTEGER -> TypeKind.INT.ordinal + Consts.KLONG -> TypeKind.LONG.ordinal + Consts.KFLOAT -> TypeKind.FLOAT.ordinal + Consts.KDOUBEL -> TypeKind.DOUBLE.ordinal + Consts.KBOOLEAN -> TypeKind.BOOLEAN.ordinal + Consts.KCHAR -> TypeKind.CHAR.ordinal + Consts.KSTRING -> TypeKind.STRING.ordinal + else -> { + when (this.isSubclassOf(listOf(Consts.PARCELABLE, Consts.SERIALIZABLE))) { + 0 -> TypeKind.PARCELABLE.ordinal + 1 -> TypeKind.SERIALIZABLE.ordinal + else -> TypeKind.OBJECT.ordinal + } + } + } +} + +/** + * Find module name from ksp arguments, please add this config + * " ksp { arg("AROUTER_MODULE_NAME", project.getName()) } " + * in your module's build.gradle + * */ +@Suppress("SpellCheckingInspection") +internal fun Map.findModuleName(logger: KSPLogger): String { + val name = this[Consts.KEY_MODULE_NAME] + return if (!name.isNullOrEmpty()) { + @Suppress("RegExpSimplifiable", "KotlinConstantConditions") + name.replace("[^0-9a-zA-Z_]+".toRegex(), "") + } else { + logger.error(Consts.NO_MODULE_NAME_TIPS_KSP) + throw RuntimeException("ARouter::Compiler >>> No module name, for more information, look at gradle log.") + } +} diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/Consts.java b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/Consts.java new file mode 100644 index 0000000000..c94095d06f --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/Consts.java @@ -0,0 +1,40 @@ +package com.gh.gamecenter.ksp.compiler.utils; + +/** + * Some consts used in processors + * + * @author Alex Contact me. + * @version 1.0 + * @since 16/8/24 20:18 + */ +public class Consts { + // Generate + public static final String SEPARATOR = "$$"; + public static final String PROJECT = "Router"; + public static final String NAME_OF_ROOT = PROJECT + SEPARATOR + "Root"; + public static final String PACKAGE_OF_GENERATE_DOCS = "com.gh.gamecenter.route.docs"; + + public static final String PARCELABLE = "android.os.Parcelable"; + + // Java type + public static final String SERIALIZABLE = "java.io.Serializable"; + // Kotlin type + private static final String KOTLIN = "kotlin"; + public static final String KBYTE = KOTLIN + ".Byte"; + public static final String KSHORT = KOTLIN + ".Short"; + public static final String KINTEGER = KOTLIN + ".Int"; + public static final String KLONG = KOTLIN + ".Long"; + public static final String KFLOAT = KOTLIN + ".Float"; + public static final String KDOUBEL = KOTLIN + ".Double"; + public static final String KBOOLEAN = KOTLIN + ".Boolean"; + public static final String KCHAR = KOTLIN + ".Char"; + public static final String KSTRING = KOTLIN + ".String"; + + public static final String NO_MODULE_NAME_TIPS_KSP = "These no module name, at 'build.gradle', like :\n" + + "ksp {\n" + + " arg(\"ROUTER_MODULE_NAME\", project.getName()) {\n" + + "}\n"; + + // Options of processor + public static final String KEY_MODULE_NAME = "ROUTER_MODULE_NAME"; +} \ No newline at end of file diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KSPLoggerWrapper.kt b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KSPLoggerWrapper.kt new file mode 100644 index 0000000000..5a1cde8c7c --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KSPLoggerWrapper.kt @@ -0,0 +1,43 @@ +package com.gh.gamecenter.ksp.compiler.utils + +import com.google.devtools.ksp.processing.KSPLogger +import com.google.devtools.ksp.symbol.KSNode + +class KSPLoggerWrapper(private val logger: KSPLogger) : KSPLogger { + companion object { + const val TAG = Consts.PROJECT + "::Compiler " + } + + override fun error(message: String, symbol: KSNode?) { + if (message.isNotEmpty()) { + logger.error("$TAG${message}", symbol) + } + } + + override fun exception(e: Throwable) { + logger.exception(e) + } + + /** + * When dev, please use logger.warn to print logo at terminal + * more detail can see this issue + * (No messages displayed when I use KSPLogger.logging and info.)[https://github.com/google/ksp/issues/1111] + * */ + override fun info(message: String, symbol: KSNode?) { + if (message.isNotEmpty()) { + logger.info("$TAG${message}", symbol) + } + } + + override fun logging(message: String, symbol: KSNode?) { + if (message.isNotEmpty()) { + logger.logging("$TAG${message}", symbol) + } + } + + override fun warn(message: String, symbol: KSNode?) { + if (message.isNotEmpty()) { + logger.warn("$TAG${message}", symbol) + } + } +} \ No newline at end of file diff --git a/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KspUtil.kt b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KspUtil.kt new file mode 100644 index 0000000000..cd46c2c6f2 --- /dev/null +++ b/feature/route_doc/src/main/java/com/gh/gamecenter/ksp/compiler/utils/KspUtil.kt @@ -0,0 +1,137 @@ +@file:OptIn(KotlinPoetKspPreview::class, KspExperimental::class) + +package com.gh.gamecenter.ksp.compiler.utils + +import com.google.devtools.ksp.KspExperimental +import com.google.devtools.ksp.getAnnotationsByType +import com.google.devtools.ksp.isAnnotationPresent +import com.google.devtools.ksp.processing.KSPLogger +import com.google.devtools.ksp.symbol.* +import com.google.devtools.ksp.symbol.Origin.KOTLIN +import com.google.devtools.ksp.symbol.Origin.KOTLIN_LIB +import com.squareup.kotlinpoet.ClassName +import com.squareup.kotlinpoet.TypeName +import com.squareup.kotlinpoet.ksp.KotlinPoetKspPreview +import com.squareup.kotlinpoet.ksp.toClassName +import com.squareup.kotlinpoet.ksp.toTypeName +import com.squareup.kotlinpoet.ksp.toTypeParameterResolver +import com.squareup.kotlinpoet.tags.TypeAliasTag + +@Suppress("unused") +internal fun KSClassDeclaration.isKotlinClass(): Boolean { + return origin == KOTLIN || + origin == KOTLIN_LIB || + isAnnotationPresent(Metadata::class) +} + +internal inline fun KSAnnotated.findAnnotationWithType(): T? { + return getAnnotationsByType(T::class).firstOrNull() +} + +internal inline fun KSPLogger.check(condition: Boolean, message: () -> String) { + check(condition, null, message) +} + +internal inline fun KSPLogger.check(condition: Boolean, element: KSNode?, message: () -> String) { + if (!condition) { + error(message(), element) + } +} + +/** + * Judge whether a class [KSClassDeclaration] is a subclass of another class [superClassName] + * https://www.raywenderlich.com/33148161-write-a-symbol-processor-with-kotlin-symbol-processing + * */ +internal fun KSClassDeclaration.isSubclassOf( + superClassName: String, +): Boolean { + val superClasses = superTypes.toMutableList() + while (superClasses.isNotEmpty()) { + val current: KSTypeReference = superClasses.first() + val declaration: KSDeclaration = current.resolve().declaration + when { + declaration is KSClassDeclaration && declaration.qualifiedName?.asString() == superClassName -> { + return true + } + declaration is KSClassDeclaration -> { + superClasses.removeAt(0) + superClasses.addAll(0, declaration.superTypes.toList()) + } + else -> { + superClasses.removeAt(0) + } + } + } + return false +} + +internal fun KSClassDeclaration.isSubclassOf(superClassNames: List): Int { + val superClasses = superTypes.toMutableList() + while (superClasses.isNotEmpty()) { + val current: KSTypeReference = superClasses.first() + val declaration: KSDeclaration = current.resolve().declaration + when { + declaration is KSClassDeclaration && (superClassNames.indexOf(declaration.qualifiedName?.asString())) != -1 -> { + return superClassNames.indexOf(declaration.qualifiedName?.asString()) + } + declaration is KSClassDeclaration -> { + superClasses.removeAt(0) + superClasses.addAll(0, declaration.superTypes.toList()) + } + else -> { + superClasses.removeAt(0) + } + } + } + return -1 +} + +internal fun KSPropertyDeclaration.isSubclassOf(superClassName: String): Boolean { + val propertyType = type.resolve().declaration + return if (propertyType is KSClassDeclaration) { + propertyType.isSubclassOf(superClassName) + } else { + false + } +} + +internal fun KSPropertyDeclaration.isSubclassOf(superClassNames: List): Int { + val propertyType = type.resolve().declaration + return if (propertyType is KSClassDeclaration) { + propertyType.isSubclassOf(superClassNames) + } else { + -1 + } +} + +internal fun String.quantifyNameToClassName(): ClassName { + val index = lastIndexOf(".") + return ClassName(substring(0, index), substring(index + 1, length)) +} + +/** + * such: val map = Map ==> Map (used for kotlinpoet for %T) + * */ +internal fun KSPropertyDeclaration.getKotlinPoetTTypeGeneric(): TypeName { + val classTypeParams = this.typeParameters.toTypeParameterResolver() + val typeName = this.type.toTypeName(classTypeParams) + // Fix: typealias-handling + // https://square.github.io/kotlinpoet/interop-ksp/#typealias-handling + // Alias class -> such as: var a = arrayList() -> ArrayList + typeName.tags[TypeAliasTag::class]?.let { + val typeAliasTag = (it as? TypeAliasTag)?.abbreviatedType + if (typeAliasTag != null) { + return typeAliasTag + } + } + return typeName +} + +/** + * such: val map = Map ==> Map (used for kotlinpoet for %T) + * such: val map = Map? ==> Map (used for kotlinpoet for %T) + * used in : public T navigation(Class service) , For Java Class (No generic, and without nullable) + * */ +internal fun KSPropertyDeclaration.getKotlinPoetTClass(): ClassName { + return this.type.resolve().toClassName() +} \ No newline at end of file diff --git a/feature/route_doc/src/main/java/com/therouter/router/Autowired.java b/feature/route_doc/src/main/java/com/therouter/router/Autowired.java new file mode 100644 index 0000000000..17c9b419fd --- /dev/null +++ b/feature/route_doc/src/main/java/com/therouter/router/Autowired.java @@ -0,0 +1,27 @@ +package com.therouter.router; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Annotation for parameters, which need autowired. + */ +@Retention(RetentionPolicy.SOURCE) +@Target({ElementType.FIELD}) +public @interface Autowired { + + String name() default ""; + + String args() default ""; + + int id() default 0; + + // If required, app will be crash when value is null. + // Primitive type wont be check! + boolean required() default false; + + // Description of the field + String description() default "No desc."; +} diff --git a/feature/route_doc/src/main/java/com/therouter/router/Route.java b/feature/route_doc/src/main/java/com/therouter/router/Route.java new file mode 100644 index 0000000000..7a777f71ad --- /dev/null +++ b/feature/route_doc/src/main/java/com/therouter/router/Route.java @@ -0,0 +1,38 @@ +package com.therouter.router; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * https://youtrack.jetbrains.com/issue/KT-12794 + * Kotlin 的 @Repeatable 不能注解到 Java class,得要到1.6才能支持,但是 Java 的却能注解到 Kotlin 代码,所以这个类只能写 Java 的 + * Created by ZhangTao on 17/8/11. + */ +@Retention(RetentionPolicy.SOURCE) +@Target({ElementType.TYPE}) +@Repeatable(Routes.class) +@kotlin.annotation.Repeatable +public @interface Route { + /** + * 路由path,不限格式,建议是一个url,允许多个path对应同一个Activity + */ + String path() default ""; + + /** + * 自定义事件,一般用来打开目标页面后做一个执行动作,例如随机页面弹出广告弹窗 + */ + String action() default ""; + + /** + * 页面描述,会被记录到路由表中,方便后期排查的时候知道每个path或Activity是什么业务 + */ + String description() default ""; + + /** + * 页面参数,自动写入intent中,允许写在路由表中动态下发修改默认值,或通过路由跳转时代码传入 + */ + String[] params() default {}; +} \ No newline at end of file diff --git a/feature/route_doc/src/main/java/com/therouter/router/Routes.java b/feature/route_doc/src/main/java/com/therouter/router/Routes.java new file mode 100644 index 0000000000..008baf7c5f --- /dev/null +++ b/feature/route_doc/src/main/java/com/therouter/router/Routes.java @@ -0,0 +1,15 @@ +package com.therouter.router; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Created by ZhangTao on 17/8/11. + */ +@Retention(RetentionPolicy.SOURCE) +@Target({ElementType.TYPE}) +public @interface Routes { + Route[] value(); +} diff --git a/feature/route_doc/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/feature/route_doc/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 0000000000..a725cdae65 --- /dev/null +++ b/feature/route_doc/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1 @@ +com.gh.gamecenter.ksp.compiler.RouteSymbolProcessorProvider \ No newline at end of file diff --git a/feature/sentry/build.gradle b/feature/sentry/build.gradle index c3f8316743..0f0af3f339 100644 --- a/feature/sentry/build.gradle +++ b/feature/sentry/build.gradle @@ -1,6 +1,6 @@ apply plugin: "com.android.library" apply plugin: "org.jetbrains.kotlin.android" -apply plugin: "kotlin-kapt" +apply plugin: 'com.google.devtools.ksp' android { @@ -25,16 +25,10 @@ android { kotlinOptions { jvmTarget = "1.8" } - - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } } dependencies { - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" implementation "io.sentry:sentry-android:${sentry}" implementation "io.sentry:sentry-android-fragment:${sentry}" diff --git a/feature/sentry/src/main/java/com/lg/SentryProviderImpl.kt b/feature/sentry/src/main/java/com/lg/SentryProviderImpl.kt index 69ab6a6c4b..493aa4a487 100644 --- a/feature/sentry/src/main/java/com/lg/SentryProviderImpl.kt +++ b/feature/sentry/src/main/java/com/lg/SentryProviderImpl.kt @@ -2,8 +2,8 @@ package com.lg import android.content.Context import android.text.TextUtils -import com.alibaba.android.arouter.facade.annotation.Route -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.router.Route +import com.therouter.TheRouter import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.HaloApp @@ -23,13 +23,9 @@ import io.sentry.SentryOptions import io.sentry.android.core.SentryAndroid import io.sentry.android.fragment.FragmentLifecycleIntegration -@Route(path = RouteConsts.provider.sentry, name = "Sentry 暴露服务") +@com.therouter.inject.ServiceProvider class SentryProviderImpl : ISentryProvider { - override fun init(context: Context?) { - - } - override fun init(context: Context, channel: String, flavor: String, versionName: String) { SentryAndroid.init(context) { options -> // Sentry 疯狂报 ANR (很大一部分还是莫名奇妙的 ANR)严重影响到其它闪退日志的收集 @@ -111,7 +107,7 @@ class SentryProviderImpl : ISentryProvider { } Utils.log("Sentry", "$eventId + [${kv.joinToString(" , ")}]") - val appProvider = ARouter.getInstance().build("/services/app").navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) // 仅 GH_206 渠道上报测试用的日志 if (appProvider?.getChannel() == "GH_206") { Sentry.captureEvent(sentryEvent) @@ -130,5 +126,4 @@ class SentryProviderImpl : ISentryProvider { } return false } - -} \ No newline at end of file +} diff --git a/gradle.properties b/gradle.properties index 6836ecaf40..eaa82ee54a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -82,6 +82,12 @@ android.enableJetifier=true kapt.use.worker.api = true kapt.incremental.apt = true +#ksp 编译 +#ksp.incremental=true +#ksp.incremental.log=true +# track classpath +#ksp.incremental.intermodule=true + # 数据绑定增量注解处理 android.databinding.incremental=true diff --git a/module_common/build.gradle b/module_common/build.gradle index d3325e2151..394281b856 100644 --- a/module_common/build.gradle +++ b/module_common/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'kotlin-parcelize' + id 'com.google.devtools.ksp' } android { @@ -38,12 +39,6 @@ android { viewBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { release { consumerProguardFiles 'proguard-rules.pro' @@ -61,13 +56,11 @@ android { dependencies { api fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' api "androidx.constraintlayout:constraintlayout:${constraintLayout}" api "androidx.asynclayoutinflater:asynclayoutinflater:${asynclayoutinflater}" - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" api "com.louiscad.splitties:splitties-views-dsl:${splitties}" api "com.louiscad.splitties:splitties-views-dsl-constraintlayout:${splitties}" api "com.github.nichbar:AndroidRomChecker:${romChecker}" @@ -80,7 +73,7 @@ dependencies { api "com.tencent.mm.opensdk:wechat-sdk-android-without-mta:${mta}" api "androidx.room:room-runtime:${room}" api "androidx.room:room-rxjava2:${room}" - kapt "androidx.room:room-compiler:${room}" + ksp("androidx.room:room-compiler:${room}") api "androidx.collection:collection-ktx:${collection}" api "androidx.activity:activity:${activity}" api "androidx.activity:activity-ktx:${activity}" @@ -102,8 +95,5 @@ dependencies { api "com.google.android:flexbox:${flexbox}" api "com.blankj:utilcodex:${blankjUtilCodex}" - debugApi "com.squareup.okio:okio:2.2.2" - debugApi "junit:junit:4.12" - api(project(path: ":module_core")) } \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/AppUncaughtHandler.java b/module_common/src/main/java/com/gh/gamecenter/common/base/AppUncaughtHandler.java index a916205264..18891e010a 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/AppUncaughtHandler.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/AppUncaughtHandler.java @@ -11,7 +11,7 @@ import android.os.Looper; import android.preference.PreferenceManager; import android.util.Log; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.Config; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.core.HaloApp; @@ -61,7 +61,7 @@ public class AppUncaughtHandler implements UncaughtExceptionHandler { saveCrashLogToSp(e); restart(mContext); - ISentryProvider sentryProvider = (ISentryProvider) ARouter.getInstance().build(RouteConsts.provider.sentry).navigation(); + ISentryProvider sentryProvider = TheRouter.get(ISentryProvider.class); if (sentryProvider != null) { sentryProvider.captureException(e); } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java index ec471933a6..6b14939447 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java @@ -36,10 +36,8 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.Lifecycle; -import com.alibaba.android.arouter.core.LogisticsCenter; -import com.alibaba.android.arouter.exception.NoRouteFoundException; -import com.alibaba.android.arouter.facade.Postcard; -import com.alibaba.android.arouter.launcher.ARouter; +import com.gh.gamecenter.core.iinterface.ISplashScreen; +import com.therouter.TheRouter; import com.blankj.utilcode.util.LanguageUtils; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.gamecenter.common.BuildConfig; @@ -190,15 +188,14 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus String xapkUnzipActivity = SPUtils.getString(Constants.SP_XAPK_UNZIP_ACTIVITY); String xapkUrl = SPUtils.getString(Constants.SP_XAPK_URL); Utils.log("页面重建了--" + xapkUnzipActivity + "--" + xapkUrl); - final Class destination = ExtensionsKt.toDestinationClass(RouteConsts.activity.splashActivity); - if (destination != null && this.getClass().isAssignableFrom(destination)) { + if (this instanceof ISplashScreen) { SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, ""); SPUtils.setString(Constants.SP_XAPK_URL, ""); return; } if (this.getClass().getName().equals(xapkUnzipActivity) && !TextUtils.isEmpty(xapkUrl)) { - IDownloadManagerProvider downloadManagerConfig = (IDownloadManagerProvider) ARouter.getInstance().build(RouteConsts.provider.downloadManager).navigation(); - IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation(); + IDownloadManagerProvider downloadManagerConfig = TheRouter.get(IDownloadManagerProvider.class); + IPackageInstallerProvider packageInstallerConfig = TheRouter.get(IPackageInstallerProvider.class); DownloadEntity downloadEntity = downloadManagerConfig.getDownloadEntityByUrl(xapkUrl); if (downloadEntity != null) { NewFlatLogUtils.INSTANCE.logGameInstall(downloadEntity.getGameId(), downloadEntity.getName(), "自动安装"); @@ -255,15 +252,8 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus @Override public void setContentView(View view) { if (PackageFlavorHelper.IS_TEST_FLAVOR) { - try { - final Postcard postcard = ARouter.getInstance().build(RouteConsts.activity.splashActivity); - LogisticsCenter.completion(postcard); - final Class destination = postcard.getDestination(); - if (!(this.getClass().isAssignableFrom(destination))) { - view = getRootViewWithEnvIndicator(view); - } - } catch (NoRouteFoundException e) { - e.printStackTrace(); + if (!(this instanceof ISplashScreen)) { + view = getRootViewWithEnvIndicator(view); } } super.setContentView(view); @@ -355,9 +345,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus if (BuildConfig.DEBUG) { tv.setOnLongClickListener(v -> { - IEntranceUtilsProvider entranceUtilsProvider = (IEntranceUtilsProvider) ARouter.getInstance() - .build(RouteConsts.provider.entranceUtils) - .navigation(); + IEntranceUtilsProvider entranceUtilsProvider = TheRouter.get(IEntranceUtilsProvider.class); entranceUtilsProvider.saveShortcut(this.getClass().getName(), getIntent().getExtras()); return true; }); @@ -408,7 +396,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) && !showDialog.isUsed()) { showDialog.setUsed(true); - IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation(); + IPackageInstallerProvider packageInstallerConfig = TheRouter.get(IPackageInstallerProvider.class); if (DOWNLOAD_HIJACK.equals(showDialog.getType())) { DownloadEntity downloadEntity = showDialog.getDownloadEntity(); DialogHelper.showQqSessionDialog(this);// 建议用户联系客服 @@ -454,19 +442,18 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus } , () -> { if (NetworkUtils.isQuickLoginEnabled(BaseActivity.this)) { - IQuickLoginProvider quickLoginConfig = (IQuickLoginProvider) ARouter.getInstance().build(RouteConsts.provider.quickLogin).navigation(); - quickLoginConfig.startLogin(BaseActivity.this, "你的账号已在另外一台设备登录多设备-重新登录", null); + IQuickLoginProvider quickLoginConfig = TheRouter.get(IQuickLoginProvider.class); + if (quickLoginConfig != null) { + quickLoginConfig.startLogin(BaseActivity.this, "你的账号已在另外一台设备登录多设备-重新登录", null, null); + } } else { - ARouter.getInstance().build(RouteConsts.activity.loginActivity) + TheRouter.build(RouteConsts.activity.loginActivity) .withString(EntranceConsts.KEY_ENTRANCE, "你的账号已在另外一台设备登录多设备-重新登录") .navigation(); } } ); - IQGameProvider qProvider = (IQGameProvider) ARouter - .getInstance() - .build(RouteConsts.provider.qGame) - .navigation(); + IQGameProvider qProvider = TheRouter.get(IQGameProvider.class); if (qProvider != null) { qProvider.stopAllMiniApp(true); // 关闭所有QQ小游戏进程 } @@ -829,7 +816,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus * 初始化图片加载器 */ private void initImageLoaderIfNeeded() { - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (appProvider != null) { appProvider.initImageLoaderIfNeeded(); } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/baselist/ListViewModel.java b/module_common/src/main/java/com/gh/gamecenter/common/baselist/ListViewModel.java index 85c942270e..ef79f3f61c 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/baselist/ListViewModel.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/baselist/ListViewModel.java @@ -7,7 +7,7 @@ import android.app.DownloadManager; import androidx.annotation.NonNull; import androidx.lifecycle.MutableLiveData; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.retrofit.BiResponse; import com.gh.gamecenter.common.retrofit.Response; @@ -110,7 +110,7 @@ public abstract class ListViewModel extends Ba } // 针对游戏的一些操作(过滤隐藏游戏,过滤隐藏APK吗,增加下载数据) - IHandleGameResponseProvider handleGameResponse = (IHandleGameResponseProvider) ARouter.getInstance().build(RouteConsts.provider.handleGameResponse).navigation(); + IHandleGameResponseProvider handleGameResponse = TheRouter.get(IHandleGameResponseProvider.class); if (handleGameResponse != null) { response = (List) handleGameResponse.handleGameResponse(response, mEntrance); } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java index 8e3d3c21fc..71c12d0658 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java @@ -1,12 +1,12 @@ package com.gh.gamecenter.common.constant; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.core.provider.IPackageUtilsProvider; import com.gh.gamecenter.core.utils.TimeUtils; public class Constants { - private static final IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); + private static final IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class); public final static int LIST_FOOTER_ITEM = 1; public final static int LIST_HEAD_ITEM = 1; @@ -25,8 +25,6 @@ public class Constants { public static final String SHOULD_SHOW_VIDEO_MOBILE_WARNING = "should_show_video_mobile_warning"; - public static final String GAME_DETAIL_COME_IN = "game_detail_come_in"; // 从游戏详情进入 - public static final String EB_QUIT_LOGIN = "quit_login"; public static final String EB_GAME_DETAIL = "eb_game_detail"; diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index 2288176822..574f8d4cae 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -11,8 +11,8 @@ public class EntranceConsts { public static final String KEY_TO = "to"; public static final String KEY_NEXT_TO = "next_to"; public static final String KEY_NEWSID = "newsId"; - public static final String KEY_GAMEID = "gameId"; public static final String KEY_GAME_ID = "game_id"; + public static final String KEY_GAMEID = KEY_GAME_ID; public static final String KEY_ID = "id"; public static final String KEY_URL = "url"; public static final String KEY_BUNDLE = "bundle"; @@ -117,6 +117,10 @@ public class EntranceConsts { public static final String KEY_PLATFORM = "platform"; public static final String KEY_GAME_NAME = "game_name"; + public static final String KEY_GAME_ENTITY = "game_entity"; + + public static final String KEY_DEFAULT_TAB = "default_tab"; + public static final String KEY_PLATFORMS = "platforms"; public static final String KEY_PLATFORMS_AUTO_DOWNLOAD = "platform_auto_download"; public static final String KEY_GAME_INFO = "game_info"; @@ -176,12 +180,13 @@ public class EntranceConsts { public static final String KEY_CATEGORY_TITLE = "category_title"; public static final String KEY_BLOCK_DATA = "blockData"; public static final String KEY_ASK_TAG = "askTag"; - public static final String KEY_SCROLL_TO_LIBAO = "libao"; + public static final String KEY_SCROLL_TO_LIBAO = "scroll_to_libao"; public static final String KEY_SCROLL_TO_SERVER = "scroll_to_server"; public static final String KEY_ASK_COLUMN_TAG = "askColumnTag"; public static final String KEY_COMMUNITY_ID = "community_id"; public static final String KEY_COMMUNITY_NAME = "community_name"; public static final String KEY_COMMUNITY_DATA = "communityData"; + public static final String KEY_COMMUNITY_TYPE = "community_type"; public static final String KEY_TRACE_EVENT = "trace_event"; public static final String KEY_SUBJECT_DATA = "subjectData"; public static final String KEY_SUBJECT_TYPE = "subjectType"; @@ -199,8 +204,8 @@ public class EntranceConsts { public static final String KEY_SCROLL_TO_COMMENT_AREA = "scroll_to_comment_area"; public static final String KEY_RATING_STAR_COUNT = "ratingStarCount"; public static final String KEY_QUESTION_MODERATOR_PATCH = "questionModeratorPatch"; - public static final String KEY_SKIP_GAME_COMMENT = "skipGameComment"; - public static final String KEY_OPEN_PLATFORM_WINDOW = "openPlatformWindow"; + public static final String KEY_COMMENT_AS_DEFAULT_TAB = "comment_as_default_tab"; + public static final String KEY_OPEN_PLATFORM_WINDOW = "open_platform_window"; public static final String KEY_OPEN_KEYBOARD = "openKeyboard"; public static final String KEY_PATH_VIDEO = "pathVideo"; public static final String KEY_VIDEO_ID = "videoId"; @@ -215,7 +220,7 @@ public class EntranceConsts { public static final String KEY_COLLECTION_NAME = "collectionName"; public static final String KEY_NAVIGATION_TITLE = "navigationTitle"; public static final String KEY_IMAGE_CROP_RATIO = "imageCropRatio"; - public static final String KEY_OPEN_VIDEO_STREAMING = "openVideoStreaming"; + public static final String KEY_OPEN_VIDEO_STREAMING = "open_video_streaming"; public static final String KEY_REFERER = "referer"; public static final String KEY_UUID = "uuid"; public static final String KEY_IS_HOME_VIDEO = "isHomeVideo"; @@ -351,4 +356,10 @@ public class EntranceConsts { public static final String KEY_SHOW_ADD_GAMES_DIALOG = "show_add_games_dialog"; public static final String KEY_IS_AUTO_LOAD = "key_is_auto_load"; + + public static final String TAB_TYPE_DESC = "详情"; + public static final String TAB_TYPE_TRENDS = "专区"; + public static final String TAB_TYPE_ARCHIVE = "云存档"; + public static final String TAB_TYPE_RATING = "评价"; + public static final String TAB_TYPE_BBS = "论坛"; } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt index fe52b9c9b9..49f714c023 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt @@ -15,6 +15,10 @@ object RouteConsts { const val libaoDetailActivity = "/app/libaoDetailActivity" const val fullScreenVideoActivity = "/app/FullScreenVideoActivity" + const val gameDetailActivity = "/activity/game_detail" + const val userHomeActivity = "/activity/user_home" + const val quickLoginActivity = "/activity/quick_login_activity" + const val aboutActivity = "/settings/AboutActivity" const val webActivity = "/setting/WebActivity" const val weiBoShareActivity = "/setting/weiBoShareActivity" @@ -34,102 +38,13 @@ object RouteConsts { } - object provider { - const val app = "/services/app" - const val buildConfig = "/services/buildConfig" - const val activation = "/services/activation" - const val directUtils = "/services/directUtils" - const val defaultUrlHandler = "/services/defaultUrlHandler" - const val config = "/services/config" - const val configSetting = "/services/configSetting" - const val packageUtils = "/services/packageUtils" - const val checkLogin = "/services/checkLogin" - const val dialogUtils = "/services/dialogUtils" - const val webActivity = "/services/webActivity" - const val downloadManager = "/services/downloadManager" - const val packageInstaller = "/services/packageInstaller" - const val packageHelper = "/services/packageHelper" - const val entranceUtils = "/services/entranceUtils" - const val reservationRepository = "/services/reservationRepository" - const val dataUtils = "/services/dataUtils" - const val errorHelper = "/services/errorHelper" - const val messageUnreadRepository = "/services/messageUnreadRepository" - const val logUtils = "/services/logUtils" - const val wechatHelper = "/services/wechatHelper" - const val timeUtil = "/services/timeUtil" - const val linkDirectUtils = "/services/linkDirectUtils" - const val handleGameResponse = "/services/handleGameResponse" - const val usageStatsHelper = "/services/usageStatsHelper" - const val mainActivity = "/services/mainActivity" - const val shellActivity = "/services/shellActivity" - const val browserInstallHelper = "/services/browserInstallHelper" - const val historyHelper = "/services/historyHelper" - const val updateManager = "/services/updateManager" - const val vhelper = "/services/vhelper" - const val regionSettingHelper = "/services/regionSettingHelper" - const val fixedRateJobHelper = "/services/fixedRateJobHelper" - const val bindingAdapters = "/services/bindingAdapters" - const val gameDetail = "/services/gameDetail" - const val packagesManager = "/services/packagesManager" - const val adHelper = "/services/adHelper" - const val commentUtils = "/services/commentUtils" - const val subject = "/services/subject" - const val messageDetail = "/services/messageDetail" - const val commentDetail = "/services/commentDetail" - const val newCommentDetail = "/services/newCommentDetail" - const val simpleAnswerDetail = "/services/simpleAnswerDetail" - const val gameCollectionDetail = "/services/gameCollectionDetail" - const val dataCollection = "/services/dataCollection" - const val shareCardActivity = "/services/shareCardActivity" - const val shareCardPicActivity = "/services/shareCardPicActivity" - const val concernActivity = "/services/concernActivity" - const val visitManager = "/services/visitManager" - const val commentManager = "/services/commentManager" - const val concernContentUtils = "/services/concernContentUtils" - const val concernGiftPackUtils = "/services/concernGiftPackUtils" - const val concernShareNews = "/services/concernShareNews" - const val libaoUtils = "/services/libaoUtils" - const val gameTrendsHelper = "/services/gameTrendsHelper" - const val searchTabUtils = "/services/SearchTabUtils" + object Action { + const val LOGIN_SUCCESS_ACTION = "action://login/success" + } - const val downloadButtonClickedHandler = "/downloadbutton/clickedHandler" - - const val userManager = "/login/userManager" - const val login = "/login/login" - - const val helpAndFeedback = "/help/helpAndFeedback" - - const val setting = "/settings/setting" - const val composeSetting = "/composeSetting/composeSetting" - - const val pkg = "/pkg/pkg" - const val pkgConfig = "/pkgConfig/pkgConfig" - const val floatingwindow = "/floatingwindow/floatingwindow" - - const val exposureManager = "/exposure/exposureManager" - - const val sensors = "/sensors/sensors" - - const val csjAd = "/csj/csj" - - const val oaid = "/oaid/oaid" - - const val concernInfo = "/message/concernInfo" - - const val qGame = "/qGame/qGame" - - const val push = "/push/push" - - const val realName = "/realName/realName" - - const val miniGameRecentPlayed = "/services/miniGameRecentPlayed" - const val sentry = "/sentry/sentry" - - const val vaAd = "/vaAd/vaAd" - - const val vaCore = "/vaCore/vaCore" - - const val quickLogin = "/quickLogin/quickLogin" + object QueryParams { + const val REQUIRE_LOGIN = "require_login" + const val SOURCE = "source" } } \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/dialog/ManageExternalStoragePermissionDialogFragment.kt b/module_common/src/main/java/com/gh/gamecenter/common/dialog/ManageExternalStoragePermissionDialogFragment.kt index 08f8b90b86..8e38c3dca1 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/dialog/ManageExternalStoragePermissionDialogFragment.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/dialog/ManageExternalStoragePermissionDialogFragment.kt @@ -13,7 +13,7 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.RequiresApi import androidx.fragment.app.FragmentActivity -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.BaseDialogFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.databinding.DialogAlertDefaultBinding @@ -37,7 +37,7 @@ class ManageExternalStoragePermissionDialogFragment : BaseDialogFragment() { contentTv.text = "需要所有文件访问权限,请打开权限设置页面" confirmTv.setOnClickListener { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider? + val appProvider = TheRouter.get(IAppProvider::class.java) appProvider?.setDisableSplashAdTemporarily(true) val intent = Intent().apply { action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION @@ -55,7 +55,7 @@ class ManageExternalStoragePermissionDialogFragment : BaseDialogFragment() { override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) AppExecutor.uiExecutor.executeWithDelay({ - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider? + val appProvider = TheRouter.get(IAppProvider::class.java) appProvider?.setDisableSplashAdTemporarily(false) }, 100) } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/dialog/NotificationHintDialogFragment.kt b/module_common/src/main/java/com/gh/gamecenter/common/dialog/NotificationHintDialogFragment.kt index 12cf0f417e..42bf82ce81 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/dialog/NotificationHintDialogFragment.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/dialog/NotificationHintDialogFragment.kt @@ -11,10 +11,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.R import com.gh.gamecenter.common.base.fragment.BaseDialogFragment -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.databinding.DialogNotificationHintBinding import com.gh.gamecenter.common.entity.NotificationStyleEntity import com.gh.gamecenter.common.entity.NotificationUgc @@ -88,8 +87,7 @@ class NotificationHintDialogFragment : BaseDialogFragment() { activateTv.setOnClickListener { dismissAllowingStateLoss() - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { //这种方案适用于 API 26, 即8.0(含8.0)以上可以用 val intent = Intent() diff --git a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt index 583e3adac4..b3cb0d104c 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt @@ -10,7 +10,7 @@ import android.os.DeadObjectException import android.provider.Settings import android.telephony.TelephonyManager import android.text.TextUtils -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.common.HaloApp @@ -34,11 +34,9 @@ object MetaUtil { fun refreshMeta() { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider - val buildConfigProvider = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider - val userManagerProvider = - ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider + val appProvider = TheRouter.get(IAppProvider::class.java) + val buildConfigProvider = TheRouter.get(IBuildConfigProvider::class.java) + val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java) m = Meta( mac = null, jnfj = getBase64EncodedIMEI(), @@ -77,7 +75,7 @@ object MetaUtil { } private fun getChannel(): String? { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) return appProvider?.getChannel() } @@ -87,7 +85,7 @@ object MetaUtil { @JvmStatic fun getIMEI(): String { return "" -// val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider +// val appProvider = TheRouter.get(IAppProvider::class.java) // if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { // return "" // } @@ -175,7 +173,7 @@ object MetaUtil { @JvmStatic fun getAndroidId(): String { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { return "" } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt b/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt index 07d82cbec1..5e9cbf3946 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/provider/IHelpAndFeedbackProvider.kt @@ -5,12 +5,12 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.common.base.fragment.BaseFragment import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType -interface IHelpAndFeedbackProvider : IProvider { +interface IHelpAndFeedbackProvider { fun isSuggestionActivity(activity: Activity): Boolean diff --git a/module_common/src/main/java/com/gh/gamecenter/common/provider/ILaunchAd.kt b/module_common/src/main/java/com/gh/gamecenter/common/provider/ILaunchAd.kt index 03dc6f6dfe..9656bc8a6a 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/provider/ILaunchAd.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/provider/ILaunchAd.kt @@ -4,9 +4,9 @@ import android.view.View import android.view.ViewGroup import android.view.ViewStub import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.template.IProvider -interface ILaunchAd : IProvider { + +interface ILaunchAd { fun requestAd( fragment: Fragment, container: ViewGroup, diff --git a/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpCacheInterceptor.java b/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpCacheInterceptor.java index 40678a9163..50aeabb4ac 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpCacheInterceptor.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpCacheInterceptor.java @@ -3,7 +3,7 @@ package com.gh.gamecenter.common.retrofit; import android.content.Context; import android.text.TextUtils; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.exposure.meta.MetaUtil; import com.gh.gamecenter.common.utils.NetworkUtils; @@ -44,7 +44,7 @@ public class OkHttpCacheInterceptor implements Interceptor { // 拦截参数缺失的非法请求 if (request.url().pathSegments().contains("")) { - IBuildConfigProvider buildConfig = (IBuildConfigProvider) ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation(); + IBuildConfigProvider buildConfig = TheRouter.get(IBuildConfigProvider.class); if (buildConfig.isDebug()) { Utils.log("OkHttpCacheInterceptor-> 已拦截参数缺失的请求:" + request.url().toString()); } @@ -88,9 +88,9 @@ public class OkHttpCacheInterceptor implements Interceptor { .build(); } - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); - IUserManagerProvider userManagerProvider = (IUserManagerProvider) ARouter.getInstance().build(RouteConsts.provider.userManager).navigation(); - IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); + IUserManagerProvider userManagerProvider = TheRouter.get(IUserManagerProvider.class); + IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class); String token = userManagerProvider.getToken(); String deviceId = appProvider.getGid(); String temporaryLocalDeviceId = appProvider.getTemporaryLocalDeviceId(); @@ -175,8 +175,8 @@ public class OkHttpCacheInterceptor implements Interceptor { */ private String addVersionAndChannel(String url) { if (TextUtils.isEmpty(url)) return url; - IBuildConfigProvider buildConfigProvider = (IBuildConfigProvider) ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IBuildConfigProvider buildConfigProvider = TheRouter.get(IBuildConfigProvider.class); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (url.contains("?")) { return url + "&version=" + buildConfigProvider.getVersionName() + "&channel=" + appProvider.getChannel(); } else { @@ -188,7 +188,7 @@ public class OkHttpCacheInterceptor implements Interceptor { * 为 url 添加用户 mark */ private String appendUserMarkIfNeeded(String url) { - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (TextUtils.isEmpty(url) || TextUtils.isEmpty(appProvider.getServerUserMark()) || url.contains("mark=")) { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpRetryInterceptor.kt b/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpRetryInterceptor.kt index 3f42a0cc2e..a3823e298b 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpRetryInterceptor.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/retrofit/OkHttpRetryInterceptor.kt @@ -3,9 +3,8 @@ package com.gh.gamecenter.common.retrofit import android.content.Context import android.os.Build import android.text.TextUtils -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.HaloApp -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.common.utils.DeviceUtils import com.gh.gamecenter.core.provider.IBuildConfigProvider @@ -61,8 +60,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In } if (response != null && token != null) { // TOKEN 过期处理 - val userManagerProvider = - ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider + val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java) userManagerProvider?.refreshToken(token, { val newBuilder = request.newBuilder() newBuilder.header("TOKEN", userManagerProvider.getToken()) @@ -80,8 +78,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In response = doRequest(chain, request) } } - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) // 上报网络错误,过滤 404 以及非用户可感知的请求 val api = pathSegmentsToString(request.url.pathSegments) if (tryCount == maxRetryCount + 1 @@ -92,7 +89,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In "网络错误", "访问接口", api, "网络状态", DeviceUtils.getNetwork(HaloApp.getInstance()), - "光环版本", buildConfig.getVersionName(), + "光环版本", buildConfig?.getVersionName(), "网络状态", DeviceUtils.getNetwork(HaloApp.getInstance()), "JNFJ", MetaUtil.getBase64EncodedIMEI(), "机型", Build.MODEL, diff --git a/module_common/src/main/java/com/gh/gamecenter/common/tracker/TrackerLogger.kt b/module_common/src/main/java/com/gh/gamecenter/common/tracker/TrackerLogger.kt index 54891bb0c8..3313fef1d0 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/tracker/TrackerLogger.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/tracker/TrackerLogger.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.common.tracker import android.content.Context -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.common.exposure.meta.MetaUtil.getBase64EncodedAndroidId @@ -127,7 +127,7 @@ object TrackerLogger { fun logAppLaunch(context: Context) { val jsonObject = JSONObject() val payloadObject = JSONObject() - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) tryCatchInRelease { payloadObject.put("launch_id", Tracker.launchId) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/CompressImageUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/CompressImageUtils.kt index 9019ddccd9..a20d7a1923 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/CompressImageUtils.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/CompressImageUtils.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.common.utils import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Matrix -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.HaloApp import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider @@ -35,7 +35,7 @@ object CompressImageUtils { */ @Throws(Exception::class) fun compressImageAndSaveToFile(imageFile: File, compressGif: Boolean): File { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val imageType = ImageInfoExtractor.getImageType(imageFile) // 小于某一个设定的值时,直接返回原图 if (imageType != ImageInfoExtractor.TYPE_ANIMATED_WEBP && imageFile.length() < configProvider?.getUploadLimitSize() ?: compressLimitSize) { @@ -110,7 +110,7 @@ object CompressImageUtils { val longSide = Math.max(height, width) //最长边 val shortSide = Math.min(height, width) //最短边 val scale = longSide.toFloat() / shortSide // 长短边比例 - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val compressLimit = configProvider?.getSize() ?: defaultCompressBorder if (longSide > compressLimit && shortSide > compressLimit) { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/DataLogUtils.java b/module_common/src/main/java/com/gh/gamecenter/common/utils/DataLogUtils.java index de20fb6778..bb9445555b 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/DataLogUtils.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/DataLogUtils.java @@ -2,7 +2,7 @@ package com.gh.gamecenter.common.utils; import android.content.Context; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.exposure.meta.MetaUtil; import com.gh.gamecenter.common.loghub.LoghubUtils; @@ -51,8 +51,8 @@ public class DataLogUtils { // 上传日志 public static void uploadLog(Context context, String topic, Map map) { - IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); String version = packageUtilsConfig.getGhVersionName(); String user = Installation.getUUID(context); String channel = appProvider.getChannel(); diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/DialogHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/DialogHelper.kt index e795f11f81..ccf4ce58a4 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/DialogHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/DialogHelper.kt @@ -23,7 +23,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.R import com.gh.gamecenter.common.base.TrackableDialog import com.gh.gamecenter.common.callback.ConfirmListener @@ -520,17 +520,7 @@ object DialogHelper { "检查升级", "取消", confirmClickCallback = { - val isComposeEnabled = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() != null - } else { - false - } - - val settingProvider: ISettingProvider? = if (isComposeEnabled) { - ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() as? ISettingProvider - } else { - ARouter.getInstance().build(RouteConsts.provider.setting).navigation() as? ISettingProvider - } + val settingProvider = TheRouter.get(ISettingProvider::class.java) context.startActivity(settingProvider?.getAboutIntent(context, true)) }, @@ -778,14 +768,13 @@ object DialogHelper { // 网络劫持时 打开QQ客户端,创建临时会话 @JvmStatic fun showQqSessionDialog(context: Context) { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as IConfigProvider - val directProvider = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as IDirectProvider - val qq = configProvider.getQQ() + val configProvider = TheRouter.get(IConfigProvider::class.java) + val directProvider = TheRouter.get(IDirectProvider::class.java) + val qq = configProvider?.getQQ() ?: "" showDialog( context, "警告", "您当前网络环境异常,下载地址可能被运营商恶意替换(网络劫持)" + ",如多次下载失败,请联系客服获取正确的下载地址(客服QQ:" + qq + ")", "前往QQ", "取消", - { directProvider.directToQqConversation(context, qq) }, + { directProvider?.directToQqConversation(context, qq) }, extraConfig = Config(centerTitle = true) ) } @@ -801,10 +790,7 @@ object DialogHelper { cancelText = context.getString(R.string.unspported_feature_dialog_cancel_text), confirmClickCallback = { if (context is FragmentActivity) { - val updateManager = ARouter - .getInstance() - .build(RouteConsts.provider.updateManager) - .navigation() as? IUpdateManagerProvider + val updateManager = TheRouter.get(IUpdateManagerProvider::class.java) updateManager?.checkUpdate(context, false) } }, diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/EnvHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/EnvHelper.kt index bd25c31955..caf6f9a3ad 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/EnvHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/EnvHelper.kt @@ -1,5 +1,7 @@ package com.gh.gamecenter.common.utils +import android.R.attr.gravity +import android.R.attr.orientation import android.app.AlertDialog import android.content.Context import android.content.Intent @@ -9,7 +11,7 @@ import android.widget.EditText import android.widget.LinearLayout import android.widget.TextView import androidx.core.content.ContextCompat -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.R import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts @@ -29,10 +31,7 @@ object EnvHelper { @JvmStatic val isGATApp: Boolean by lazy { - val buildConfig = ARouter - .getInstance() - .build(RouteConsts.provider.buildConfig) - .navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) buildConfig?.isGATApp() ?: false } @@ -40,17 +39,13 @@ object EnvHelper { @JvmStatic val logProducerProject: String by lazy { - val buildConfig = ARouter - .getInstance() - .build(RouteConsts.provider.buildConfig) - .navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) buildConfig?.getLogProducerProject() ?: DEFAULT_LOG_PRODUCER_PROJECT } @JvmStatic fun getHost(): String { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) return if (!PackageFlavorHelper.IS_TEST_FLAVOR) { buildConfig?.getApiHost() ?: "" } else { @@ -64,8 +59,7 @@ object EnvHelper { @JvmStatic fun getVHost(): String { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) return if (!PackageFlavorHelper.IS_TEST_FLAVOR) { buildConfig?.getVDevApiHost() ?: "" } else { @@ -79,8 +73,7 @@ object EnvHelper { @JvmStatic fun getNewHost(): String { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) return if (!PackageFlavorHelper.IS_TEST_FLAVOR) { buildConfig?.getNewApiHost() ?: "" } else { @@ -94,21 +87,19 @@ object EnvHelper { @JvmStatic fun getWGameCPMHost(): String { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) return buildConfig?.getWGameCPMApiHost() ?: "" } @JvmStatic fun getWGameCPMBusiAppId(): String { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) return buildConfig?.getWGameCPMBusiAppId() ?: "" } fun showChangeChannelDialog(context: Context, restartAfterChanges: Boolean = false) { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) val layout = LinearLayout(context).apply { layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt index f1faaaee55..3114e17e98 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt @@ -13,6 +13,7 @@ import android.graphics.Color import android.graphics.Rect import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable +import android.net.Uri import android.os.Build import android.text.* import android.text.format.Formatter @@ -43,15 +44,13 @@ import androidx.viewpager.widget.ViewPager import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature import com.airbnb.lottie.LottieAnimationView -import com.alibaba.android.arouter.core.LogisticsCenter -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.drawee.view.SimpleDraweeView import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.R import com.gh.gamecenter.common.callback.SimpleCallback import com.gh.gamecenter.common.constant.Config import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.gamecenter.common.view.ExpandTextView import com.gh.gamecenter.core.HaloApp @@ -407,8 +406,7 @@ 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 = TheRouter.get(ICheckLoginProvider::class.java) checkLoginConfig?.checkLogin(this, entrance, action) } @@ -459,11 +457,9 @@ 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? IDialogUtilsProvider + val provider = TheRouter.get(IDirectProvider::class.java) + val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java) + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) { dialogUtils?.showRegulationTestDialog(requireContext(), { provider?.directToRegulationTestPage(requireContext()) }, @@ -474,11 +470,9 @@ 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? IDialogUtilsProvider + val provider = TheRouter.get(IDirectProvider::class.java) + val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java) + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) { dialogUtils?.showRegulationTestDialog(this, { provider?.directToRegulationTestPage(this) }, @@ -954,11 +948,9 @@ fun CharSequence.interceptUrlSpanAndRoundImageSpan( 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 IDefaultUrlHandlerProvider - if (!provider.interceptUrl(widget.context, it.url, "", sourceEntrance = sourceEntrance)) { + val webActivityProvider = TheRouter.get(IWebProvider::class.java) + val provider = TheRouter.get(IDefaultUrlHandlerProvider::class.java) + if (provider != null && !provider.interceptUrl(widget.context, it.url, "", sourceEntrance = sourceEntrance)) { webActivityProvider?.getIntent(widget.context, it.url, true)?.run { widget.context.startActivity(this) } @@ -1130,11 +1122,10 @@ fun DownloadEntity.putGameCategory(gameCategory: String) { } 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? IPackageUtilsProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) val processName = packageUtilsConfig?.obtainProcessName() + if (processName == null || buildConfig?.getApplicationId() == processName) { f.invoke() } else { @@ -1154,7 +1145,7 @@ inline fun debugOnly(f: () -> Unit) { } inline fun testChannelOnly(f: () -> Unit) { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) if (appProvider?.getChannel() == Config.DEFAULT_CHANNEL) { f() } @@ -1590,20 +1581,6 @@ fun LottieAnimationView.setDownloadTipsAnimation(isPlaying: Boolean = false) { } } -/** - * ARouter根据路由获取Class - */ -fun String.toDestinationClass(): Class<*>? { - try { - val postcard = ARouter.getInstance().build(this) - LogisticsCenter.completion(postcard) - return postcard.destination - } catch (e: Exception) { - e.printStackTrace() - } - return null -} - /** * RGB颜色转HSV颜色 */ @@ -1615,6 +1592,23 @@ fun List.colorRGBToHSV(): FloatArray { return colorHSV } +/** + * 获取没有 host 的 uri String + */ +fun Uri.dropSchemeAndHost(): String { + // Get the components of the URI + val path = path + val query = query + val fragment = fragment + + // Build the string without the host + return StringBuilder().apply { + path?.let { append(it) } + query?.let { append("?$it") } + fragment?.let { append("#$it") } + }.toString() +} + /** * 转HSV颜色 */ diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt index 0da28a1aaa..a3cabcf434 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/ImageUtils.kt @@ -11,12 +11,12 @@ import android.text.TextUtils import android.view.View import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat +import com.therouter.TheRouter import androidx.fragment.app.Fragment import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner -import com.alibaba.android.arouter.launcher.ARouter import com.facebook.common.executors.CallerThreadExecutor import com.facebook.common.references.CloseableReference import com.facebook.datasource.DataSource @@ -94,7 +94,7 @@ object ImageUtils { } fun getUploadFileMaxSize(): Long { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val uploadLimitSize = configProvider?.getUploadLimitSize() if (uploadLimitSize != null) { return uploadLimitSize @@ -104,7 +104,7 @@ object ImageUtils { @JvmStatic fun getDefaultGifRule(): String { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val gifConfig = configProvider?.getGif() if (gifConfig != null) { return gifConfig @@ -114,7 +114,7 @@ object ImageUtils { @JvmStatic fun getWatermarkWidthGifRule(width: Int?): String { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val gifConfig = configProvider?.getGitThumb() val gifWaterMark = configProvider?.getGifWaterMark() if (gifConfig != null && gifWaterMark != null) { @@ -125,7 +125,7 @@ object ImageUtils { @JvmStatic fun getLimitWidthRule(width: Int?): String { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val jpegConfig = configProvider?.getJpeg() if (jpegConfig != null) { return "$jpegConfig,w_${width ?: 0}" @@ -138,7 +138,7 @@ object ImageUtils { */ @JvmStatic private fun limitWidthWithRuleIfPossible(imageUrl: String?, width: Int?, loadAsAnimatedImage: Boolean = true): String? { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) var jpegConfig = configProvider?.getJpeg() var webpConfig = configProvider?.getWebp() ?: configProvider?.getGif() ?: "" @@ -393,8 +393,7 @@ object ImageUtils { if (width > 0) { val ratioHeight = (width / processor.cutRatio).toInt() if (ratioHeight > 0) { - val configProvider = - ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val cropSuffix = configProvider?.getImageCropSuffix() ?: "" @@ -702,7 +701,7 @@ object ImageUtils { if (url.startsWith("res:")) return url val idealSize = getIdealIconSize(width) - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) val resizeConfig = configProvider?.getImageResizeSuffix() ?: "?x-oss-process=image/resize" return "$url$resizeConfig,h_$idealSize,w_$idealSize".also { addCachedUrl(it) } @@ -721,7 +720,7 @@ object ImageUtils { } fun getVideoSnapshot(videoUrl: String, progress: Long): String { - val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val configProvider = TheRouter.get(IConfigProvider::class.java) return if (!configProvider?.getVideoSnapshotSuffix().isNullOrEmpty()) { "$videoUrl${configProvider?.getVideoSnapshotSuffix()},t_$progress,f_jpg,w_0,h_0,ar_auto" } else { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/LogUtils.java b/module_common/src/main/java/com/gh/gamecenter/common/utils/LogUtils.java index 75eedbf55b..f1703f0d1a 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/LogUtils.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/LogUtils.java @@ -2,7 +2,7 @@ package com.gh.gamecenter.common.utils; import android.annotation.SuppressLint; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.BuildConfig; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.entity.ShareResultEntity; @@ -36,7 +36,7 @@ public class LogUtils { public static JSONObject getMetaObject() { Meta meta = MetaUtil.INSTANCE.getMeta(); JSONObject metaObject = new JSONObject(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); try { metaObject.put("dia", MetaUtil.getBase64EncodedAndroidId()); metaObject.put("android_sdk", meta.getAndroid_sdk()); @@ -62,7 +62,7 @@ public class LogUtils { public static JSONObject getNewMetaObject() { Meta meta = MetaUtil.INSTANCE.getMeta(); JSONObject metaObject = new JSONObject(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); try { metaObject.put("dia", MetaUtil.getBase64EncodedAndroidId()); metaObject.put("android_sdk", meta.getAndroid_sdk()); diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/NetworkUtils.java b/module_common/src/main/java/com/gh/gamecenter/common/utils/NetworkUtils.java index 67ad102dbe..e780161109 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/NetworkUtils.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/NetworkUtils.java @@ -4,7 +4,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.core.provider.IConfigProvider; import com.gh.gamecenter.core.provider.IQuickLoginProvider; @@ -89,15 +89,15 @@ public class NetworkUtils { * networktype字段获取网络状态:0.未知;1.流量 2.wifi;3.数据流量+wifi */ public static boolean isOpenMobileData(Context context) { - Object navigation = ARouter.getInstance().build(RouteConsts.provider.quickLogin).navigation(); - if (navigation instanceof IQuickLoginProvider) { - return ((IQuickLoginProvider) navigation).isOpenMobileData(context); + IQuickLoginProvider navigation = TheRouter.get(IQuickLoginProvider.class); + if (navigation != null) { + return navigation.isOpenMobileData(context); } return false; } public static boolean isJiguangQuickLoginSwitch() { - IConfigProvider configProvider = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation(); + IConfigProvider configProvider = TheRouter.get(IConfigProvider.class); if (configProvider != null) { return configProvider.isJiguangSwitch(); } else { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/NotificationHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/NotificationHelper.kt index 05aeb4ec75..35fa481eda 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/NotificationHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/NotificationHelper.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.common.utils import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import androidx.core.app.NotificationManagerCompat -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.HaloApp import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts @@ -20,8 +20,7 @@ object NotificationHelper { @JvmStatic fun showNotificationHintDialog(ugc: NotificationUgc, callBack: ((isShow: Boolean) -> Unit)? = null) { val showedNewVersion = SPUtils.getInt(Constants.SP_SHOWED_NOTIFICATION_NEW_VERSION, 0) - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) val currentVersion = packageUtilsConfig?.getGhVersionCode() ?: 0 // 版本升级后重置数据 if (currentVersion > showedNewVersion) { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt index 0b3a734e58..7b36c63395 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt @@ -25,7 +25,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.FragmentActivity -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.R import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts @@ -150,8 +150,7 @@ object PermissionHelper { when { permission.granted -> { // 获得存储权限后刷新 gid 避免下载仍需实名 - (ARouter.getInstance().build(RouteConsts.provider.app) - .navigation() as? IAppProvider)?.refreshGid() + TheRouter.get(IAppProvider::class.java)?.refreshGid() // 延迟 100ms 确保能够正常获取到 gid AppExecutor.uiExecutor.executeWithDelay({ @@ -502,8 +501,7 @@ object PermissionHelper { uiModificationCallback = { it.hintTv.setTextColor(ContextCompat.getColor(context, R.color.text_theme)) it.hintTv.setOnClickListener { - val provider = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val provider = TheRouter.get(IDirectProvider::class.java) provider?.directToWebView(context, Constants.PERMISSION_SCENARIO_ADDRESS, "(权限弹窗)") } it.contentTv.setTextColor(ContextCompat.getColor(context, R.color.text_primary)) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt index 008cc1c48d..1e7ef47468 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.common.utils import android.app.Application -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.SensorsEvent @@ -306,7 +306,7 @@ object SensorsBridge { private var mIsSensorsEnabled = false private val mSensor by lazy { - ARouter.getInstance().build(RouteConsts.provider.sensors).navigation() as? ISensorsProvider + TheRouter.get(ISensorsProvider::class.java) } @JvmStatic diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/ShareUtils.java b/module_common/src/main/java/com/gh/gamecenter/common/utils/ShareUtils.java index bda54646ab..5f055a11fa 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/ShareUtils.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/ShareUtils.java @@ -24,7 +24,7 @@ import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.R; import com.gh.gamecenter.common.callback.BiCallback; import com.gh.gamecenter.common.constant.EntranceConsts; @@ -144,7 +144,7 @@ public class ShareUtils { private Context mContext; // application context //QQ或者QQ空间分享回调处理 - private IAppProvider mAppProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + private IAppProvider mAppProvider = TheRouter.get(IAppProvider.class); public IUiListener QqShareListener = new IUiListener() { @Override @@ -245,7 +245,7 @@ public class ShareUtils { }; private ShareUtils(Context context) { - IConfigProvider configProvider = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation(); + IConfigProvider configProvider = TheRouter.get(IConfigProvider.class); Tencent.setIsPermissionGranted(true); mContext = context.getApplicationContext(); @@ -262,7 +262,7 @@ public class ShareUtils { //检查是否安装手机QQ public static boolean isQQClientAvailable(Context context) { - IPackageUtilsProvider packageUtilsImpl = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); + IPackageUtilsProvider packageUtilsImpl = TheRouter.get(IPackageUtilsProvider.class); return packageUtilsImpl.isInstalledWithLauncherIcon(context, "com.tencent.mobileqq") || packageUtilsImpl.isInstalledWithLauncherIcon(context, "com.tencent.tim"); @@ -865,7 +865,7 @@ public class ShareUtils { } Activity activity = mActivity.get(); if (activity != null) { - ARouter.getInstance().build(RouteConsts.activity.weiBoShareActivity) + TheRouter.build(RouteConsts.activity.weiBoShareActivity) .withString(EntranceConsts.KET_SHARE_STYLE, "NORMAL") .withString(EntranceConsts.KET_TITLE, mTitle) .withString(EntranceConsts.KET_SHAREICON, shareIcon) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt index 9859f8be7f..9fa7f81cc5 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt @@ -13,7 +13,7 @@ import android.widget.EditText import android.widget.TextView import androidx.annotation.ColorRes import androidx.core.content.ContextCompat -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.HaloApp import com.gh.gamecenter.common.R import com.gh.gamecenter.common.callback.SimpleCallback @@ -350,10 +350,7 @@ object TextHelper { override fun onCallback(arg: String) { val pattern = Pattern.compile(PROTOCOL_ADDRESS_REGEX) if (pattern.matcher(arg).find()) { - val directUtils = ARouter - .getInstance() - .build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToWebView(context, arg, entrance) } else { val application = HaloApp.getInstance() diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/TimestampUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/TimestampUtils.kt index 284b020315..b3e324ec08 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/TimestampUtils.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/TimestampUtils.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.common.utils import androidx.collection.arrayMapOf -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider @@ -80,12 +80,12 @@ object TimestampUtils { } val appProvider = - ARouter.getInstance().build(RouteConsts.provider.app).navigation() as IAppProvider + TheRouter.get(IAppProvider::class.java) if (url.isBlank()) return url // 测试环境直接添加时间戳 - return if (BuildConfig.DEBUG || appProvider.getChannel().lowercase().contains("refresh")) { + return if (BuildConfig.DEBUG || appProvider?.getChannel()?.lowercase()?.contains("refresh") == true) { getCurrentTimeStampUrl(url) } else { getCDTimeStampUrl(url) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/view/UrlInterceptedLinkMovementMethod.kt b/module_common/src/main/java/com/gh/gamecenter/common/view/UrlInterceptedLinkMovementMethod.kt index af02d9b9aa..6e8315fe62 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/view/UrlInterceptedLinkMovementMethod.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/view/UrlInterceptedLinkMovementMethod.kt @@ -9,7 +9,7 @@ import android.view.MotionEvent import android.view.ViewGroup import android.view.ViewParent import android.widget.TextView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDefaultUrlHandlerProvider @@ -36,8 +36,7 @@ class UrlInterceptedLinkMovementMethod : LinkMovementMethod() { val link = links[0] if (action == MotionEvent.ACTION_UP) { if (link is URLSpan && link.url.contains("ghzhushou")) { - val provider = ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler) - .navigation() as? IDefaultUrlHandlerProvider + val provider = TheRouter.get(IDefaultUrlHandlerProvider::class.java) provider?.interceptUrl(widget.context, link.url, "") } else { link.onClick(widget) diff --git a/module_core/build.gradle b/module_core/build.gradle index a8becfeedf..3a61d7dc85 100644 --- a/module_core/build.gradle +++ b/module_core/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -17,13 +18,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildFeatures { viewBinding true } @@ -43,10 +37,6 @@ android { } dependencies { - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - api "androidx.core:core-ktx:${core}" api "androidx.recyclerview:recyclerview:${recyclerView}" api "androidx.appcompat:appcompat:${appCompat}" @@ -83,8 +73,9 @@ dependencies { exclude group: 'com.facebook.fresco' }) - api "com.alibaba:arouter-api:$arouterVersion" - kapt "com.alibaba:arouter-compiler:$arouterVersion" + api "cn.therouter:router:${routerVersion}" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" api project(':libraries:LGLibrary') api project(':libraries:QQShare') diff --git a/module_core/src/main/java/com/gh/gamecenter/core/iinterface/ISplashScreen.kt b/module_core/src/main/java/com/gh/gamecenter/core/iinterface/ISplashScreen.kt new file mode 100644 index 0000000000..dbf141d201 --- /dev/null +++ b/module_core/src/main/java/com/gh/gamecenter/core/iinterface/ISplashScreen.kt @@ -0,0 +1,6 @@ +package com.gh.gamecenter.core.iinterface + +/** + * 没啥,就是一个启动页的标记,告诉其它类这是一个启动页 + */ +interface ISplashScreen \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IActivationProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IActivationProvider.kt deleted file mode 100644 index 49528bb70f..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IActivationProvider.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.gh.gamecenter.core.provider - -import com.alibaba.android.arouter.facade.template.IProvider - -interface IActivationProvider : IProvider { - fun sendActivationInfo() -} \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt index 64f1e252c4..7d79aad969 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt @@ -1,9 +1,10 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider +import com.therouter.inject.Singleton -interface IAppProvider : IProvider { +@Singleton +interface IAppProvider { fun getAppName(): String fun getAppVersion(): String diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt index b9b495e4a5..36141a246d 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IBrowserInstallHelperProvider : IProvider { + +interface IBrowserInstallHelperProvider { fun isUseBrowserToInstallEnabled(): Boolean fun shouldUseBrowserToInstall(): Boolean fun logSwitchInstallSettingEvent() diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IBuildConfigProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBuildConfigProvider.kt index ca4fe430e6..e26b060f63 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IBuildConfigProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBuildConfigProvider.kt @@ -1,8 +1,9 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider +import com.therouter.inject.Singleton -interface IBuildConfigProvider : IProvider { +@Singleton +interface IBuildConfigProvider { fun getApplicationId(): String fun getVersionName(): String diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICheckLoginProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICheckLoginProvider.kt index 36c4bd6011..6a04e15b89 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICheckLoginProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICheckLoginProvider.kt @@ -1,8 +1,7 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface ICheckLoginProvider : IProvider { +interface ICheckLoginProvider { fun checkLogin(context: Context, entrance: String, action: (() -> Unit)? = null) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICommentManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICommentManagerProvider.kt index 9565a76566..63f481afda 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICommentManagerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICommentManagerProvider.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface ICommentManagerProvider : IProvider { + +interface ICommentManagerProvider { fun addUrl(ids: String) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernArticleUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernArticleUtilsProvider.kt index 336bb18999..415b74b900 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernArticleUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernArticleUtilsProvider.kt @@ -6,9 +6,9 @@ import android.view.ViewGroup import android.widget.LinearLayout import android.widget.TextView import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.facade.template.IProvider -interface IConcernArticleUtilsProvider : IProvider { + +interface IConcernArticleUtilsProvider { fun addContentPic(context: Context, linearLayout: LinearLayout, list: List, entrance: String, width: Int) fun createArticleBinding(parent: ViewGroup): ViewBinding diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernGiftPackUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernGiftPackUtilsProvider.kt index cb1d38051e..83e9f3cdb2 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernGiftPackUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernGiftPackUtilsProvider.kt @@ -4,9 +4,9 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.facade.template.IProvider -interface IConcernGiftPackUtilsProvider : IProvider { + +interface IConcernGiftPackUtilsProvider { fun createBinding(parent: ViewGroup): ViewBinding diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernProvider.kt index de02ce22bf..729aef9327 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernProvider.kt @@ -2,8 +2,8 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface IConcernProvider : IProvider { + +interface IConcernProvider { fun getIntent(context: Context, entrance: String): Intent } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernShareNewsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernShareNewsProvider.kt index 43894e14c1..e55dafcf91 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernShareNewsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConcernShareNewsProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import androidx.appcompat.app.AppCompatActivity -import com.alibaba.android.arouter.facade.template.IProvider -interface IConcernShareNewsProvider : IProvider { + +interface IConcernShareNewsProvider { fun share(activity: AppCompatActivity, shortId: String?, id: String?, gameIcon: String?, title: String?) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt index 26d91425fa..64c2e7f5ec 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IConfigProvider : IProvider { + +interface IConfigProvider { fun getTencentAppId(): String fun getWechatAppId(): String fun getWechatSecret(): String diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICsjAdProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICsjAdProvider.kt index a8e5889bc5..91f275ee8a 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ICsjAdProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ICsjAdProvider.kt @@ -4,9 +4,9 @@ import android.app.Activity import android.content.Context import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.template.IProvider -interface ICsjAdProvider : IProvider { + +interface ICsjAdProvider { fun initSDK(context: Context, id: String, oaid: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDataUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDataUtilsProvider.kt index b93e26729b..234278c149 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDataUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDataUtilsProvider.kt @@ -1,9 +1,5 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider - -interface IDataUtilsProvider : IProvider { - +interface IDataUtilsProvider { fun getDeviceCertification() - } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDefaultUrlHandlerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDefaultUrlHandlerProvider.kt index 3e67425bfd..12b85a61e9 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDefaultUrlHandlerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDefaultUrlHandlerProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IDefaultUrlHandlerProvider : IProvider { + +interface IDefaultUrlHandlerProvider { fun interceptUrl( context: Context, @@ -12,4 +12,5 @@ interface IDefaultUrlHandlerProvider : IProvider { bringAppToFront: Boolean = false, sourceEntrance: String = "" ): Boolean + } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt index a0ed6805c5..d19fe7a095 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt @@ -2,9 +2,9 @@ package com.gh.gamecenter.core.provider import android.app.Dialog import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IDialogUtilsProvider : IProvider { + +interface IDialogUtilsProvider { fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt index 0b9cea9431..5bc2f87610 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt @@ -3,9 +3,9 @@ package com.gh.gamecenter.core.provider import android.app.Activity import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.template.IProvider -interface IDirectProvider : IProvider { + +interface IDirectProvider { fun directToWebView(context: Context, url: String, entrance: String? = null) fun directToRegulationTestPage(context: Context) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDownloadManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDownloadManagerProvider.kt index 82b25ef669..1f50dfeddb 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDownloadManagerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDownloadManagerProvider.kt @@ -1,9 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider import com.lightgame.download.DownloadEntity -interface IDownloadManagerProvider : IProvider { +interface IDownloadManagerProvider { fun getDownloadEntityByUrl(url: String): DownloadEntity? fun resumeAllInvisiblePendingTask() diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IEntranceUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IEntranceUtilsProvider.kt index 96958632a6..5f7cd2b491 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IEntranceUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IEntranceUtilsProvider.kt @@ -2,9 +2,8 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.template.IProvider -interface IEntranceUtilsProvider : IProvider { +interface IEntranceUtilsProvider { fun saveShortcut(activityName: String, bundle: Bundle?) fun jumpActivity(context: Context, bundle: Bundle) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IErrorHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IErrorHelperProvider.kt index b2e43219b1..d8df401361 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IErrorHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IErrorHelperProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import retrofit2.HttpException -interface IErrorHelperProvider : IProvider { +interface IErrorHelperProvider { fun handleError(context: Context, errorString: String?, showHighPriorityHint: Boolean = false) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFixedRateJobHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFixedRateJobHelperProvider.kt index ec44cb08aa..1138656ca6 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFixedRateJobHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFixedRateJobHelperProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IFixedRateJobHelperProvider : IProvider { + +interface IFixedRateJobHelperProvider { fun getTimeDeltaBetweenServerAndClient():Long } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFloatingWindowProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFloatingWindowProvider.kt index 441cfbb34d..52f685cae3 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFloatingWindowProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFloatingWindowProvider.kt @@ -3,10 +3,10 @@ package com.gh.gamecenter.core.provider import android.app.Activity import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.facade.template.IProvider + import io.reactivex.disposables.Disposable -interface IFloatingWindowProvider : IProvider { +interface IFloatingWindowProvider { fun getAndShowFloatingWindow( gameId: String, @@ -14,7 +14,7 @@ interface IFloatingWindowProvider : IProvider { location: String, fragment: Fragment, recyclerView: RecyclerView, - welcomeDialogCallback: ((entity: T) -> Unit)? = null + welcomeDialogCallback: ((entity: Any) -> Unit)? = null ): Disposable fun getFloatingWindowOnly(callback: (ArrayList<*>?, Throwable?) -> Unit): Disposable @@ -23,7 +23,7 @@ interface IFloatingWindowProvider : IProvider { fragment: Fragment, recyclerView: RecyclerView, windowEntityList: java.util.ArrayList<*>, - welcomeDialogCallback: ((entity: T) -> Unit)? = null + welcomeDialogCallback: ((entity: Any) -> Unit)? = null ) fun showHiddenWindow(activity: Activity) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IGameTrendsHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IGameTrendsHelperProvider.kt index 5a2256cc9f..0d4e610dcb 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IGameTrendsHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IGameTrendsHelperProvider.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IGameTrendsHelperProvider : IProvider { + +interface IGameTrendsHelperProvider { fun updateReadPostTime() } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IHandleGameResponseProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHandleGameResponseProvider.kt index 572f5bf041..ae8e1585c5 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IHandleGameResponseProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHandleGameResponseProvider.kt @@ -1,7 +1,6 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IHandleGameResponseProvider : IProvider { +interface IHandleGameResponseProvider { fun handleGameResponse(response: List, entrance: String): List } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt index d4e1e788fd..d65a5e6cff 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IHistoryHelperProvider : IProvider { + +interface IHistoryHelperProvider { fun emptyDatabase() } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILibaoUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILibaoUtilsProvider.kt index e8d95b9580..5007f38476 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILibaoUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILibaoUtilsProvider.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface ILibaoUtilsProvider : IProvider { + +interface ILibaoUtilsProvider { fun getLibaoStatus(ids: String, successCallback: ((Any?) -> Unit)?, failureCallback: (() -> Unit)?) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILogUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILogUtilsProvider.kt index a958a50711..151603621a 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILogUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILogUtilsProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface ILogUtilsProvider : IProvider { + +interface ILogUtilsProvider { fun login(loginStep: String, loginType: String, entrance: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILoginProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILoginProvider.kt index 78959c38cc..c5fb5c5e99 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ILoginProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ILoginProvider.kt @@ -1,11 +1,9 @@ package com.gh.gamecenter.core.provider -import android.app.Dialog import android.content.Context import android.view.View -import com.alibaba.android.arouter.facade.template.IProvider -interface ILoginProvider : IProvider { +interface ILoginProvider { fun showLoginPolicyDialog( authContent: Context, @@ -17,9 +15,9 @@ interface ILoginProvider : IProvider { fun createQuickLoginBackgroundView(context: Context): View - fun startQuickLoginHelperPageFromQuickLogin(loginToken: String, context: Context, callback: (() -> Unit)?) + fun startQuickLoginHelperPageFromQuickLogin(loginToken: String, context: Context, continuablePath: String?, callback: (() -> Unit)?) - fun startCodeLoginPageFromQuickLogin(openAuthPageSuccess: Boolean, context: Context, callback: (() -> Unit)?) + fun startCodeLoginPageFromQuickLogin(openAuthPageSuccess: Boolean, context: Context, continuablePath: String?, callback: (() -> Unit)?) - fun createCustomView(context: Context, callback: (() -> Unit)?): View + fun createCustomView(context: Context, continuablePath: String?, callback: (() -> Unit)?): View } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt index f41d4d6a83..f5d29099c5 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IMainProvider : IProvider { + +interface IMainProvider { fun skipToMainActivity(context: Context, type: String) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMiniGameRecentlyPlayedProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMiniGameRecentlyPlayedProvider.kt index 3daa64edf0..82fdfcf0a4 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMiniGameRecentlyPlayedProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMiniGameRecentlyPlayedProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IMiniGameRecentlyPlayedProvider : IProvider { + +interface IMiniGameRecentlyPlayedProvider { fun clearMiniGameRecentlyPlayed(gameType: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IOAIDProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IOAIDProvider.kt index 9f468284ab..a9fe41c32b 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IOAIDProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IOAIDProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IOAIDProvider : IProvider { + +interface IOAIDProvider { fun doSystemLoad() diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageHelperProvider.kt deleted file mode 100644 index 6e290d1ed2..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageHelperProvider.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.gh.gamecenter.core.provider - -import com.alibaba.android.arouter.facade.template.IProvider - -interface IPackageHelperProvider : IProvider { - - fun getLocalPackageNameSet(): Set -} \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageInstallerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageInstallerProvider.kt index 510f71c1f2..05f75ceba8 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageInstallerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageInstallerProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.lightgame.download.DownloadEntity -interface IPackageInstallerProvider : IProvider { +interface IPackageInstallerProvider { fun install(context: Context, downloadEntity: DownloadEntity, showUnzipToast: Boolean) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageUtilsProvider.kt index accb4c5493..af4d58c8c0 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPackageUtilsProvider.kt @@ -2,9 +2,8 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.template.IProvider -interface IPackageUtilsProvider : IProvider { +interface IPackageUtilsProvider { fun obtainProcessName(): String? diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgConfigProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgConfigProvider.kt index 9fbe2876e6..0dd47e3713 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgConfigProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgConfigProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IPkgConfigProvider : IProvider { + +interface IPkgConfigProvider { fun getPkgConfig(): ArrayList diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgProvider.kt index e296ee8fb9..e3dc3083c0 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPkgProvider.kt @@ -1,9 +1,7 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider +interface IPkgProvider { -interface IPkgProvider : IProvider { - - fun requestPkgConfig(configId: String, onConfigReceived: (config: T) -> Unit) + fun requestPkgConfig(configId: String, onConfigReceived: (config: Any) -> Unit) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt index 81c918054b..0523394cf1 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import io.reactivex.Single -interface IPushProvider : IProvider { +interface IPushProvider { /** * 同意隐私政策前初始化推送功能 diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IQGameProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IQGameProvider.kt index b83514f7fd..477a41b7b9 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IQGameProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IQGameProvider.kt @@ -3,9 +3,9 @@ package com.gh.gamecenter.core.provider import android.app.Activity import android.content.Context import android.os.* -import com.alibaba.android.arouter.facade.template.IProvider -interface IQGameProvider : IProvider { + +interface IQGameProvider { /** * 初始化开放互联信息SDK diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IQuickLoginProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IQuickLoginProvider.kt index e6bc1d3a6a..b4610a862f 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IQuickLoginProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IQuickLoginProvider.kt @@ -3,15 +3,15 @@ package com.gh.gamecenter.core.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IQuickLoginProvider : IProvider { + +interface IQuickLoginProvider { fun init(app:Application) fun preLogin(context: Context) - fun startLogin(context: Context, entrance: String, callback: (() -> Unit)?) + fun startLogin(context: Context, entrance: String, continuablePath: String? = null, callback: (() -> Unit)?) fun isOpenMobileData(context: Context): Boolean diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IRealNameProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IRealNameProvider.kt index 312ddea225..1b51aee151 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IRealNameProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IRealNameProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import android.app.Application -import com.alibaba.android.arouter.facade.template.IProvider -interface IRealNameProvider : IProvider { + +interface IRealNameProvider { fun init(application: Application) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IReservationRepositoryProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IReservationRepositoryProvider.kt index c88b0b77ed..211e690aba 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IReservationRepositoryProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IReservationRepositoryProvider.kt @@ -1,8 +1,6 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider - -interface IReservationRepositoryProvider : IProvider { +interface IReservationRepositoryProvider { fun refreshReservations() diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISearchTabUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISearchTabUtilsProvider.kt index d217603972..0d8a04a00c 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISearchTabUtilsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISearchTabUtilsProvider.kt @@ -3,9 +3,9 @@ package com.gh.gamecenter.core.provider import androidx.fragment.app.Fragment import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel -import com.alibaba.android.arouter.facade.template.IProvider -interface ISearchTabUtilsProvider : IProvider { + +interface ISearchTabUtilsProvider { fun obtainParentViewModel(fragment: Fragment): ViewModel diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISensorsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISensorsProvider.kt index 2b78ac55cd..ff2a4ae609 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISensorsProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISensorsProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.core.provider import android.app.Application -import com.alibaba.android.arouter.facade.template.IProvider + import org.json.JSONObject -interface ISensorsProvider : IProvider { +interface ISensorsProvider { fun init(application: Application, channel: String) fun login(loginId: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISentryProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISentryProvider.kt index fb0afa9bf0..784474fade 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISentryProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISentryProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface ISentryProvider : IProvider { + +interface ISentryProvider { fun init(context: Context, channel: String, flavor: String, versionName: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISettingProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISettingProvider.kt index 8e16ac11ed..6b9038183d 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ISettingProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/ISettingProvider.kt @@ -2,9 +2,9 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface ISettingProvider : IProvider { + +interface ISettingProvider { fun getSettingIntent(context: Context, isUpdate: Boolean, entrance: String): Intent? diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt index 3eb5a9752d..1b380447ff 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt @@ -3,8 +3,7 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.template.IProvider -interface IShellProvider : IProvider { +interface IShellProvider { fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent? } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/ITimeUtilProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/ITimeUtilProvider.kt deleted file mode 100644 index ce0ff0a61c..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/ITimeUtilProvider.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.gh.gamecenter.core.provider - -import com.alibaba.android.arouter.facade.template.IProvider - -interface ITimeUtilProvider : IProvider { - - fun currentTimeMillis(): Long - - fun currentTime(): Int - -} \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt index 2c3c6a3ab1..7728b1684a 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider import androidx.fragment.app.FragmentActivity -import com.alibaba.android.arouter.facade.template.IProvider -interface IUpdateManagerProvider: IProvider { + +interface IUpdateManagerProvider { fun checkUpdate(activity: FragmentActivity, ignoreSuppressOption: Boolean) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt index 2a97cc203b..04f892ba60 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IUsageStatsHelperProvider : IProvider { + +interface IUsageStatsHelperProvider { fun checkForPermission(): Boolean fun skipToUsageStats(context: Context, requestCode: Int) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUserManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUserManagerProvider.kt index a6cf599ebc..4a30bbd7e6 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUserManagerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUserManagerProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider -interface IUserManagerProvider : IProvider { + +interface IUserManagerProvider { fun userShouldTakeRegulationBaseOnLastRemind(): Boolean diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IVisitManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IVisitManagerProvider.kt index 95574fa05b..3c3c727cc1 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IVisitManagerProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IVisitManagerProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.core.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IVisitManagerProvider : IProvider { + +interface IVisitManagerProvider { fun updateOkhttpCache(context: Context, newsId: String) fun addUrl(ids: String) diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt index d1bd511023..07acce0955 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt @@ -2,9 +2,8 @@ package com.gh.gamecenter.core.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface IWebProvider : IProvider { +interface IWebProvider { fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? fun getWebIntent(context: Context, title: String, url: String): Intent? diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt index 8872566f82..71c246fb10 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt @@ -1,7 +1,5 @@ package com.gh.gamecenter.core.provider -import com.alibaba.android.arouter.facade.template.IProvider - -interface IWechatBindHelperProvider : IProvider { - fun getWechatConfig(callback: ((T) -> Unit)? = null) +interface IWechatBindHelperProvider { + fun getWechatConfig(callback: ((Any) -> Unit)? = null) } \ No newline at end of file diff --git a/module_core_feature/build.gradle b/module_core_feature/build.gradle index 447b25731c..6ce5390733 100644 --- a/module_core_feature/build.gradle +++ b/module_core_feature/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'kotlin-parcelize' + id 'com.google.devtools.ksp' } android { @@ -13,8 +14,6 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildFeatures { @@ -22,12 +21,6 @@ android { dataBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { release { consumerProguardFiles 'proguard-rules.pro' @@ -44,6 +37,7 @@ android { } dependencies { + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/adapter/MyConcernRecommendAdapter.java b/module_core_feature/src/main/java/com/gh/gamecenter/feature/adapter/MyConcernRecommendAdapter.java index 2e8ef1e04b..d6cf6ae0b2 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/adapter/MyConcernRecommendAdapter.java +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/adapter/MyConcernRecommendAdapter.java @@ -6,7 +6,7 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.retrofit.Response; @@ -68,9 +68,9 @@ public class MyConcernRecommendAdapter extends BaseRecyclerAdapter> sequences = new ArrayList<>(); HashSet repeatGameSet = new HashSet<>(); - IPackagesManagerProvider packagesManagerProvider = (IPackagesManagerProvider) ARouter.getInstance().build(RouteConsts.provider.packagesManager).navigation(); - IRegionSettingHelperProvider regionSettingHelperProvider = (IRegionSettingHelperProvider) ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper).navigation(); - IConfigSettingProvider configSettingProvider = (IConfigSettingProvider) ARouter.getInstance().build(RouteConsts.provider.configSetting).navigation(); + IPackagesManagerProvider packagesManagerProvider = TheRouter.get(IPackagesManagerProvider.class); + IRegionSettingHelperProvider regionSettingHelperProvider = TheRouter.get(IRegionSettingHelperProvider.class); + IConfigSettingProvider configSettingProvider = TheRouter.get(IConfigSettingProvider.class); if (packagesManagerProvider != null) { for (GameInstall installInfo : packagesManagerProvider.getFilterSameApkInstalledList()) { @@ -143,10 +143,10 @@ public class MyConcernRecommendAdapter extends BaseRecyclerAdapter mMirrorData @@ -688,7 +686,7 @@ data class GameEntity( } fun setWelcomeDialogInfoIfAvailable() { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) welcomeDialogId = appProvider?.get(Constants.WELCOME_DIALOG_ID, false) as? String welcomeDialogTitle = appProvider?.get(Constants.WELCOME_DIALOG_LINK_TITLE, false) as? String } @@ -841,8 +839,7 @@ data class GameEntity( if (useMirrorInfo) { return true } else { - val provider = ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper) - .navigation() as? IRegionSettingHelperProvider + val provider = TheRouter.get(IRegionSettingHelperProvider::class.java) useMirrorInfo = (mirrorStatus == "on" || mirrorStatus2 == "on") && provider?.shouldThisGameDisplayMirrorInfo(_id) == true } @@ -855,8 +852,7 @@ data class GameEntity( * @return -1 代表没有使用镜像, 1 代表使用镜像 1,2 代表使用镜像 2 */ fun getMirrorPosition(): Int { - val provider = ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper) - .navigation() as? IRegionSettingHelperProvider + val provider = TheRouter.get(IRegionSettingHelperProvider::class.java) return provider?.getMirrorPosition(_id) ?: -1 } @@ -881,10 +877,8 @@ data class GameEntity( */ fun getGameDownloadButtonMode(): Int { if (mGameDownloadButtonMode == GAME_DOWNLOAD_BUTTON_MODE_UNKNOWN) { - val vHelperProvider = - ARouter.getInstance().build(RouteConsts.provider.vhelper).navigation() as? IVHelperProvider - val haloAppProvider = - ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val vHelperProvider = TheRouter.get(IVHelperProvider::class.java) + val haloAppProvider = TheRouter.get(IAppProvider::class.java) mGameDownloadButtonMode = when { haloAppProvider?.getChannel() == "GH_jzcs" && getApk().size == 1 -> {// 兼职包特殊渠道且只有一个APK时,强行开启双按钮显示 @@ -954,8 +948,7 @@ data class GameEntity( @Deprecated("只用来兼容旧的数据,新的功能不要调用它") fun isVGame(): Boolean { if (!mIsVGame) { - val vHelperProvider = - ARouter.getInstance().build(RouteConsts.provider.vhelper).navigation() as? IVHelperProvider + val vHelperProvider = TheRouter.get(IVHelperProvider::class.java) mIsVGame = if (vHelperProvider?.isVGameOn() == false) { false } else if (mDownloadStatusExtra == "off") { @@ -987,8 +980,7 @@ data class GameEntity( } fun isSpecialDownload(): Boolean { - val provider = ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper) - .navigation() as? IRegionSettingHelperProvider + val provider = TheRouter.get(IRegionSettingHelperProvider::class.java) return provider?.shouldThisGameShowSpecialDownload(_id) == true } @@ -1068,7 +1060,6 @@ data class GameEntity( } companion object { - const val TAG: String = "GameEntity" const val CHECK_MIRROR_INFO_INTERVAL = 10 * 1000 // 检查镜像更新间隔 10s private const val GAME_DOWNLOAD_BUTTON_MODE_UNKNOWN = 0 diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameInstall.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameInstall.kt index ebbd12cc76..e9557793b9 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameInstall.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/GameInstall.kt @@ -1,6 +1,6 @@ package com.gh.gamecenter.feature.entity -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.IconFloat import com.gh.gamecenter.core.provider.IPackageUtilsProvider @@ -31,8 +31,7 @@ data class GameInstall( ): GameInstall { val gameInstall = GameInstall() val application = HaloApp.getInstance() - val packageUtils = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) gameInstall.isSignByGh = packageUtils?.isSignedByGh(application, installedPkgName) == true gameInstall.installTime = packageUtils?.getInstalledTime(application, installedPkgName) ?: 0 gameInstall.id = game.id diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/ExposureEvent.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/ExposureEvent.kt index 95e06db239..39f2c4aef4 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/ExposureEvent.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/ExposureEvent.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.feature.exposure import android.os.Parcelable import androidx.annotation.Keep import androidx.room.PrimaryKey -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.ExposureEntity @@ -72,10 +72,8 @@ data class ExposureEvent( gameEntity.gameVersion = gameEntity.getApk().firstOrNull()?.version ?: "" } - val browserInstallHelper = ARouter.getInstance().build(RouteConsts.provider.browserInstallHelper) - .navigation() as? IBrowserInstallHelperProvider - val regionSettingHelper = ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper) - .navigation() as? IRegionSettingHelperProvider + val browserInstallHelper = TheRouter.get(IBrowserInstallHelperProvider::class.java) + val regionSettingHelper = TheRouter.get(IRegionSettingHelperProvider::class.java) val firstTracePayload = eTrace?.firstOrNull()?.payload diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/time/TimeUtil.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/time/TimeUtil.kt index bcec76de51..2cfbd1e889 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/time/TimeUtil.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/exposure/time/TimeUtil.kt @@ -1,20 +1,17 @@ package com.gh.gamecenter.feature.exposure.time -import com.alibaba.android.arouter.launcher.ARouter -import com.gh.gamecenter.common.constant.RouteConsts +import com.therouter.TheRouter import com.gh.gamecenter.core.provider.IFixedRateJobHelperProvider object TimeUtil { fun currentTimeMillis(): Long { - val provider = ARouter.getInstance().build(RouteConsts.provider.fixedRateJobHelper) - .navigation() as? IFixedRateJobHelperProvider + val provider = TheRouter.get(IFixedRateJobHelperProvider::class.java) return (provider?.getTimeDeltaBetweenServerAndClient() ?: 0) + System.currentTimeMillis() } fun currentTime(): Int { - val provider = ARouter.getInstance().build(RouteConsts.provider.fixedRateJobHelper) - .navigation() as? IFixedRateJobHelperProvider + val provider = TheRouter.get(IFixedRateJobHelperProvider::class.java) return (((provider?.getTimeDeltaBetweenServerAndClient() ?: 0) + System.currentTimeMillis()) / 1000).toInt() } diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/GameItemViewHolder.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/GameItemViewHolder.kt index d7850522fb..a1c97469e3 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/GameItemViewHolder.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/GameItemViewHolder.kt @@ -7,7 +7,7 @@ import android.view.View import android.widget.LinearLayout import android.widget.TextView import androidx.core.view.isVisible -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.* @@ -81,8 +81,7 @@ class GameItemViewHolder(var binding: GameItemBinding) : BaseRecyclerViewHolder< gameDes.setTextColor(com.gh.gamecenter.common.R.color.text_tertiary.toColor(root.context)) recommendStarPref.setTextColor(com.gh.gamecenter.common.R.color.text_tertiary.toColor(root.context)) - val provider = ARouter.getInstance().build(RouteConsts.provider.bindingAdapters) - .navigation() as? IBindingAdaptersProvider + val provider = TheRouter.get(IBindingAdaptersProvider::class.java) provider?.setGameName(gameName, entity, isShowPlatform) provider?.setGameTags(labelList, entity) gameRating.textSize = if (entity.commentCount > 3) 12F else 10F diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SelectGameAdapter.java b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SelectGameAdapter.java index f3f6251dcd..06fae9b27c 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SelectGameAdapter.java +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/game/SelectGameAdapter.java @@ -11,7 +11,7 @@ import android.widget.ProgressBar; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.base.fragment.BaseFragment; import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.constant.RouteConsts; @@ -78,7 +78,7 @@ public class SelectGameAdapter extends BaseRecyclerAdapter Observable .create(emitter -> { PackageManager pm = mContext.getPackageManager(); - IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation(); + IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class); List installedPackages = packageUtilsConfig.getInstalledPackages(mContext, 0); for (PackageInfo installedPackage : installedPackages) { diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/minigame/MiniGameItemHelper.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/minigame/MiniGameItemHelper.kt index 80f03217cb..2fc0157d99 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/minigame/MiniGameItemHelper.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/minigame/MiniGameItemHelper.kt @@ -2,12 +2,13 @@ package com.gh.gamecenter.feature.minigame import android.view.View import android.widget.TextView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.core.provider.IDirectProvider +import com.gh.gamecenter.core.utils.CurrentActivityHolder import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.minigame.wechat.WGameSubjectCPMListReportHelper import com.gh.gamecenter.feature.utils.NewFlatLogUtils @@ -43,15 +44,12 @@ object MiniGameItemHelper { } fun launchMiniGame(miniAppId: String, miniAppType: String, miniAppPath: String = "", miniAppExtData: String = "") { - GlobalActivityManager.currentActivity?.let { activity -> - val directProvider = ARouter - .getInstance() - .build(RouteConsts.provider.directUtils) - .navigation() as IDirectProvider + CurrentActivityHolder.getCurrentActivity()?.let { activity -> + val directProvider = TheRouter.get(IDirectProvider::class.java) if (miniAppType == Constants.QQ_MINI_GAME) { - directProvider.directToQQGameById(activity, miniAppId) + directProvider?.directToQQGameById(activity, miniAppId) } else { - directProvider.directToWechatGameById(activity, miniAppId, miniAppPath, miniAppExtData) + directProvider?.directToWechatGameById(activity, miniAppId, miniAppPath, miniAppExtData) } } } diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IAdHelperProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IAdHelperProvider.kt index 6748b096b0..ca0bb8c0c2 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IAdHelperProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IAdHelperProvider.kt @@ -1,8 +1,8 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.SettingsEntity -interface IAdHelperProvider : IProvider { +interface IAdHelperProvider { fun getSuggestionFunctionAd(): SettingsEntity.AD? } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt index 4ce0ae5506..fe98446c2e 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt @@ -3,10 +3,10 @@ package com.gh.gamecenter.feature.provider import android.view.View import android.widget.LinearLayout import android.widget.TextView -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.GameEntity -interface IBindingAdaptersProvider : IProvider { +interface IBindingAdaptersProvider { fun setGameName(view: TextView, game: GameEntity, isShowPlatform: Boolean) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt index 6257c7e60b..e9fc7268be 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt @@ -3,8 +3,8 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.template.IProvider -interface ICommentDetailProvider : IProvider { + +interface ICommentDetailProvider { fun getIntent(context: Context, commentId: String? = "", message: Parcelable): Intent? } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt index 1079f4ebc3..ff1cc04be8 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider import android.widget.TextView -import com.alibaba.android.arouter.facade.template.IProvider -interface ICommentUtilsProvider : IProvider { + +interface ICommentUtilsProvider { fun setCommentTime(textView: TextView, time: Long) fun getCommentTime(timestamp: Long): String diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConcernInfoProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConcernInfoProvider.kt index 16721b20c6..0d1e1c5840 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConcernInfoProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConcernInfoProvider.kt @@ -2,8 +2,8 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface IConcernInfoProvider : IProvider { + +interface IConcernInfoProvider { fun getIntent(context: Context, entrance: String): Intent } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConfigSettingProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConfigSettingProvider.kt index fca856dbb5..0a145e4cca 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConfigSettingProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IConfigSettingProvider.kt @@ -1,8 +1,7 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider import com.gh.gamecenter.feature.entity.SettingsEntity -interface IConfigSettingProvider : IProvider { +interface IConfigSettingProvider { fun getSettings(): SettingsEntity? } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDataCollectionProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDataCollectionProvider.kt index f84632b0f1..22208d1fa8 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDataCollectionProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDataCollectionProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface IDataCollectionProvider : IProvider { + +interface IDataCollectionProvider { fun uploadClick(context: Context, vararg args: String) fun uploadConcern(context: Context, vararg args: String) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDownloadButtonClickedProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDownloadButtonClickedProvider.kt index 0615e82a04..23a8b67bb0 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDownloadButtonClickedProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IDownloadButtonClickedProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.view.DownloadButton -interface IDownloadButtonClickedProvider: IProvider { +interface IDownloadButtonClickedProvider { fun onClicked(downloadButton: DownloadButton) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IExposureManagerProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IExposureManagerProvider.kt index 2d6402dd61..921433ce1e 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IExposureManagerProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IExposureManagerProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.exposure.ExposureEvent // TODO 将 ExposureManager 相关的代码移动到 module_core_feature 模块中 -interface IExposureManagerProvider : IProvider { +interface IExposureManagerProvider { fun logExposure(exposureEvent: ExposureEvent) diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt index 86312bb59a..8354d0e4d7 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt @@ -2,9 +2,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface IGameCollectionDetailProvider : IProvider { + +interface IGameCollectionDetailProvider { fun getIntent( context: Context, gameCollectionId: String, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt index b19b563240..941404f666 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.exposure.ExposureEvent -interface IGameDetailProvider : IProvider { +interface IGameDetailProvider { fun startGameDetailActivity( context: Context, gameEntity: GameEntity?, @@ -30,7 +30,6 @@ interface IGameDetailProvider : IProvider { context: Context, gameId: String, entrance: String?, - defaultTab: Int = -1, isSkipGameComment: Boolean = false, scrollToLibao: Boolean = false, openVideoStreaming: Boolean = false, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt index b03bf4c4db..94e47b8157 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt @@ -1,13 +1,13 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.entity.SuggestType import com.gh.gamecenter.feature.exposure.ExposureEvent -interface ILinkDirectUtilsProvider : IProvider { +interface ILinkDirectUtilsProvider { fun directToLinkPage( context: Context, linkEntity: LinkEntity, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt index cc51f2aadd..ee2b181e3d 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt @@ -2,10 +2,10 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.ConcernEntity -interface IMessageDetailProvider : IProvider { +interface IMessageDetailProvider { fun getIntentById( context: Context, newsId: String, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt index bb4cf3adef..71f96f7cbf 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt @@ -2,8 +2,8 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface IMessageProvider : IProvider { + +interface IMessageProvider { fun getIntent(context: Context, entrance: String): Intent } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt index 93196e6736..a385ad1aad 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.feature.provider import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.MessageUnreadCount import com.gh.gamecenter.feature.entity.MessageUnreadEntity -interface IMessageUnreadRepositoryProvider : IProvider { +interface IMessageUnreadRepositoryProvider { fun loadMessageUnreadData() diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt index 29322db3fa..f9977599ce 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt @@ -2,9 +2,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface INewCommentDetailProvider : IProvider { + +interface INewCommentDetailProvider { fun getAnswerCommentIntent( context: Context, commentId: String, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IPackagesManagerProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IPackagesManagerProvider.kt index b1912921bc..76c28c0acb 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IPackagesManagerProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IPackagesManagerProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.GameInstall -interface IPackagesManagerProvider : IProvider { +interface IPackagesManagerProvider { fun isCanPluggable(gameId: String?, packageName: String?): Boolean fun getFilterSameApkInstalledList(): ArrayList diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt index 48525249d8..274b67567e 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IRegionSettingHelperProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.feature.provider -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.entity.IpInfo -interface IRegionSettingHelperProvider : IProvider { +interface IRegionSettingHelperProvider { fun shouldThisGameDisplayMirrorInfo(gameId: String): Boolean diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardPicProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardPicProvider.kt index 1a619e44d8..e8da16cbe9 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardPicProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardPicProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.ConcernEntity -interface IShareCardPicProvider : IProvider { +interface IShareCardPicProvider { fun startShareCardPicActivity(context: Context, concernEntity: ConcernEntity, entrance: String) } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardProvider.kt index 3066bd00fc..c150a81c30 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IShareCardProvider.kt @@ -2,9 +2,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.ConcernEntity -interface IShareCardProvider : IProvider { +interface IShareCardProvider { fun getIntent(context: Context, concernEntity: ConcernEntity, shareContent: String): Intent } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt index 8baaaa64c3..7fbd64f0bf 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt @@ -2,8 +2,8 @@ package com.gh.gamecenter.feature.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.template.IProvider -interface ISimpleAnswerDetailProvider : IProvider { + +interface ISimpleAnswerDetailProvider { fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent? } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt index fd7c006b27..dab7808301 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt @@ -1,9 +1,9 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider -interface ISubjectProvider : IProvider { + +interface ISubjectProvider { fun startSubjectActivity( context: Context, id: String?, diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt index a42faecdd2..2886530b9f 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IVHelperProvider.kt @@ -1,10 +1,10 @@ package com.gh.gamecenter.feature.provider import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.feature.entity.InstallGameEntity -interface IVHelperProvider : IProvider { +interface IVHelperProvider { fun isVGameOn(): Boolean fun getAllInstalledVGameEntity(): ArrayList diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ApkActiveUtils.java b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ApkActiveUtils.java index 02f5f2f31a..2d61fb8148 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ApkActiveUtils.java +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ApkActiveUtils.java @@ -1,6 +1,6 @@ package com.gh.gamecenter.feature.utils; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.feature.provider.IPackagesManagerProvider; import com.gh.gamecenter.feature.BuildConfig; @@ -26,8 +26,8 @@ public class ApkActiveUtils { ApkEntity apkEntity = apkList.get(i); String packageName = apkEntity.getPackageName(); String id = gameEntity.getId(); - IPackagesManagerProvider provider = (IPackagesManagerProvider)ARouter.getInstance().build(RouteConsts.provider.packagesManager).navigation(); - if (!apkEntity.isActive() && !provider.isCanPluggable(id, packageName)) { + IPackagesManagerProvider provider = TheRouter.get(IPackagesManagerProvider.class); + if (!apkEntity.isActive() && provider != null && !provider.isCanPluggable(id, packageName)) { apkList.remove(i); i--; } diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ConcernUtils.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ConcernUtils.kt index a3d014c3d8..ca28e8c9b1 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ConcernUtils.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/ConcernUtils.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.feature.utils import android.text.TextUtils -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.core.provider.IUserManagerProvider @@ -19,8 +19,7 @@ import retrofit2.HttpException */ object ConcernUtils { - private val mUserManager = - ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider + private val mUserManager = TheRouter.get(IUserManagerProvider::class.java) /** * autoConcern:是否自动关注'关联关注' diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/SentryHelper.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/SentryHelper.kt index 3780ef30f5..f2bdd8c1ac 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/SentryHelper.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/utils/SentryHelper.kt @@ -1,6 +1,6 @@ package com.gh.gamecenter.feature.utils -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISentryProvider @@ -10,7 +10,7 @@ object SentryHelper { * 注意 tag-key 不支持中文 */ fun onEvent(eventId: String, vararg kv: String?) { - val sentryProvider = ARouter.getInstance().build(RouteConsts.provider.sentry).navigation() as? ISentryProvider + val sentryProvider = TheRouter.get(ISentryProvider::class.java) sentryProvider?.onEvent(eventId, *kv) } diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/DownloadButton.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/DownloadButton.kt index 9327dc4daa..89caf69b96 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/DownloadButton.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/DownloadButton.kt @@ -10,7 +10,7 @@ import android.view.MotionEvent import android.widget.ProgressBar import androidx.annotation.ColorInt import androidx.annotation.StringRes -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.toDrawable @@ -247,8 +247,7 @@ class DownloadButton @JvmOverloads constructor( override fun setOnClickListener(listener: OnClickListener?) { // 供上一层处理点击事件,譬如点击日志记录等 - val clickHandler = ARouter.getInstance().build(RouteConsts.provider.downloadButtonClickedHandler).navigation() - as? IDownloadButtonClickedProvider + val clickHandler = TheRouter.get(IDownloadButtonClickedProvider::class.java) if (clickHandler != null && listener != null) { super.setOnClickListener { v -> diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt index d26992d907..a309c4c69d 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/view/dialog/SelectGameViewModel.kt @@ -6,7 +6,7 @@ import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.BitmapUtils @@ -70,10 +70,9 @@ class SelectGameViewModel(application: Application) : AndroidViewModel(applicati .create { emitter: ObservableEmitter -> mApkList.clear() val pm: PackageManager = getApplication().applicationContext.packageManager - val packageUtilsConfig = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as IPackageUtilsProvider + val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java) val installedPackages = - packageUtilsConfig.getInstalledPackages(getApplication(), 0) + packageUtilsConfig?.getInstalledPackages(getApplication(), 0) ?: listOf() for (installedPackage in installedPackages) { if ((installedPackage.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM == 0) && !shouldThisPackageBeFiltered(installedPackage.packageName)) { val installGameEntity = InstallGameEntity() @@ -99,8 +98,7 @@ class SelectGameViewModel(application: Application) : AndroidViewModel(applicati } } - val vHelperProvider = - ARouter.getInstance().build(RouteConsts.provider.vhelper).navigation() as? IVHelperProvider + val vHelperProvider = TheRouter.get(IVHelperProvider::class.java) if (vHelperProvider?.isVGameOn() == true) { vHelperProvider.getAllInstalledVGameEntity().forEach { if (!shouldThisPackageBeFiltered(it.packageName ?: "")) { diff --git a/module_login/build.gradle b/module_login/build.gradle index 66d885a9bd..064412a342 100644 --- a/module_login/build.gradle +++ b/module_login/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'kotlin-parcelize' + id 'com.google.devtools.ksp' } android { @@ -23,12 +24,6 @@ android { viewBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { release { consumerProguardFiles 'proguard-rules.pro' @@ -46,11 +41,8 @@ android { } dependencies { - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" implementation(project(path: ":module_common")) implementation(project(path: ":module_core_feature")) diff --git a/module_login/src/main/java/com/gh/gamecenter/login/interceptor/LoginInterceptor.kt b/module_login/src/main/java/com/gh/gamecenter/login/interceptor/LoginInterceptor.kt new file mode 100644 index 0000000000..e47d625f2a --- /dev/null +++ b/module_login/src/main/java/com/gh/gamecenter/login/interceptor/LoginInterceptor.kt @@ -0,0 +1,48 @@ +package com.gh.gamecenter.login.interceptor + +import android.text.TextUtils +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.utils.NetworkUtils +import com.gh.gamecenter.core.HaloApp +import com.gh.gamecenter.core.utils.CurrentActivityHolder +import com.gh.gamecenter.login.user.UserManager +import com.gh.gamecenter.login.utils.QuickLoginHelper +import com.lightgame.utils.Utils +import com.therouter.router.RouteItem +import com.therouter.router.getUrlWithParams +import com.therouter.router.interceptor.RouterReplaceInterceptor +import com.therouter.router.matchRouteMap + +class LoginInterceptor : RouterReplaceInterceptor() { + + override fun replace(routeItem: RouteItem?): RouteItem? { + val url = routeItem?.getUrlWithParams() + val extra = routeItem?.getExtras() + + Utils.log(TAG, "loginInterceptor about to intercept $url") + + // 如果不需要登录,或者已经登录,直接返回 routeItem + if (extra?.getString(RouteConsts.QueryParams.REQUIRE_LOGIN) != "true" + || !TextUtils.isEmpty(UserManager.getInstance().getToken()) + ) { + return routeItem + } else { + val currentActivity = CurrentActivityHolder.getCurrentActivity() + + if (currentActivity != null + && NetworkUtils.isQuickLoginEnabled(HaloApp.getInstance())) { + QuickLoginHelper.startLogin(currentActivity, "浏览器", routeItem.getUrlWithParams()) + return null + } else { + val target = matchRouteMap(RouteConsts.activity.loginActivity) + target?.description = routeItem.getUrlWithParams() + return target + } + } + } + + companion object { + private const val TAG = "LoginInterceptor" + } + +} \ No newline at end of file diff --git a/module_login/src/main/java/com/gh/gamecenter/login/provider/LoginProviderImpl.kt b/module_login/src/main/java/com/gh/gamecenter/login/provider/LoginProviderImpl.kt index 03a37861b0..72409f2347 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/provider/LoginProviderImpl.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/provider/LoginProviderImpl.kt @@ -5,7 +5,7 @@ import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.Window -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.databinding.SetWaitDialogBinding import com.gh.gamecenter.common.utils.toColor @@ -18,7 +18,7 @@ import com.gh.gamecenter.login.user.LoginTag import com.gh.gamecenter.login.utils.DialogHelper import com.gh.gamecenter.login.utils.QuickLoginHelper -@Route(path = RouteConsts.provider.login, name = "登录暴露服务") +@com.therouter.inject.ServiceProvider class LoginProviderImpl : ILoginProvider { override fun showLoginPolicyDialog( @@ -40,22 +40,23 @@ class LoginProviderImpl : ILoginProvider { override fun startQuickLoginHelperPageFromQuickLogin( loginToken: String, context: Context, + continuablePath: String?, callback: (() -> Unit)? ) { - QuickLoginHelper.startQuickLoginHelperPage(LoginTag.oauth, loginToken, context, callback) + QuickLoginHelper.startQuickLoginHelperPage(LoginTag.oauth, loginToken, context, continuablePath, callback) } override fun startCodeLoginPageFromQuickLogin( openAuthPageSuccess: Boolean, context: Context, + continuablePath: String?, callback: (() -> Unit)? ) { - QuickLoginHelper.startCodeLoginPage(openAuthPageSuccess, context, callback) + QuickLoginHelper.startCodeLoginPage(openAuthPageSuccess, context, continuablePath, callback) } - override fun createCustomView(context: Context, callback: (() -> Unit)?): View { - return QuickLoginHelper.createCustomView(context, callback) + override fun createCustomView(context: Context, continuablePath: String?, callback: (() -> Unit)?): View { + return QuickLoginHelper.createCustomView(context, continuablePath, callback) } - override fun init(context: Context?) = Unit } \ No newline at end of file diff --git a/module_login/src/main/java/com/gh/gamecenter/login/provider/UserManagerProviderImpl.kt b/module_login/src/main/java/com/gh/gamecenter/login/provider/UserManagerProviderImpl.kt index a61ef28105..f0ce2c11ec 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/provider/UserManagerProviderImpl.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/provider/UserManagerProviderImpl.kt @@ -1,12 +1,9 @@ package com.gh.gamecenter.login.provider -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUserManagerProvider import com.gh.gamecenter.login.user.UserManager -@Route(path = RouteConsts.provider.userManager, name = "UserManager暴露服务") +@com.therouter.inject.ServiceProvider class UserManagerProviderImpl : IUserManagerProvider { override fun userShouldTakeRegulationBaseOnLastRemind(): Boolean { return UserManager.getInstance().userShouldTakeRegulationBaseOnLastRemind() @@ -31,8 +28,4 @@ class UserManagerProviderImpl : IUserManagerProvider { } }) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_login/src/main/java/com/gh/gamecenter/login/user/UserManager.java b/module_login/src/main/java/com/gh/gamecenter/login/user/UserManager.java index 3ac93ca0cc..a97fc65b22 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/user/UserManager.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/user/UserManager.java @@ -7,7 +7,7 @@ import android.text.TextUtils; import androidx.annotation.Nullable; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.base.activity.BaseActivity; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.RouteConsts; @@ -160,8 +160,10 @@ public class UserManager { refreshUserInfo(callBack); // 更新用户预约的游戏列表 - IReservationRepositoryProvider reservationRepository = (IReservationRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.reservationRepository).navigation(); - reservationRepository.refreshReservations(); + IReservationRepositoryProvider reservationRepository = TheRouter.get(IReservationRepositoryProvider.class); + if (reservationRepository != null) { + reservationRepository.refreshReservations(); + } refreshUserRegulationTestStatus(); } @@ -186,8 +188,10 @@ public class UserManager { if (code == 403401 || code == 403404) { UserRepository.getInstance().logout(); - IErrorHelperProvider errorHelper = (IErrorHelperProvider) ARouter.getInstance().build(RouteConsts.provider.errorHelper).navigation(); - errorHelper.handleLoginError(HaloApp.getInstance().getApplicationContext(), e, "", false); + IErrorHelperProvider errorHelper = TheRouter.get(IErrorHelperProvider.class); + if (errorHelper != null) { + errorHelper.handleLoginError(HaloApp.getInstance().getApplicationContext(), e, "", false); + } } } catch (Exception e1) { e1.printStackTrace(); diff --git a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java index 2221198106..a97ea9549e 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java @@ -14,10 +14,9 @@ import androidx.annotation.Nullable; import androidx.lifecycle.LiveData; import androidx.lifecycle.MediatorLiveData; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.callback.BiCallback; import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.eventbus.EBReuse; import com.gh.gamecenter.common.retrofit.ApiResponse; import com.gh.gamecenter.common.retrofit.BiResponse; @@ -134,10 +133,7 @@ public class UserRepository { if (!TextUtils.isEmpty(userId)) { // 退出登录后推送解绑别名 - IPushProvider pushProvider = (IPushProvider) ARouter - .getInstance() - .build(RouteConsts.provider.push) - .navigation(); + IPushProvider pushProvider = TheRouter.get(IPushProvider.class); if (pushProvider != null) { pushProvider .unbindAlias(userId) @@ -164,7 +160,7 @@ public class UserRepository { SPUtils.setString(mPreferences, Constants.USER_INFO_KEY, null); SPUtils.setString(Constants.SP_REGULATION_TEST_PASS_STATUS, ""); - IReservationRepositoryProvider reservationRepository = (IReservationRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.reservationRepository).navigation(); + IReservationRepositoryProvider reservationRepository = TheRouter.get(IReservationRepositoryProvider.class); if (reservationRepository != null) { reservationRepository.clearReservations(); } @@ -172,8 +168,10 @@ public class UserRepository { // 通知页面更新 EventBus.getDefault().post(new EBReuse(LOGOUT_TAG)); - IDataUtilsProvider dataUtils = (IDataUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.dataUtils).navigation(); + IDataUtilsProvider dataUtils = TheRouter.get(IDataUtilsProvider.class); + if (dataUtils != null) { dataUtils.getDeviceCertification(); + } // 退出登录后进行预取号 QuickLoginHelper.preLogin(mContext); @@ -257,7 +255,7 @@ public class UserRepository { response.setId(finalUserToken); userTokenHandle(response, loginTag); - IWechatBindHelperProvider wechatBindHelper = (IWechatBindHelperProvider) ARouter.getInstance().build(RouteConsts.provider.wechatHelper).navigation(); + IWechatBindHelperProvider wechatBindHelper = TheRouter.get(IWechatBindHelperProvider.class); if (wechatBindHelper != null) { wechatBindHelper.getWechatConfig(null); } @@ -466,7 +464,7 @@ public class UserRepository { } // 重启因为实名认证而处于等待中的任务 - IDownloadManagerProvider downloadManager = (IDownloadManagerProvider) ARouter.getInstance().build(RouteConsts.provider.downloadManager).navigation(); + IDownloadManagerProvider downloadManager = TheRouter.get(IDownloadManagerProvider.class); if (downloadManager != null) { downloadManager.resumeAllInvisiblePendingTask(); } @@ -475,7 +473,7 @@ public class UserRepository { @Override public void onFailure(@NonNull Exception exception) { mEditObsResponseUserInfo.postValue(null); - IErrorHelperProvider errorHelper = (IErrorHelperProvider) ARouter.getInstance().build(RouteConsts.provider.errorHelper).navigation(); + IErrorHelperProvider errorHelper = TheRouter.get(IErrorHelperProvider.class); if (errorHelper != null) { errorHelper.handleLoginError(HaloApp.getInstance(), (HttpException) exception, "", true); } @@ -504,8 +502,10 @@ public class UserRepository { @Override public void onResponse(@Nullable ResponseBody response) { super.onResponse(response); - IDataUtilsProvider dataUtils = (IDataUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.dataUtils).navigation(); - dataUtils.getDeviceCertification(); + IDataUtilsProvider dataUtils = TheRouter.get(IDataUtilsProvider.class); + if (dataUtils != null) { + dataUtils.getDeviceCertification(); + } } @Override @@ -524,7 +524,7 @@ public class UserRepository { super.onResponse(response); userInfoHandle(response, false); - IReservationRepositoryProvider reservationRepository = (IReservationRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.reservationRepository).navigation(); + IReservationRepositoryProvider reservationRepository = TheRouter.get(IReservationRepositoryProvider.class); if (reservationRepository != null) { reservationRepository.refreshReservations(); } @@ -535,16 +535,13 @@ public class UserRepository { Utils.toast(mContext, R.string.login_success); EventBus.getDefault().post(new EBReuse(LOGIN_TAG)); - IMessageUnreadRepositoryProvider messageUnreadRepository = (IMessageUnreadRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.messageUnreadRepository).navigation(); + IMessageUnreadRepositoryProvider messageUnreadRepository = TheRouter.get(IMessageUnreadRepositoryProvider.class); if (messageUnreadRepository != null) { messageUnreadRepository.loadMessageUnreadData(); } // 登录成功后推送绑定别名 - IPushProvider pushProvider = (IPushProvider) ARouter - .getInstance() - .build(RouteConsts.provider.push) - .navigation(); + IPushProvider pushProvider = TheRouter.get(IPushProvider.class); if (pushProvider != null) { pushProvider .bindAlias(response.getUserId()) @@ -556,16 +553,14 @@ public class UserRepository { } // 登录成功后,刷新qq小游戏最近在玩 - IMiniGameRecentlyPlayedProvider miniGameRecentlyPlayedProvider= (IMiniGameRecentlyPlayedProvider) ARouter.getInstance() - .build(RouteConsts.provider.miniGameRecentPlayed) - .navigation(); + IMiniGameRecentlyPlayedProvider miniGameRecentlyPlayedProvider= TheRouter.get(IMiniGameRecentlyPlayedProvider.class); if(miniGameRecentlyPlayedProvider != null){ miniGameRecentlyPlayedProvider.refreshQQMiniRecentPlayed(); } } if (UserManager.getInstance().getLoginTokenEntity() != null) { - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (UserManager.getInstance().getLoginTokenEntity().isFirstLogin()) { appProvider.getFlavorProvider().logEvent("active_register"); } @@ -582,7 +577,7 @@ public class UserRepository { super.onApiFailure(e); mLoginObsResponseUserInfo.postValue(e); if (loginTag != null) { - IErrorHelperProvider errorHelper = (IErrorHelperProvider) ARouter.getInstance().build(RouteConsts.provider.errorHelper).navigation(); + IErrorHelperProvider errorHelper = TheRouter.get(IErrorHelperProvider.class); if (errorHelper != null) { errorHelper.handleLoginError(mContext, e.getHttpException(), loginTag.toChinese(), false); } @@ -625,8 +620,10 @@ public class UserRepository { if (isEditUserInfo) { mEditObsResponseUserInfo.postValue(new ApiResponse<>(userInfoEntity)); } else { - IDataUtilsProvider dataUtils = (IDataUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.dataUtils).navigation(); - dataUtils.getDeviceCertification(); + IDataUtilsProvider dataUtils = TheRouter.get(IDataUtilsProvider.class); + if (dataUtils != null) { + dataUtils.getDeviceCertification(); + } } } diff --git a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt index cafe5d5efa..439a05db72 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.login.utils import android.app.Activity import android.content.Intent -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.tryWithDefaultCatch import com.gh.gamecenter.core.provider.IAppProvider @@ -45,11 +45,11 @@ object LoginHelper { private var mAccessToken: Oauth2AccessToken? = null // weibo private var mLoginCallback: LoginCallback? = null - private val mAppProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + private val mAppProvider = TheRouter.get(IAppProvider::class.java) init { val context = HaloApp.getInstance().applicationContext - val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val config = TheRouter.get(IConfigProvider::class.java) Tencent.setIsPermissionGranted(true) mTencent = Tencent.createInstance(config?.getTencentAppId(), context) //初始化QQ分享 @@ -169,7 +169,7 @@ object LoginHelper { fun loginWithWechat(loginCallback: LoginCallback) { mAppProvider?.setDisableSplashAdTemporarily(true) mLoginCallback = loginCallback - val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val config = TheRouter.get(IConfigProvider::class.java) val register = mIWXAPI.registerApp(config?.getWechatAppId()) val req = SendAuth.Req() @@ -190,7 +190,7 @@ object LoginHelper { mAppProvider?.setDisableSplashAdTemporarily(true) mWBAPI = WBAPIFactory.createWBAPI(context) //初始化微博分享 mLoginCallback = loginCallback - val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val config = TheRouter.get(IConfigProvider::class.java) mWBAPI.registerApp( context, AuthInfo(context, config?.getWeiboAppKey(), "http://www.sina.com", WEIBO_SCOPE) diff --git a/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt b/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt index 250a959099..26c84a8fd0 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt @@ -4,22 +4,22 @@ import android.annotation.SuppressLint import android.app.Activity import android.app.Application import android.content.Context -import android.os.Bundle -import android.text.* +import android.content.Intent import android.view.LayoutInflater import android.view.View -import com.alibaba.android.arouter.launcher.ARouter +import androidx.appcompat.app.AppCompatActivity +import com.gh.gamecenter.common.avoidcallback.AvoidOnResultManager +import com.gh.gamecenter.common.avoidcallback.Callback +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.provider.IEntranceUtilsProvider import com.gh.gamecenter.core.provider.IQuickLoginProvider -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.core.utils.CurrentActivityHolder import com.gh.gamecenter.login.databinding.LayoutQuickLoginBinding import com.gh.gamecenter.login.user.LoginTag -import com.gh.gamecenter.login.view.LoginActivity -import com.gh.gamecenter.login.view.QuickLoginHelperActivity -import com.lightgame.utils.AppManager +import com.therouter.router.Navigator +import com.therouter.router.action.interceptor.ActionInterceptor +import java.lang.ref.WeakReference /** * 一键登录辅助类 @@ -39,7 +39,7 @@ object QuickLoginHelper { private var quickLoginProvider: IQuickLoginProvider? = null private fun getQuickLoginProvider(): IQuickLoginProvider? = quickLoginProvider - ?: (ARouter.getInstance().build(RouteConsts.provider.quickLogin).navigation() as? IQuickLoginProvider) + ?: TheRouter.get(IQuickLoginProvider::class.java) ?.also { quickLoginProvider = it } @@ -56,55 +56,66 @@ object QuickLoginHelper { } @JvmStatic - fun startLogin(context: Context, entrance: String, callback: (() -> Unit)? = null) { - getQuickLoginProvider()?.startLogin(context, entrance, callback) + fun startLogin(context: Context, + entrance: String, + continuablePath: String? = null, + callback: (() -> Unit)? = null) { + getQuickLoginProvider()?.startLogin(context, entrance, continuablePath, callback) } - fun createCustomView(context: Context, callback: (() -> Unit)?): View { + fun createCustomView(context: Context, continuablePath: String?, callback: (() -> Unit)?): View { return LayoutQuickLoginBinding.inflate(LayoutInflater.from(context)).apply { closeBtn.setOnClickListener { finishAuthActivity() } changeLoginBtn.setOnClickListener { - startCodeLoginPage(true, context, callback) + startCodeLoginPage(true, context, continuablePath, callback) NewFlatLogUtils.logFastLoginRelatedShow("mobile_number_verification_show") } qqBtn.setOnClickListener { getQuickLoginProvider()?.checkPolicyAndContinue(context) { - startQuickLoginHelperPage(LoginTag.qq, context = context, callback = callback) + startQuickLoginHelperPage(LoginTag.qq, context = context, continuablePath = continuablePath, callback = callback) NewFlatLogUtils.logFastLoginChoice("QQ") } - } wechatBtn.setOnClickListener { getQuickLoginProvider()?.checkPolicyAndContinue(context) { - startQuickLoginHelperPage(LoginTag.wechat, context = context, callback = callback) + startQuickLoginHelperPage(LoginTag.wechat, context = context, continuablePath = continuablePath, callback = callback) NewFlatLogUtils.logFastLoginChoice("微信") } } weiboBtn.setOnClickListener { getQuickLoginProvider()?.checkPolicyAndContinue(context) { - startQuickLoginHelperPage(LoginTag.weibo, context = context, callback = callback) + startQuickLoginHelperPage(LoginTag.weibo, context = context, continuablePath = continuablePath, callback = callback) NewFlatLogUtils.logFastLoginChoice("微博") } } - }.root } // 打开验证码登录页 - fun startCodeLoginPage(openAuthPageSuccess: Boolean, context: Context, callback: (() -> Unit)?) { - AppManager.getInstance().recentActiveActivity?.run { - val entranceUtilsProvider = ARouter.getInstance() - .build(RouteConsts.provider.entranceUtils) - .navigation() as? IEntranceUtilsProvider + fun startCodeLoginPage(openAuthPageSuccess: Boolean, context: Context, continuablePath: String?, callback: (() -> Unit)?) { + CurrentActivityHolder.getCurrentActivity()?.run { + val navigator = TheRouter.build(RouteConsts.activity.loginActivity) + .withString(EntranceConsts.KEY_ENTRANCE, if (openAuthPageSuccess) ENTRANCE_DEFAULT else entrance) + .withBoolean(EntranceConsts.KEY_FROM_QUICK_LOGIN, openAuthPageSuccess) + .withString(com.therouter.router.KEY_DESCRIPTION, continuablePath) - val bundle = Bundle() - bundle.putString(EntranceConsts.KEY_ENTRANCE, if (openAuthPageSuccess) ENTRANCE_DEFAULT else entrance) - bundle.putBoolean(EntranceConsts.KEY_FROM_QUICK_LOGIN, openAuthPageSuccess) - bundle.putString(EntranceConsts.KEY_TO, LoginActivity::class.java.name) - entranceUtilsProvider?.jumpActivityWithCallback(context, bundle) { - callback?.invoke() + if (callback == null) { + navigator.navigation(this) + } else { + val intent = navigator.createIntent(this) + + if (this is AppCompatActivity) { + AvoidOnResultManager.getInstance(this).startForResult(intent, object : Callback { + override fun onActivityResult(resultCode: Int, data: Intent?) { + callback.invoke() + } + }) + } else { + // 不回调,正常跳转 + context.startActivity(intent) + } } } } @@ -114,24 +125,43 @@ object QuickLoginHelper { loginTag: LoginTag, loginToken: String = "", context: Context, + continuablePath: String?, callback: (() -> Unit)? ) { - val entranceUtilsProvider = ARouter.getInstance() - .build(RouteConsts.provider.entranceUtils) - .navigation() as? IEntranceUtilsProvider + CurrentActivityHolder.getCurrentActivity()?.run { + val navigator = TheRouter.build(RouteConsts.activity.quickLoginActivity) + .withString(EntranceConsts.KEY_ENTRANCE, entrance) + .withSerializable(EntranceConsts.KET_TYPE, loginTag) + .withString(com.therouter.router.KEY_DESCRIPTION, continuablePath) + .also { + if (loginTag == LoginTag.oauth) { + it.withString(EntranceConsts.KEY_DATA, loginToken) + } + } - val bundle = Bundle() - bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) - bundle.putSerializable(EntranceConsts.KET_TYPE, loginTag) - bundle.putString(EntranceConsts.KEY_TO, QuickLoginHelperActivity::class.java.name) - if (loginTag == LoginTag.oauth) { - bundle.putString(EntranceConsts.KEY_DATA, loginToken) + if (callback == null) { + navigator.withString(com.therouter.router.KEY_DESCRIPTION, continuablePath) + } else { + // 避免内存泄漏 + val callbackRef = WeakReference(callback) + navigator.withString(com.therouter.router.KEY_DESCRIPTION, RouteConsts.Action.LOGIN_SUCCESS_ACTION) + TheRouter.addActionInterceptor( + RouteConsts.Action.LOGIN_SUCCESS_ACTION, + object : ActionInterceptor() { + override fun handle(context: Context, navigator: Navigator): Boolean { + callbackRef.get()?.invoke() + TheRouter.removeActionInterceptor( + RouteConsts.Action.LOGIN_SUCCESS_ACTION, + this + ) + return super.handle(context, navigator) + } + } + ) + } + + navigator.navigation(this) } - - entranceUtilsProvider?.jumpActivityWithCallback(context, bundle) { - callback?.invoke() - } - } fun isLoginAuthPage(activity: Activity): Boolean { diff --git a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginActivity.java b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginActivity.java index b15f01b16b..89d3f82d64 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginActivity.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; +import com.therouter.router.Route; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; diff --git a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java index 683c235330..8f3a57f7fd 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java @@ -24,7 +24,7 @@ import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.base.GlobalActivityManager; import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment; @@ -42,13 +42,13 @@ import com.gh.gamecenter.core.provider.IWebProvider; import com.gh.gamecenter.core.utils.ClickUtils; import com.gh.gamecenter.core.utils.DisplayUtils; import com.gh.gamecenter.core.utils.EmptyCallback; -import com.gh.gamecenter.core.utils.MtaHelper; import com.gh.gamecenter.core.utils.PatternUtils; import com.gh.gamecenter.login.HaloApp; import com.gh.gamecenter.login.R; import com.gh.gamecenter.login.databinding.FragmentLoginBinding; import com.gh.gamecenter.login.entity.LoginTokenEntity; import com.gh.gamecenter.login.entity.UserInfoEntity; +import com.gh.gamecenter.login.interceptor.LoginInterceptor; import com.gh.gamecenter.login.user.LoginTag; import com.gh.gamecenter.login.user.UserManager; import com.gh.gamecenter.login.user.UserViewModel; @@ -57,6 +57,7 @@ import com.gh.gamecenter.login.utils.LoginHelper; import com.gh.gamecenter.login.utils.LoginUtils; import com.gh.gamecenter.login.utils.NewFlatLogUtils; import com.gh.gamecenter.login.utils.QuickLoginHelper; +import com.therouter.router.NavigatorKt; import org.greenrobot.eventbus.EventBus; import org.jetbrains.annotations.NotNull; @@ -89,6 +90,8 @@ public class LoginFragment private boolean mIsFromQuickLogin = false; private final int THIRD_PARTY_LOGIN_CLICK_DIFF = 3000; + private String mRouteSource = ""; + @Override protected void handleMessage(Message msg) { if (msg.what == 0) { // 验证码倒计时 @@ -135,6 +138,7 @@ public class LoginFragment if (getArguments() != null) { mIsFromQuickLogin = getArguments().getBoolean(EntranceConsts.KEY_FROM_QUICK_LOGIN, false); + mRouteSource = getArguments().getString(NavigatorKt.KEY_DESCRIPTION, ""); } final UserViewModel.Factory factory = new UserViewModel.Factory(HaloApp.getInstance()); @@ -215,8 +219,7 @@ public class LoginFragment @Override public void onClick(@NonNull View widget) { - MtaHelper.onEvent("我的光环_新", "登录页面", "隐私政策"); - IWebProvider webActivity = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); + IWebProvider webActivity = TheRouter.get(IWebProvider.class); Intent intent = webActivity.getWebIntent(requireContext(), requireContext().getString(com.gh.gamecenter.common.R.string.privacy_policy_title), requireContext().getString(com.gh.gamecenter.common.R.string.privacy_policy_url)); if (intent != null) { startActivity(intent); @@ -235,8 +238,7 @@ public class LoginFragment @Override public void onClick(@NonNull View widget) { - MtaHelper.onEvent("我的光环_新", "登录页面", "用户协议"); - IWebProvider webActivity = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); + IWebProvider webActivity = TheRouter.get(IWebProvider.class); Intent intent = webActivity.getWebIntent(requireContext(), requireContext().getString(com.gh.gamecenter.common.R.string.disclaimer_title), requireContext().getString(com.gh.gamecenter.common.R.string.disclaimer_url)); if (intent != null) { startActivity(intent); @@ -252,7 +254,6 @@ public class LoginFragment if (id == R.id.checkIv) { mBinding.checkIv.setChecked(!mBinding.checkIv.isChecked()); } else if (id == R.id.login_captcha) { - MtaHelper.onEvent("我的光环_新", "登录页面", "获取验证码"); final String phoneNum = mBinding.loginPhoneEt.getText().toString().trim().replaceAll(" ", ""); if (PatternUtils.isPhoneNum(phoneNum) && phoneNum.length() == 11) { checkPolicyAndContinue(() -> { @@ -264,26 +265,22 @@ public class LoginFragment toast("请输入正确的手机号"); } } else if (id == R.id.login_phone_btn) { - MtaHelper.onEvent("我的光环_新", "登录页面", "点击登录"); loginByMobile(); } else if (id == R.id.login_qq_btn) { if (!ClickUtils.isFastDoubleClick(id, THIRD_PARTY_LOGIN_CLICK_DIFF)) { checkPolicyAndContinue(() -> { - MtaHelper.onEvent("我的光环_新", "登录页面", "QQ登录"); LoginHelper.loginWithQQ(this, requireActivity()); }); } } else if (id == R.id.login_weibo_btn) { if (!ClickUtils.isFastDoubleClick(id, THIRD_PARTY_LOGIN_CLICK_DIFF)) { checkPolicyAndContinue(() -> { - MtaHelper.onEvent("我的光环_新", "登录页面", "微博登录"); LoginHelper.loginWithWeibo(this, requireActivity()); }); } } else if (id == R.id.login_wechat_btn) { if (!ClickUtils.isFastDoubleClick(id, THIRD_PARTY_LOGIN_CLICK_DIFF)) { checkPolicyAndContinue(() -> { - MtaHelper.onEvent("我的光环_新", "登录页面", "微信登录"); LoginHelper.loginWithWechat(this); }); } @@ -427,7 +424,7 @@ public class LoginFragment if (loginTokenEntity != null) { String loginType = loginTokenEntity.getLoginType(); - ILogUtilsProvider logUtils = (ILogUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.logUtils).navigation(); + ILogUtilsProvider logUtils = TheRouter.get(ILogUtilsProvider.class); if (LoginTag.qq.name().equals(loginType) || LoginTag.wechat.name().equals(loginType) || LoginTag.weibo.name().equals(loginType) @@ -445,10 +442,19 @@ public class LoginFragment || LoginTag.douyin.name().equals(loginType); if (isThirdPartyLogin && TextUtils.isEmpty(response.getData().getLoginMobile())) { - ARouter.getInstance().build(RouteConsts.activity.bindPhoneActivity) + TheRouter.build(RouteConsts.activity.bindPhoneActivity) .withBoolean(EntranceConsts.KEY_FROM_LOGIN, true) .withBoolean(EntranceConsts.KEY_CHANGE_PHONE, false) + .withString(NavigatorKt.KEY_DESCRIPTION, mRouteSource) .navigation(); + } else { + if (!TextUtils.isEmpty(mRouteSource)) { + if (RouteConsts.Action.LOGIN_SUCCESS_ACTION.equals(mRouteSource)) { + TheRouter.build(RouteConsts.Action.LOGIN_SUCCESS_ACTION).action(); + } else { + TheRouter.build(mRouteSource).navigation(this); + } + } } } // 防止UserManager数据丢失后重复登录 @@ -490,7 +496,7 @@ public class LoginFragment } private void login(JSONObject content, LoginTag loginTag) { - ILogUtilsProvider logUtils = (ILogUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.logUtils).navigation(); + ILogUtilsProvider logUtils = TheRouter.get(ILogUtilsProvider.class); if (loginTag.equals(LoginTag.phone)) { logUtils.login("logging", "mobile", mEntrance); } else { diff --git a/module_login/src/main/java/com/gh/gamecenter/login/view/QuickLoginHelperActivity.kt b/module_login/src/main/java/com/gh/gamecenter/login/view/QuickLoginHelperActivity.kt index f6f8aa842c..7a2e61a25d 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/view/QuickLoginHelperActivity.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/view/QuickLoginHelperActivity.kt @@ -8,7 +8,7 @@ import android.text.TextUtils import androidx.activity.viewModels import androidx.core.view.WindowCompat import androidx.lifecycle.Observer -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment import com.gh.gamecenter.common.constant.EntranceConsts @@ -27,15 +27,18 @@ import com.gh.gamecenter.login.user.UserViewModel import com.gh.gamecenter.login.utils.LoginHelper import com.gh.gamecenter.login.utils.NewFlatLogUtils import com.gh.gamecenter.login.utils.QuickLoginHelper +import com.therouter.router.Route import org.json.JSONObject /** * 快速登录辅助页,此页面为透明页面,用于执行各快速登录流程 */ +@Route(path = RouteConsts.activity.quickLoginActivity) class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Observer> { private var mLoginTag: LoginTag? = null + private var mRouteSource = "" private var mLoginDialog: WaitingDialogFragment? = null private val mUserViewModel: UserViewModel by viewModels { UserViewModel.Factory(HaloApp.getInstance()) } @@ -52,6 +55,8 @@ class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Obse WindowCompat.getInsetsController(window, window.decorView)?.isAppearanceLightStatusBars = !DarkModeUtils.isDarkModeOn(this) mUserViewModel.loginObsUserinfo.observe(this, this) + mRouteSource = intent.extras?.getString(com.therouter.router.KEY_DESCRIPTION, "") ?: "" + handleLoginType() } @@ -73,7 +78,7 @@ class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Obse } private fun login(content: JSONObject, loginTag: LoginTag) { - val logUtils = ARouter.getInstance().build(RouteConsts.provider.logUtils).navigation() as? ILogUtilsProvider + val logUtils = TheRouter.get(ILogUtilsProvider::class.java) logUtils?.login("logging", loginTag.name, mEntrance) mLoginDialog = WaitingDialogFragment.newInstance(getString(R.string.logging)) @@ -116,8 +121,7 @@ class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Obse if (loginTokenEntity != null) { val loginType = loginTokenEntity.loginType - val logUtils = - ARouter.getInstance().build(RouteConsts.provider.logUtils).navigation() as? ILogUtilsProvider + val logUtils = TheRouter.get(ILogUtilsProvider::class.java) logUtils?.login("success", loginType, mEntrance) if (loginType == LoginTag.oauth.name) { @@ -130,10 +134,19 @@ class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Obse if (isThirdPartyLogin && TextUtils.isEmpty(response.data.loginMobile) ) { - ARouter.getInstance().build(RouteConsts.activity.bindPhoneActivity) + TheRouter.build(RouteConsts.activity.bindPhoneActivity) .withBoolean(EntranceConsts.KEY_FROM_LOGIN, true) .withBoolean(EntranceConsts.KEY_CHANGE_PHONE, false) - .navigation() + .withString(com.therouter.router.KEY_DESCRIPTION, mRouteSource) + .navigation(this) + } else { + if (!TextUtils.isEmpty(mRouteSource)) { + if (mRouteSource == RouteConsts.Action.LOGIN_SUCCESS_ACTION) { + TheRouter.build(RouteConsts.Action.LOGIN_SUCCESS_ACTION).action() + } else { + TheRouter.build(mRouteSource).navigation(this) + } + } } } @@ -153,6 +166,7 @@ class QuickLoginHelperActivity : BaseActivity(), LoginHelper.LoginCallback, Obse isSmsCodePageStarted = true finish() QuickLoginHelper.finishAuthActivity() + startActivity(LoginActivity.getIntent(this, QuickLoginHelper.ENTRANCE_DEFAULT, true)) } } diff --git a/module_login/src/main/java/com/gh/gamecenter/wxapi/WXEntryActivity.java b/module_login/src/main/java/com/gh/gamecenter/wxapi/WXEntryActivity.java index 803a4832eb..5aaba8ec0e 100644 --- a/module_login/src/main/java/com/gh/gamecenter/wxapi/WXEntryActivity.java +++ b/module_login/src/main/java/com/gh/gamecenter/wxapi/WXEntryActivity.java @@ -6,8 +6,7 @@ import android.os.Bundle; import android.text.TextUtils; import android.widget.TextView; -import com.alibaba.android.arouter.launcher.ARouter; -import com.gh.gamecenter.common.constant.RouteConsts; +import com.therouter.TheRouter; import com.gh.gamecenter.common.eventbus.EBShare; import com.gh.gamecenter.common.utils.SensorsBridge; import com.gh.gamecenter.common.utils.ShareUtils; @@ -45,7 +44,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - IConfigProvider config = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation(); + IConfigProvider config = TheRouter.get(IConfigProvider.class); mWxApi = WXAPIFactory.createWXAPI(this, config.getWechatAppId(), false); mWxApi.handleIntent(getIntent(), this); TextView textView = new TextView(this); @@ -64,8 +63,10 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC if (baseReq instanceof ShowMessageFromWX.Req) { String messageExt = ((ShowMessageFromWX.Req) baseReq).message.messageExt; if (!TextUtils.isEmpty(messageExt)) { - IDefaultUrlHandlerProvider defaultUrlHandler = (IDefaultUrlHandlerProvider) ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler).navigation(); - defaultUrlHandler.interceptUrl(this, messageExt, "浏览器", true, ""); + IDefaultUrlHandlerProvider defaultUrlHandler = TheRouter.get(IDefaultUrlHandlerProvider.class); + if (defaultUrlHandler != null) { + defaultUrlHandler.interceptUrl(this, messageExt, "微信", true, ""); + } finishActivity(); } } @@ -73,7 +74,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC @Override public void onResp(BaseResp baseResp) { - IQGameProvider iqGameProvider = (IQGameProvider) ARouter.getInstance().build(RouteConsts.provider.qGame).navigation(); + IQGameProvider iqGameProvider = TheRouter.get(IQGameProvider.class); // 将分享和 auth 的部分回调抛给 QGameProvider 处理 if (baseResp.getType() == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX && baseResp instanceof SendMessageToWX.Resp) { SendMessageToWX.Resp rsp = (SendMessageToWX.Resp) baseResp; @@ -250,10 +251,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC LoginHelper.onWechatLoginSuccess(content); if (resp.state != null && resp.state.contains("qqminigame") ) { - IQGameProvider iqGameProvider = (IQGameProvider) ARouter - .getInstance() - .build(RouteConsts.provider.qGame) - .navigation(); + IQGameProvider iqGameProvider = TheRouter.get(IQGameProvider.class); if (iqGameProvider != null) { iqGameProvider.onWechatLogin(this, content.toString(), false, "登录成功"); } @@ -277,7 +275,7 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC @Override protected void onDestroy() { super.onDestroy(); - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (appProvider != null) { appProvider.setDisableSplashAdTemporarily(false); } diff --git a/module_login/src/main/java/com/gh/gamecenter/wxapi/WeChatUserInfoThread.java b/module_login/src/main/java/com/gh/gamecenter/wxapi/WeChatUserInfoThread.java index c11afe5243..9d8ad7738c 100644 --- a/module_login/src/main/java/com/gh/gamecenter/wxapi/WeChatUserInfoThread.java +++ b/module_login/src/main/java/com/gh/gamecenter/wxapi/WeChatUserInfoThread.java @@ -3,7 +3,7 @@ package com.gh.gamecenter.wxapi; import android.content.Context; import android.text.TextUtils; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.core.provider.IConfigProvider; import com.lightgame.utils.Utils; @@ -41,7 +41,7 @@ public class WeChatUserInfoThread extends Thread { public void run() { super.run(); try { - IConfigProvider config = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation(); + IConfigProvider config = TheRouter.get(IConfigProvider.class); String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + config.getWechatAppId() + "&secret=" + config.getWechatSecret() + "&code=" + diff --git a/module_message/build.gradle b/module_message/build.gradle index f590843077..bc1b0707a0 100644 --- a/module_message/build.gradle +++ b/module_message/build.gradle @@ -6,6 +6,7 @@ if (isRelease.toBoolean()) { apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -49,10 +50,8 @@ android { viewBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } + ksp { + arg("ROUTER_MODULE_NAME", project.name) } buildTypes { @@ -78,7 +77,9 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + if (!isRelease.toBoolean()) { implementation "androidx.multidex:multidex:${multiDex}" } @@ -91,7 +92,4 @@ dependencies { implementation(project(':module_core_feature')) { exclude group: 'androidx.swiperefreshlayout' } - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' } \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/provider/ConcernInfoProviderImpl.kt b/module_message/src/main/java/com/gh/gamecenter/message/provider/ConcernInfoProviderImpl.kt index f7a78d4acf..5b27084d96 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/provider/ConcernInfoProviderImpl.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/provider/ConcernInfoProviderImpl.kt @@ -2,18 +2,14 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.IConcernInfoProvider import com.gh.gamecenter.message.view.concern.ConcernInfoActivity -@Route(path = RouteConsts.provider.concernInfo, name = "ConcernInfoActivity暴露服务") +@com.therouter.inject.ServiceProvider class ConcernInfoProviderImpl : IConcernInfoProvider { override fun getIntent(context: Context, entrance: String): Intent { return ConcernInfoActivity.getIntent(context, entrance) } - - override fun init(context: Context?) { - // do nothing - } } \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt index 1e13706e17..c928e6f876 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageWrapperActivity.kt @@ -11,7 +11,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentStatePagerAdapter import androidx.viewpager.widget.PagerAdapter -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.activity.BaseActivity_TabLayout import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernAdapter.java b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernAdapter.java index ff7a5bb3a4..216fef2fd2 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernAdapter.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernAdapter.java @@ -7,7 +7,7 @@ import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView.ViewHolder; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.callback.OnListClickListener; import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.constant.ItemViewType; @@ -193,7 +193,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { builder.deleteCharAt(builder.length() - 1); String ids = builder.toString(); - ILibaoUtilsProvider libaoUtilsProvider = (ILibaoUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.libaoUtils).navigation(); + ILibaoUtilsProvider libaoUtilsProvider = TheRouter.get(ILibaoUtilsProvider.class); libaoUtilsProvider.getLibaoStatus(ids, list -> { libaoStatusList.addAll((List) list); notifyItemRangeChanged(0, getItemCount()); @@ -216,7 +216,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { } builder.deleteCharAt(builder.length() - 1); String ids = builder.toString(); - IVisitManagerProvider visitManagerProvider = (IVisitManagerProvider) ARouter.getInstance().build(RouteConsts.provider.visitManager).navigation(); + IVisitManagerProvider visitManagerProvider = TheRouter.get(IVisitManagerProvider.class); if (visitManagerProvider != null) { visitManagerProvider.addUrl(ids); } @@ -266,7 +266,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { builder.append("-"); } builder.deleteCharAt(builder.length() - 1); - ICommentManagerProvider commentManager = (ICommentManagerProvider) ARouter.getInstance().build(RouteConsts.provider.commentManager).navigation(); + ICommentManagerProvider commentManager = TheRouter.get(ICommentManagerProvider.class); if (commentManager != null) { commentManager.addUrl(builder.toString()); } @@ -309,7 +309,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case ItemViewType.NEWS_DIGEST: - IConcernGiftPackUtilsProvider giftPackUtilsProvider = (IConcernGiftPackUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.concernGiftPackUtils).navigation(); + IConcernGiftPackUtilsProvider giftPackUtilsProvider = TheRouter.get(IConcernGiftPackUtilsProvider.class); if (giftPackUtilsProvider != null) { return new ConcernGiftPackViewHolder(giftPackUtilsProvider.createBinding(parent), giftPackUtilsProvider, contentEventListener); } else { @@ -317,7 +317,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { return new FooterViewHolder(view); } case ItemViewType.GAME_ARTICLE: - IConcernArticleUtilsProvider concernContentUtilsProvider = (IConcernArticleUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.concernContentUtils).navigation(); + IConcernArticleUtilsProvider concernContentUtilsProvider =TheRouter.get(IConcernArticleUtilsProvider.class); if (concernContentUtilsProvider != null) { return new ConcernArticleViewHolder(concernContentUtilsProvider.createArticleBinding(parent), concernContentUtilsProvider, contentEventListener); } @@ -362,7 +362,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { } private void initArticleConcernViewHolder(ConcernArticleViewHolder holder, int position) { - IConcernArticleUtilsProvider concernContentUtilsProvider = (IConcernArticleUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.concernContentUtils).navigation(); + IConcernArticleUtilsProvider concernContentUtilsProvider = TheRouter.get(IConcernArticleUtilsProvider.class); if (concernContentUtilsProvider == null) { return; } @@ -420,7 +420,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { notifyItemChanged(position); // 更新okhttp缓存数据 - IVisitManagerProvider visitManagerProvider = (IVisitManagerProvider) ARouter.getInstance().build(RouteConsts.provider.visitManager).navigation(); + IVisitManagerProvider visitManagerProvider = TheRouter.get(IVisitManagerProvider.class); if (visitManagerProvider != null && concernEntity.getId() != null) { visitManagerProvider.updateOkhttpCache(mContext, concernEntity.getId()); } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernArticleViewHolder.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernArticleViewHolder.kt index a07f05979d..3e3c73bbe9 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernArticleViewHolder.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernArticleViewHolder.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.message.view.concern import android.text.Html import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConcernArticleUtilsProvider @@ -46,9 +46,8 @@ class ConcernArticleViewHolder( } provider.getTvGameName(binding).text = item.getGameName() - val commentUtils = - ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation() as ICommentUtilsProvider - commentUtils.setCommentTime(provider.getTvTime(binding), item.time) + val commentUtils = TheRouter.get(ICommentUtilsProvider::class.java) + commentUtils?.setCommentTime(provider.getTvTime(binding), item.time) provider.getTvTitle(binding).text = item.title diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernFragment.java b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernFragment.java index fee780f898..5a00475a14 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernFragment.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernFragment.java @@ -19,7 +19,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.common.callback.OnRequestCallBackListener; @@ -163,7 +163,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo ((ToolBarActivity) requireActivity()).clearMenu(); initMenu(R.menu.menu_concern); - IMessageUnreadRepositoryProvider messageUnreadRepositoryProvider = (IMessageUnreadRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.messageUnreadRepository).navigation(); + IMessageUnreadRepositoryProvider messageUnreadRepositoryProvider = TheRouter.get(IMessageUnreadRepositoryProvider.class); if (messageUnreadRepositoryProvider != null && messageUnreadRepositoryProvider.getZixunConcernLiveData() != null && !mIsLogEnter) { boolean hasUnread = Boolean.TRUE.equals(messageUnreadRepositoryProvider.getZixunConcernLiveData().getValue()); NewFlatLogUtils.logGameActivityEnter(mEntrance, hasUnread ? 1 : 0); @@ -176,7 +176,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo super.onPause(); // 更新已读时间 - IGameTrendsHelperProvider gameTrendsHelperProvider = (IGameTrendsHelperProvider) ARouter.getInstance().build(RouteConsts.provider.gameTrendsHelper).navigation(); + IGameTrendsHelperProvider gameTrendsHelperProvider = TheRouter.get(IGameTrendsHelperProvider.class); if (gameTrendsHelperProvider != null) { gameTrendsHelperProvider.updateReadPostTime(); } @@ -193,8 +193,10 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo @Override public void onMenuItemClick(MenuItem menuItem) { if (menuItem.getItemId() == R.id.menu_concern) { - IConcernProvider concernProvider = (IConcernProvider) ARouter.getInstance().build(RouteConsts.provider.concernActivity).navigation(); - startActivity(concernProvider.getIntent(requireContext(), "(游戏动态:工具栏)")); + IConcernProvider concernProvider = TheRouter.get(IConcernProvider.class); + if (concernProvider != null) { + startActivity(concernProvider.getIntent(requireContext(), "(游戏动态:工具栏)")); + } } } @@ -254,7 +256,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo } private void showRecommendGames() { - IRegionSettingHelperProvider regionSettingHelperProvider = (IRegionSettingHelperProvider) ARouter.getInstance().build(RouteConsts.provider.regionSettingHelper).navigation(); + IRegionSettingHelperProvider regionSettingHelperProvider = TheRouter.get(IRegionSettingHelperProvider.class); // 先请求用户已关注的游戏数据 RetrofitManager.Companion.getInstance().getApi() @@ -466,11 +468,11 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo entity = LibaoEntity.Companion.createLibaoEntity(concernEntity, libaoStatusEntity); } } - IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation(); + IAppProvider appProvider = TheRouter.get(IAppProvider.class); if (appProvider != null && entity != null) { appProvider.put(LibaoEntity.TAG, entity); } - ARouter.getInstance().build(RouteConsts.activity.libaoDetailActivity) + TheRouter.build(RouteConsts.activity.libaoDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, buildEntrance(position)) .withBoolean(EntranceConsts.KEY_IS_CLICK_RECEIVE_BTN, false) .navigation(requireActivity(), NEWS_MESSAGE_LIBAO_REQUEST); @@ -481,7 +483,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo if (gameEntity == null) { return; } - IGameDetailProvider gameDetailProvider = (IGameDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation(); + IGameDetailProvider gameDetailProvider = TheRouter.get(IGameDetailProvider.class); if (gameDetailProvider != null) { gameDetailProvider.startGameDetailActivity(requireContext(), gameEntity.getId(), buildEntrance(position), null); } @@ -498,8 +500,8 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo } private void navigateToArticleDetailPage(int position, ConcernEntity concernEntity) { - IDataCollectionProvider dataCollectionUtils = (IDataCollectionProvider) ARouter.getInstance().build(RouteConsts.provider.dataCollection).navigation(); - IWebProvider webProvider = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); + IDataCollectionProvider dataCollectionUtils = TheRouter.get(IDataCollectionProvider.class); + IWebProvider webProvider = TheRouter.get(IWebProvider.class); if (dataCollectionUtils != null) { dataCollectionUtils.uploadClick(requireContext(), "列表", "资讯-关注", concernEntity.getTitle()); } @@ -510,7 +512,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo Intent intent = webProvider.getIntentByNews(getContext(), concernEntity.getLink(), concernEntity.getGameName(), concernEntity.getId(), buildEntrance(position)); startActivityForResult(intent, NEWS_MESSAGE_ARTICLE_REQUEST); } else { - ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + TheRouter.build(RouteConsts.activity.newsDetailActivity) .withString(EntranceConsts.KEY_NEWSID, concernEntity.getId()) .withString(EntranceConsts.KEY_ENTRANCE, buildEntrance(position)) .navigation(requireActivity(), NEWS_MESSAGE_ARTICLE_REQUEST); @@ -519,7 +521,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo private void comment(int position, ConcernEntity concernEntity) { NewFlatLogUtils.logGameActivityClick(mEntrance, concernEntity.getId(), concernEntity.getType(), position + 1, "查看评论", concernEntity.getGameId(), concernEntity.getGameName()); - IMessageDetailProvider messageDetailProvider = (IMessageDetailProvider) ARouter.getInstance().build(RouteConsts.provider.messageDetail).navigation(); + IMessageDetailProvider messageDetailProvider = TheRouter.get(IMessageDetailProvider.class); mAdapter.setSkipPosition(position); if (messageDetailProvider != null) { Intent intent = messageDetailProvider.getIntentByEntity(requireContext(), concernEntity, buildEntrance(position)); @@ -530,7 +532,7 @@ public class ConcernFragment extends ToolbarFragment implements SwipeRefreshLayo private void share(int position, ConcernEntity concernEntity) { NewFlatLogUtils.logGameActivityClick(mEntrance, concernEntity.getId(), concernEntity.getType(), position + 1, "分享", concernEntity.getGameId(), concernEntity.getGameName()); - IConcernShareNewsProvider shareNewsProvider = (IConcernShareNewsProvider) ARouter.getInstance().build(RouteConsts.provider.concernShareNews).navigation(); + IConcernShareNewsProvider shareNewsProvider = TheRouter.get(IConcernShareNewsProvider.class); if (shareNewsProvider != null) { shareNewsProvider.share((AppCompatActivity) requireActivity(), concernEntity.getShortId(), concernEntity.getId(), concernEntity.getGameIcon(), concernEntity.getTitle()); } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernGiftPackViewHolder.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernGiftPackViewHolder.kt index a1414d9b32..244e2aeccd 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernGiftPackViewHolder.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/concern/ConcernGiftPackViewHolder.kt @@ -1,7 +1,7 @@ package com.gh.gamecenter.message.view.concern import androidx.viewbinding.ViewBinding -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConcernGiftPackUtilsProvider @@ -34,9 +34,8 @@ class ConcernGiftPackViewHolder( } provider.getTvGameName(binding).text = game?.name ?: "" - val commentUtils = - ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation() as ICommentUtilsProvider - commentUtils.setCommentTime(provider.getTvTime(binding), concernEntity.time) + val commentUtils = TheRouter.get(ICommentUtilsProvider::class.java) + commentUtils?.setCommentTime(provider.getTvTime(binding), concernEntity.time) provider.getTvGiftPackName(binding).text = concernEntity.name provider.getTvGiftPackContent(binding).text = concernEntity.content diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/AskFollowMoreDialog.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/AskFollowMoreDialog.kt index 399a2806d9..9073b6b99a 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/AskFollowMoreDialog.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/AskFollowMoreDialog.kt @@ -9,7 +9,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.BaseDialogFragment import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.ImageUtils @@ -77,12 +77,10 @@ class AskFollowMoreDialog : BaseDialogFragment() { val user = list[position] ImageUtils.display(binding.ivIcon, user.icon) binding.tvUsername.text = user.name - val commentUtils = ARouter.getInstance().build(RouteConsts.provider.commentUtils) - .navigation() as? ICommentUtilsProvider + val commentUtils = TheRouter.get(ICommentUtilsProvider::class.java) binding.tvTime.text = commentUtils?.getCommentTime(user.time ?: 0) binding.root.setOnClickListener { - val directUtils = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToHomeActivity(context, list[position].id, "问答-关注", path) } } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java index 69e25503d6..2c814a4556 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java @@ -11,7 +11,7 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.base.BaseRecyclerViewHolder; import com.gh.gamecenter.common.base.activity.BaseActivity; import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout; @@ -100,7 +100,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ExtensionsKt.goneIf(mBinding.messageUnread, messageEntity.getRead()); mBinding.messageUserName.setText(messageEntity.getUserEntity().getName()); - ICommentUtilsProvider commentUtils = (ICommentUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation(); + ICommentUtilsProvider commentUtils = TheRouter.get(ICommentUtilsProvider.class); if (commentUtils != null) { mBinding.messageTime.setText(commentUtils.getCommentTime(messageEntity.getTime())); } @@ -557,7 +557,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginal.setLayoutParams(params); }); - IDirectProvider directUtils = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); + IDirectProvider directUtils = TheRouter.get(IDirectProvider.class); mBinding.messageUserMore.setOnClickListener(v -> { MessageEntity.Fold fold = messageEntity.getFold(); @@ -646,8 +646,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder Intent intent; String messageType; - INewCommentDetailProvider newCommentDetailProvider = (INewCommentDetailProvider) ARouter.getInstance().build(RouteConsts.provider.newCommentDetail).navigation(); - IGameCollectionDetailProvider gameCollectionDetailProvider = (IGameCollectionDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameCollectionDetail).navigation(); + INewCommentDetailProvider newCommentDetailProvider = TheRouter.get(INewCommentDetailProvider.class); + IGameCollectionDetailProvider gameCollectionDetailProvider = TheRouter.get(IGameCollectionDetailProvider.class); switch (entity.getType()) { case "comment_vote": @@ -666,12 +666,12 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "赞同" ); if (view.getId() == R.id.message_original) { - ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + TheRouter.build(RouteConsts.activity.newsDetailActivity) .withString(EntranceConsts.KEY_NEWSID, entity.getArticle().getId()) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .navigation(); } else if (view.getId() == R.id.message_item) { - IMessageDetailProvider messageDetailProvider = (IMessageDetailProvider) ARouter.getInstance().build(RouteConsts.provider.messageDetail).navigation(); + IMessageDetailProvider messageDetailProvider = TheRouter.get(IMessageDetailProvider.class); if (messageDetailProvider != null) { context.startActivity(messageDetailProvider.getIntentById(context, entity.getArticle().getId(), -1, false, BaseActivity.mergeEntranceAndPath(entrance, path))); @@ -694,12 +694,12 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "普通消息" ); if (view.getId() == R.id.message_original) { - ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + TheRouter.build(RouteConsts.activity.newsDetailActivity) .withString(EntranceConsts.KEY_NEWSID, entity.getArticle().getId()) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .navigation(); } else if (view.getId() == R.id.message_item) { - ICommentDetailProvider commentDetailProvider = (ICommentDetailProvider) ARouter.getInstance().build(RouteConsts.provider.commentDetail).navigation(); + ICommentDetailProvider commentDetailProvider = TheRouter.get(ICommentDetailProvider.class); if (commentDetailProvider != null) { context.startActivity(commentDetailProvider.getIntent(context, entity.getDialogue().getFrom().getId(), entity.getArticle())); } @@ -722,7 +722,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ); if (view.getId() == R.id.message_original || view.getId() == R.id.message_item) { MessageEntity.Question question = entity.getQuestion(); - ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + TheRouter.build(RouteConsts.activity.questionDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .withString(EntranceConsts.KEY_QUESTIONS_ID, question.getId()) .withString(EntranceConsts.KEY_PATH, path) @@ -753,7 +753,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder sessionMessageType, messageType ); - ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + TheRouter.build(RouteConsts.activity.questionDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .withString(EntranceConsts.KEY_QUESTIONS_ID, entity.getQuestion().getId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getAnswer().getId()) @@ -778,7 +778,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ); if (view.getId() == R.id.message_original) { MessageEntity.Question question = entity.getQuestion(); - ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + TheRouter.build(RouteConsts.activity.questionDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .withString(EntranceConsts.KEY_QUESTIONS_ID, question.getId()) .withString(EntranceConsts.KEY_ANSWER_ID, entity.getAnswer().getId()) @@ -786,7 +786,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder .withString(EntranceConsts.KEY_PATH, path) .navigation(); } else if (view.getId() == R.id.message_item) { - ISimpleAnswerDetailProvider simpleAnswerDetailProvider = (ISimpleAnswerDetailProvider) ARouter.getInstance().build(RouteConsts.provider.simpleAnswerDetail).navigation(); + ISimpleAnswerDetailProvider simpleAnswerDetailProvider = TheRouter.get(ISimpleAnswerDetailProvider.class); if (simpleAnswerDetailProvider != null) { context.startActivity(simpleAnswerDetailProvider.getIntent(context, entity.getAnswer().getId(), entrance, path)); } @@ -869,7 +869,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder messageType ); community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); - ARouter.getInstance().build(RouteConsts.activity.articleDetailActivity) + TheRouter.build(RouteConsts.activity.articleDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .withString(EntranceConsts.KEY_COMMUNITY_ARTICLE_ID, entity.getArticle().getId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getComment().getId()) @@ -919,7 +919,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "赞同" ); community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); - ARouter.getInstance().build(RouteConsts.activity.articleDetailActivity) + TheRouter.build(RouteConsts.activity.articleDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) .withString(EntranceConsts.KEY_COMMUNITY_ARTICLE_ID, entity.getArticle().getId()) .withParcelable(EntranceConsts.KEY_COMMUNITY_DATA, community) @@ -967,13 +967,12 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder sessionMessageType, "赞同" ); - IGameDetailProvider gameDetailProvider = (IGameDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation(); + IGameDetailProvider gameDetailProvider = TheRouter.get(IGameDetailProvider.class); if (gameDetailProvider != null) { gameDetailProvider.startGameDetailActivity( context, entity.getGame().getId(), BaseActivity.mergeEntranceAndPath(entrance, path), - -1, true, false, false, @@ -1006,7 +1005,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ExposureSource exposureSource = new ExposureSource("消息中心", ""); ArrayList exposureSourceList = new ArrayList<>(); exposureSourceList.add(exposureSource); - ARouter.getInstance().build(RouteConsts.activity.ratingReplyActivity) + TheRouter.build(RouteConsts.activity.ratingReplyActivity) .withString(EntranceConsts.KEY_GAMEID, entity.getGame().getId()) .withString(EntranceConsts.KEY_COMMENTID, entity.getReply().getCommentId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getReply().getId()) @@ -1029,7 +1028,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder sessionMessageType, "赞同" ); - IDirectProvider directUtils = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); + IDirectProvider directUtils = TheRouter.get(IDirectProvider.class); directUtils.directToVideoDetail( context, entity.getVideo().getId(), @@ -1058,7 +1057,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder sessionMessageType, messageType ); - ARouter.getInstance().build(RouteConsts.activity.forumVideoDetailActivity) + TheRouter.build(RouteConsts.activity.forumVideoDetailActivity) .withString(EntranceConsts.KEY_VIDEO_ID, entity.getVideo().getId()) .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getComment().getId()) .withInt(BaseFragment_TabLayout.PAGE_INDEX, 1) @@ -1142,7 +1141,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder sessionMessageType, messageType ); - IWebProvider webProvider = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); + IWebProvider webProvider = TheRouter.get(IWebProvider.class); if (webProvider != null) { if (view.getId() == R.id.message_original) { context.startActivity(webProvider.getIntent(context, entity.getActivity().getUrl(), true)); diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt index 7e3322a3c1..853777edcb 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt @@ -11,7 +11,7 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.drawee.generic.RoundingParams import com.facebook.drawee.view.SimpleDraweeView import com.gh.gamecenter.common.baselist.ListAdapter @@ -53,12 +53,9 @@ class MessageListAdapter( ) : ListAdapter(context) { private val mImageSize = (mContext.resources.displayMetrics.widthPixels - 36F.dip2px()) / 3 - private val mDirectUtils = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider - private val mLinkDirectUtils = - ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation() as? ILinkDirectUtilsProvider - private val mGameDetailProvider = - ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation() as? IGameDetailProvider + private val mDirectUtils = TheRouter.get(IDirectProvider::class.java) + private val mLinkDirectUtils = TheRouter.get(ILinkDirectUtilsProvider::class.java) + private val mGameDetailProvider = TheRouter.get(IGameDetailProvider::class.java) override fun getItemViewType(position: Int): Int { return when (mType) { @@ -159,8 +156,10 @@ class MessageListAdapter( draweeView.layoutParams = params draweeView.setImageURI(image) draweeView.setOnClickListener { - ARouter.getInstance().build(RouteConsts.activity.imageViewerActivity) - .withStringArrayList(EntranceConsts.KEY_URL_LIST, images as ArrayList) + TheRouter.build(RouteConsts.activity.imageViewerActivity) + .apply { + extras.putStringArrayList(EntranceConsts.KEY_URL_LIST, images as ArrayList) + } .withInt(EntranceConsts.KEY_CURRENT, i) .withString(EntranceConsts.KEY_ENTRANCE, "(消息中心-系统)") .navigation() @@ -312,8 +311,7 @@ class MessageListAdapter( holder.binding.messageUserBadge.visibility = View.GONE } - val commentUtilsProvider = - ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation() as? ICommentUtilsProvider + val commentUtilsProvider = TheRouter.get(ICommentUtilsProvider::class.java) commentUtilsProvider?.setCommentTime(holder.binding.messageKefuTime, entity.time) if (!TextUtils.isEmpty(entity.suggestion)) { @@ -411,11 +409,10 @@ class MessageListAdapter( draweeView.layoutParams = params draweeView.setImageURI(image) draweeView.setOnClickListener { - ARouter.getInstance().build(RouteConsts.activity.imageViewerActivity) - .withStringArrayList( - EntranceConsts.KEY_URL_LIST, - entity.content?.images!! as ArrayList - ) + TheRouter.build(RouteConsts.activity.imageViewerActivity) + .apply { + extras.putStringArrayList(EntranceConsts.KEY_URL_LIST, entity.content?.images!! as ArrayList) + } .withInt(EntranceConsts.KEY_CURRENT, i) .withString(EntranceConsts.KEY_ENTRANCE, "(消息中心-系统)") .navigation() @@ -431,8 +428,7 @@ class MessageListAdapter( holder.binding.messageKefuImagesContainer.visibility = View.GONE } - val commentUtilsProvider = - ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation() as? ICommentUtilsProvider + val commentUtilsProvider = TheRouter.get(ICommentUtilsProvider::class.java) commentUtilsProvider?.setCommentTime(messageKefuTime, entity.time.create) if (!entity.links.isNullOrEmpty()) { @@ -550,15 +546,14 @@ class MessageListAdapter( } "新闻" -> if (!TextUtils.isEmpty(data.id)) { - ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + TheRouter.build(RouteConsts.activity.newsDetailActivity) .withString(EntranceConsts.KEY_ENTRANCE, "(消息-公告)") .withString(EntranceConsts.KEY_NEWSID, data.id) .navigation() } "专题" -> { - val subjectProvider = - ARouter.getInstance().build(RouteConsts.provider.subject).navigation() as ISubjectProvider + val subjectProvider = TheRouter.get(ISubjectProvider::class.java) if (!TextUtils.isEmpty(data.id) && subjectProvider != null) { subjectProvider.startSubjectActivity(mContext, data.id, null, false, "(消息-客服)") } @@ -571,7 +566,7 @@ class MessageListAdapter( } "问题" -> if (!TextUtils.isEmpty(data.id)) { - ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + TheRouter.build(RouteConsts.activity.questionDetailActivity) .withString(EntranceConsts.KEY_QUESTIONS_ID, data.id) .withString(EntranceConsts.KEY_ENTRANCE, mEntrance) .withString(EntranceConsts.KEY_PATH, "(消息-客服)") @@ -610,7 +605,6 @@ class MessageListAdapter( mContext, data.id ?: "", "", - -1, true, false, false, @@ -680,7 +674,7 @@ class MessageListAdapter( val exposureSource = ExposureSource("消息中心", "") val exposureSourceList = ArrayList() exposureSourceList.add(exposureSource) - ARouter.getInstance().build(RouteConsts.activity.ratingReplyActivity) + TheRouter.build(RouteConsts.activity.ratingReplyActivity) .withString(EntranceConsts.KEY_GAMEID, data.gameId) .withString(EntranceConsts.KEY_COMMENTID, data.link) .withString(EntranceConsts.KEY_EXPOSURE_SOURCE, toJson(exposureSourceList)) diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt index b4e24075b9..7f4cabfcc6 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListAdapter.kt @@ -9,7 +9,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.baselist.ListAdapter @@ -88,8 +88,7 @@ class SortedMessageListAdapter( gameSubtitleTv.visibility = View.GONE } - val commentUtils = ARouter.getInstance().build(RouteConsts.provider.commentUtils) - .navigation() as? ICommentUtilsProvider + val commentUtils = TheRouter.get(ICommentUtilsProvider::class.java) entity.latestContent?.let { if (it.time <= 0) { timeTv.text = "" diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt index d6e00a2317..11dd7f2033 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/SortedMessageListViewModel.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.message.view.message import android.annotation.SuppressLint import android.app.Application import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.baselist.ListViewModel import com.gh.gamecenter.common.baselist.LoadStatus import com.gh.gamecenter.common.baselist.LoadType @@ -26,9 +26,7 @@ import retrofit2.HttpException class SortedMessageListViewModel(application: Application) : ListViewModel(application) { private val mApi = RetrofitManager.getInstance().newApi - private val mMessageUnreadRepositoryProvider = - ARouter.getInstance().build(RouteConsts.provider.messageUnreadRepository) - .navigation() as? IMessageUnreadRepositoryProvider + private val mMessageUnreadRepositoryProvider = TheRouter.get(IMessageUnreadRepositoryProvider::class.java) override fun provideDataObservable(page: Int): Observable> { return mApi.getSortedMessage() diff --git a/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java b/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java index 2ef5622d0c..e803916f69 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java +++ b/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java @@ -4,7 +4,7 @@ import android.app.Activity; import android.content.Context; import android.text.TextUtils; -import com.alibaba.android.arouter.launcher.ARouter; +import com.therouter.TheRouter; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; @@ -29,7 +29,7 @@ public class CheckLoginUtils { if (SPUtils.getBoolean(Constants.SP_HAS_GET_PHONE_INFO) || NetworkUtils.isOpenMobileData(context)) { startQuickLogin(context, entrance); } else { - ARouter.getInstance().build(RouteConsts.activity.loginActivity) + TheRouter.build(RouteConsts.activity.loginActivity) .withString(EntranceConsts.KEY_ENTRANCE, entrance) .navigation(); } diff --git a/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt b/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt index eda3f5bb5b..5be8bae079 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.message import android.os.Build import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.animated.giflite.GifDecoder import com.facebook.common.logging.FLog import com.facebook.imageformat.DefaultImageFormats @@ -37,10 +37,10 @@ class MessageModuleApp : MultiDexApplication() { private fun initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + // 可以直接删掉本行 ARouter.openLog() // 打印日志 + // 可以直接删掉本行 ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 + // 可以直接删掉本行 ARouter.init(this) // 尽可能早,推荐在Application中初始化 } fun initFresco() { diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt index 864eeb4cb9..572f47986b 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.message.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider @@ -11,12 +11,8 @@ import com.gh.gamecenter.message.BuildConfig import com.gh.gamecenter.message.HaloApp import com.gh.gamecenter.message.R -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun getAppName(): String { return HaloApp.getInstance().getString(R.string.app_name) } diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt index fed078ad27..bb05967be8 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt @@ -4,13 +4,13 @@ import android.content.Context import android.view.View import android.widget.LinearLayout import android.widget.TextView -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.provider.IBindingAdaptersProvider -@Route(path = RouteConsts.provider.bindingAdapters, name = "BindingAdapters暴露服务") +@com.therouter.inject.ServiceProvider class BindingAdaptersProviderImpl : IBindingAdaptersProvider { override fun setGameName( view: TextView, @@ -32,8 +32,4 @@ class BindingAdaptersProviderImpl : IBindingAdaptersProvider { override fun setGame(view: View, gameEntity: GameEntity) { ToastUtils.toast("调用->BindingAdaptersProviderImpl.setGame") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt index 58e4ff63a5..9f2ba681d1 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt @@ -1,17 +1,13 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBuildConfigProvider import com.gh.gamecenter.message.BuildConfig -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +@com.therouter.inject.ServiceProvider class BuildConfigImpl : IBuildConfigProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun getApplicationId(): String = BuildConfig.APPLICATION_ID override fun getVersionName(): String = BuildConfig.VERSION_NAME diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt index 786e412a88..507597e7b4 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ICheckLoginProvider import com.gh.gamecenter.message.CheckLoginUtils -@Route(path = RouteConsts.provider.checkLogin, name = "CheckLoginUtils暴露服务") +@com.therouter.inject.ServiceProvider class CheckLoginProviderImpl : ICheckLoginProvider { override fun checkLogin(context: Context, entrance: String, action: (() -> Unit)?) { CheckLoginUtils.checkLogin(context, entrance, action) diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt index 78cdc7e9fc..e455a45865 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt @@ -3,20 +3,16 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.ICommentDetailProvider -@Route(path = RouteConsts.provider.commentDetail, name = "CommentDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class CommentDetailProviderImpl : ICommentDetailProvider { override fun getIntent(context: Context, commentId: String?, message: Parcelable): Intent? { ToastUtils.toast("调用->CommentDetailProviderImpl.getIntent") return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt index 8a17d8cdad..5c9c7fb5aa 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.widget.TextView -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.ICommentUtilsProvider -@Route(path = RouteConsts.provider.commentUtils, name = "CommentUtils暴露服务") +@com.therouter.inject.ServiceProvider class CommentUtilsProviderImpl : ICommentUtilsProvider { override fun setCommentTime(textView: TextView, time: Long) { ToastUtils.toast("调用->CommentUtilsProviderImpl.setCommentTime") @@ -17,8 +17,4 @@ class CommentUtilsProviderImpl : ICommentUtilsProvider { ToastUtils.toast("调用->CommentUtilsProviderImpl.getCommentTime") return "" } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt index 6fd0a19df3..8e899b717a 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +@com.therouter.inject.ServiceProvider class ConfigProviderImpl : IConfigProvider { override fun getTencentAppId(): String { return "" @@ -99,8 +99,4 @@ class ConfigProviderImpl : IConfigProvider { override fun getNightModeSetting(): Boolean { return false } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt index 3489ac542e..2b90a2b237 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDataUtilsProvider -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataUtilsProviderImpl : IDataUtilsProvider { override fun getDeviceCertification() { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt index 2885f55519..46d8bc07de 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider -@Route(path = RouteConsts.provider.gameCollectionDetail, name = "GameCollectionDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent? { ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getIntent") @@ -18,9 +18,4 @@ class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getSpecifiedCommentIntent") return null } - - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt index 7fe6515e82..7d7b180c55 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt @@ -1,14 +1,14 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feature.provider.IGameDetailProvider -@Route(path = RouteConsts.provider.gameDetail, name = "GameDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class GameDetailProviderImpl : IGameDetailProvider { override fun startGameDetailActivity( context: Context, @@ -54,8 +54,4 @@ class GameDetailProviderImpl : IGameDetailProvider { ) { ToastUtils.toast("调用->GameDetailProviderImpl.startGameDetailActivity") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt index 2b29234eac..8b640ce29d 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.* -@Route(path = RouteConsts.provider.logUtils, name = "LogUtils暴露服务") +@com.therouter.inject.ServiceProvider class LogUtilsProviderImpl : ILogUtilsProvider { override fun login(loginStep: String, loginType: String, entrance: String) { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt index 24937c5bd4..91f7f23818 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt @@ -2,13 +2,13 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.entity.ConcernEntity import com.gh.gamecenter.feature.provider.IMessageDetailProvider -@Route(path = RouteConsts.provider.messageDetail, name = "MessageDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class MessageDetailProviderImpl : IMessageDetailProvider { override fun getIntentById( @@ -26,8 +26,4 @@ class MessageDetailProviderImpl : IMessageDetailProvider { ToastUtils.toast("调用->MessageDetailProviderImpl.getIntentByEntity") return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt index 97f15640fa..ace189d8ff 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt @@ -3,14 +3,14 @@ package com.gh.gamecenter.message.provider import android.content.Context import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.MutableLiveData -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.entity.MessageUnreadCount import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider -@Route(path = RouteConsts.provider.messageUnreadRepository, name = "MessageUnreadRepository暴露服务") +@com.therouter.inject.ServiceProvider class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { override fun loadMessageUnreadData() { @@ -35,8 +35,4 @@ class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { ToastUtils.toast("调用->MessageUnreadRepositoryProviderImpl.getMessageUnreadCountLiveData") return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt index 034e985605..2488d8568a 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.INewCommentDetailProvider -@Route(path = RouteConsts.provider.newCommentDetail, name = "NewCommentDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class NewCommentDetailProviderImpl : INewCommentDetailProvider { override fun getAnswerCommentIntent( context: Context, @@ -57,9 +57,4 @@ class NewCommentDetailProviderImpl : INewCommentDetailProvider { ToastUtils.toast("调用->NewCommentDetailProviderImpl.getGameCollectionCommentIntent") return null } - - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt index 44f15ecb3e..91abb38f21 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageUtilsProvider -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +@com.therouter.inject.ServiceProvider class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun obtainProcessName(): String? { return "" diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt index 6d291c163a..6274eb1649 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt @@ -2,20 +2,16 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.ISimpleAnswerDetailProvider -@Route(path = RouteConsts.provider.simpleAnswerDetail, name = "SimpleAnswerDetailActivity暴露服务") +@com.therouter.inject.ServiceProvider class SimpleAnswerDetailProviderImpl : ISimpleAnswerDetailProvider { override fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent? { ToastUtils.toast("调用->SimpleAnswerDetailProviderImpl.getIntent") return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt index fad5bb50ef..0f2a8666b8 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.message.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.feature.provider.ISubjectProvider -@Route(path = RouteConsts.provider.subject, name = "SubjectActivity暴露服务") +@com.therouter.inject.ServiceProvider class SubjectProviderImpl : ISubjectProvider { override fun startSubjectActivity( context: Context, diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt index 57c5652a59..fc36b43c15 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.message.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWebProvider -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +@com.therouter.inject.ServiceProvider class WebProviderImpl : IWebProvider { override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? { return null @@ -39,8 +39,4 @@ class WebProviderImpl : IWebProvider { ): Intent? { return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_sensors_data/build.gradle b/module_sensors_data/build.gradle index 03a7c5dcf1..0c77b7c8bf 100644 --- a/module_sensors_data/build.gradle +++ b/module_sensors_data/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'com.sensorsdata.analytics.android' + id 'com.google.devtools.ksp' } android { @@ -17,10 +18,8 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } + ksp { + arg("ROUTER_MODULE_NAME", project.getName()) } flavorDimensions("env") @@ -102,13 +101,11 @@ android { } dependencies { - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + implementation "com.sensorsdata.analytics.android:SensorsAnalyticsSDK:$sensorsDataVersion" implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' } - - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } \ No newline at end of file diff --git a/module_sensors_data/src/main/java/com/gh/gamecenter/sensorsdata/provider/SensorsProviderImpl.kt b/module_sensors_data/src/main/java/com/gh/gamecenter/sensorsdata/provider/SensorsProviderImpl.kt index 3b0dc596df..328077a3bb 100644 --- a/module_sensors_data/src/main/java/com/gh/gamecenter/sensorsdata/provider/SensorsProviderImpl.kt +++ b/module_sensors_data/src/main/java/com/gh/gamecenter/sensorsdata/provider/SensorsProviderImpl.kt @@ -2,22 +2,18 @@ package com.gh.gamecenter.sensorsdata.provider import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISensorsProvider import com.gh.gamecenter.sensorsdata.SensorsHelper import org.json.JSONObject -@Route(path = RouteConsts.provider.sensors, name = "SensorsHelper暴露服务") +@com.therouter.inject.ServiceProvider class SensorsProviderImpl : ISensorsProvider { override fun init(application: Application, channel: String) { SensorsHelper.init(application, channel) } - override fun init(context: Context?) { - // Do nothing - } - override fun login(loginId: String) { SensorsHelper.login(loginId) } diff --git a/module_setting/build.gradle b/module_setting/build.gradle index 811eb29632..1c63f1d62d 100644 --- a/module_setting/build.gradle +++ b/module_setting/build.gradle @@ -6,6 +6,7 @@ if (isRelease.toBoolean()) { apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -45,12 +46,6 @@ android { viewBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { debug { if (!isRelease.toBoolean()) { @@ -75,7 +70,9 @@ android { dependencies { implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + if (!isRelease.toBoolean()) { implementation "androidx.multidex:multidex:${multiDex}" } @@ -90,8 +87,4 @@ dependencies { exclude group: 'androidx.swiperefreshlayout' } implementation "com.lg:gid:${gid}" - - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } \ No newline at end of file diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/provider/SettingProviderImpl.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/provider/SettingProviderImpl.kt index 72c7255882..d22bddcccd 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/provider/SettingProviderImpl.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/provider/SettingProviderImpl.kt @@ -2,8 +2,6 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISettingProvider import com.gh.gamecenter.setting.view.AboutActivity import com.gh.gamecenter.setting.view.SettingActivity @@ -11,7 +9,7 @@ import com.gh.gamecenter.setting.view.security.BindPhoneActivity import com.gh.gamecenter.setting.view.security.SecurityActivity -@Route(path = RouteConsts.provider.setting, name = "Setting暴露服务") +@com.therouter.inject.ServiceProvider class SettingProviderImpl : ISettingProvider { override fun getSettingIntent(context: Context, isUpdate: Boolean, entrance: String): Intent { return SettingActivity.getIntent(context, isUpdate, entrance) @@ -28,9 +26,4 @@ class SettingProviderImpl : ISettingProvider { override fun getAboutIntent(context: Context?, isUpdate: Boolean): Intent { return AboutActivity.getIntent(context, isUpdate) } - - override fun init(context: Context?) { - // do nothing - } - } \ No newline at end of file diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java index 56d6e7c2c0..0713cb1e43 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; -import com.alibaba.android.arouter.facade.annotation.Route; +import com.therouter.router.Route; import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt index e7b52e777a..7eea4dc33f 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt @@ -9,10 +9,9 @@ import android.os.Message import android.preference.PreferenceManager import android.text.TextUtils import android.view.View -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.common.utils.DialogHelper import com.gh.gamecenter.common.utils.PackageFlavorHelper @@ -58,8 +57,7 @@ class AboutFragment : ToolbarFragment() { val year = TimeUtils.getFormatTime(serverTime, "yyyy") mBinding.copyrightTv.text = getString(R.string.copyright_hint, year) - val updateManager = - ARouter.getInstance().build(RouteConsts.provider.updateManager).navigation() as? IUpdateManagerProvider + val updateManager = TheRouter.get(IUpdateManagerProvider::class.java) updateManager?.checkUpdate(requireActivity(), true) // 检查更新 var clickCount = 0 @@ -90,15 +88,15 @@ class AboutFragment : ToolbarFragment() { }, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) ) } else { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) toast(appProvider?.getChannel()) } false } - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) if (appProvider?.getFlavor() != "publish") { - val pkgConfigProvider = ARouter.getInstance().build(RouteConsts.provider.pkgConfig).navigation() as? IPkgConfigProvider + val pkgConfigProvider = TheRouter.get(IPkgConfigProvider::class.java) var clickCount = 0 mBinding.appNameTv.setOnClickListener { clickCount = clickCount + 1 @@ -128,15 +126,15 @@ class AboutFragment : ToolbarFragment() { @SuppressLint("SetTextI18n") private fun initView() { - val packageUtils = ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val webActivity = ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) + val webActivity = TheRouter.get(IWebProvider::class.java) mBinding.aboutTvVersion.text = "V" + packageUtils?.getGhVersionName() if (PackageFlavorHelper.IS_TEST_FLAVOR == true) { var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL) if (channel == null || TextUtils.isEmpty(channel)) { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) channel = appProvider?.getChannel() ?: "" } mBinding.aboutTvVersion.text = "V" + packageUtils?.getGhVersionName() + "($channel)" @@ -148,7 +146,7 @@ class AboutFragment : ToolbarFragment() { contentTv.visibility = View.VISIBLE root.setOnClickListener { MtaHelper.onEvent("我的光环_设置", "关于光环", "版本更新") - val updateManager = ARouter.getInstance().build(RouteConsts.provider.updateManager).navigation() as? IUpdateManagerProvider + val updateManager = TheRouter.get(IUpdateManagerProvider::class.java) updateManager?.checkUpdate(requireActivity(), true) // 检查更新 } } @@ -188,7 +186,7 @@ class AboutFragment : ToolbarFragment() { MtaHelper.onEvent("我的光环_设置", "关于光环", "抖音") val url = getString(R.string.gh_douyin_url) url.copyTextAndToast(String.format(Locale.CHINA, "已成功复制%s ,打开抖音可直达", url)) - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directDouyin(requireContext(), "1402577827140941") } } @@ -206,7 +204,7 @@ class AboutFragment : ToolbarFragment() { } mBinding.icpTv.setOnClickListener { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToExternalBrowser(requireContext(), requireContext().getString(com.gh.gamecenter.common.R.string.icp_url)) } } diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt index 3c235f845e..870aebfc58 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt @@ -8,7 +8,7 @@ import android.os.Environment import android.text.TextUtils import android.view.View import androidx.core.content.FileProvider -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts @@ -103,7 +103,7 @@ class GameDownloadSettingFragment : ToolbarFragment() { root.setOnClickListener { MtaHelper.onEvent("我的光环_设置", "设置功能", "安装包清理") PermissionHelper.checkStoragePermissionBeforeAction(requireActivity()) { - ARouter.getInstance().build(RouteConsts.activity.cleanApkActivity).navigation() + TheRouter.build(RouteConsts.activity.cleanApkActivity).navigation() } } } @@ -118,8 +118,7 @@ class GameDownloadSettingFragment : ToolbarFragment() { val intent = Intent(Intent.ACTION_GET_CONTENT) try { val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) FileProvider.getUriForFile(requireContext(), buildConfig?.getApplicationId() ?: "", File(dirPath)) } else { Uri.fromFile(File(dirPath)) @@ -147,8 +146,7 @@ class GameDownloadSettingFragment : ToolbarFragment() { companion object { @JvmStatic fun getTrafficDownloadHintKey(): String { - val packageUtils = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) return packageUtils?.getGhVersionName() + "traffic_download_hint" } } diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt index 6f6705fe85..8fc2cac5d9 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt @@ -17,7 +17,7 @@ import android.webkit.WebView import android.webkit.WebViewClient import android.widget.ScrollView import android.widget.TextView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.retrofit.Response @@ -242,8 +242,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { mSuggestBtn.run { visibility = View.VISIBLE setOnClickListener { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToSuggestionFromDiagnosis( this@NetworkDiagnosisActivity, "网络诊断结果" + TimeUtils.getFormatTime(System.currentTimeMillis(), "yyyy.MM.dd"), diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt index efc90e39ae..9d544bcf54 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt @@ -13,7 +13,7 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModelProvider -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.blankj.utilcode.util.LanguageUtils import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.activity.BaseActivity @@ -74,8 +74,7 @@ class SettingsFragment : ToolbarFragment() { mBinding.aboutItem.newVersionTv.visibility = View.GONE // Jenkins 打的包附带个打包时间在版本后面 - val packageUtils = ARouter.getInstance().build(RouteConsts.provider.packageUtils) - .navigation() as? IPackageUtilsProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) if (BuildConfig.BUILD_TIME == 0L) { mBinding.aboutItem.contentTv.text = "V" + packageUtils?.getGhVersionName() } else { @@ -86,7 +85,7 @@ class SettingsFragment : ToolbarFragment() { var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL) if (channel == null || TextUtils.isEmpty(channel)) { val appProvider = - ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + TheRouter.get(IAppProvider::class.java) channel = appProvider?.getChannel() ?: "" } mBinding.aboutItem.contentTv.text = "($channel)" @@ -161,8 +160,7 @@ class SettingsFragment : ToolbarFragment() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) { return } - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) if (usageStatsHelper?.checkForPermission() == true && SPUtils.getBoolean(Constants.SP_USAGE_STATUS, true)) { mUsageStatus = true } else { @@ -188,7 +186,7 @@ class SettingsFragment : ToolbarFragment() { } } mBinding.systemDarkModeItem.run { - val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider + val config = TheRouter.get(IConfigProvider::class.java) root.goneIf(!(config?.getNightModeSetting() ?: false)) { titleTv.text = getString(R.string.setting_system_dark_mode) switchLottie.visibility = View.VISIBLE @@ -236,12 +234,12 @@ class SettingsFragment : ToolbarFragment() { root.setOnClickListener { ifLogin("设置-游戏投稿-请先登录") { PermissionHelper.checkStoragePermissionBeforeAction(requireContext()) { - ARouter.getInstance().build(RouteConsts.activity.gameSubmissionActivity) + TheRouter.build(RouteConsts.activity.gameSubmissionActivity) .withString( EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(mEntrance, "游戏上传") ) - .navigation() + .navigation(this@SettingsFragment) } } } @@ -255,8 +253,7 @@ class SettingsFragment : ToolbarFragment() { switchLottie.visibility = View.VISIBLE if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { root.setOnClickListener { - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) if (usageStatsHelper?.checkForPermission() == true) { DialogHelper.showDialog( requireContext(), @@ -272,8 +269,7 @@ class SettingsFragment : ToolbarFragment() { }, {}, extraConfig = DialogHelper.Config(centerContent = true, centerTitle = true) ) } else { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) dialogUtils?.showUsageStatsDialog( requireContext(), { usageStatsHelper?.skipToUsageStats( @@ -296,8 +292,7 @@ class SettingsFragment : ToolbarFragment() { if (entity != null) { NewLogUtils.logWechatRemindConfigClick(entity.bind, entity.follow, entity.notice) } - val webActivity = - ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider + val webActivity = TheRouter.get(IWebProvider::class.java) requireContext().startActivity(webActivity?.getBindWechatIntent(requireContext())) SensorsBridge.trackEvent("AppointmenWechatRemindConfigPageShow", "source_entrance", "设置-微信提醒") } else { @@ -315,8 +310,7 @@ class SettingsFragment : ToolbarFragment() { //这种方案适用于 API 26, 即8.0(含8.0)以上可以用 val notifyIntent = Intent() notifyIntent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS - val buildConfig = ARouter.getInstance().build(RouteConsts.provider.buildConfig) - .navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) notifyIntent.putExtra(Settings.EXTRA_APP_PACKAGE, buildConfig?.getApplicationId()) startActivity(notifyIntent) } else { @@ -362,14 +356,12 @@ class SettingsFragment : ToolbarFragment() { getString(R.string.clear_cache_dialog_content), object : EmptyCallback { override fun onCallback() { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) loadingDialog = dialogUtils?.showWaitDialog( requireContext(), getString(R.string.clearing_cache) ) - val historyHelper = ARouter.getInstance().build(RouteConsts.provider.historyHelper) - .navigation() as? IHistoryHelperProvider + val historyHelper = TheRouter.get(IHistoryHelperProvider::class.java) historyHelper?.emptyDatabase() // 清除新游开测存储的游戏类型 SPUtils.remove(Constants.SP_GAME_SERVER_TEST_V2_CATEGORY_SET) @@ -394,8 +386,7 @@ class SettingsFragment : ToolbarFragment() { } } mBinding.settingLogout.setOnClickListener { - val dialogUtils = - ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) DialogHelper.showDialog( requireContext(), R.string.logout_dialog_title.toResString(), @@ -408,16 +399,9 @@ class SettingsFragment : ToolbarFragment() { UserRepository.getInstance().logout() if (loadingDialog != null) loadingDialog!!.dismiss() if (activity != null) requireActivity().finish() - val qProvider = ARouter - .getInstance() - .build(RouteConsts.provider.qGame) - .navigation() as? IQGameProvider + val qProvider = TheRouter.get(IQGameProvider::class.java) qProvider?.stopAllMiniApp(true) // 关闭所有QQ小游戏进程 - - (ARouter - .getInstance() - .build(RouteConsts.provider.miniGameRecentPlayed) - .navigation() as? IMiniGameRecentlyPlayedProvider) + TheRouter.get(IMiniGameRecentlyPlayedProvider::class.java) ?.clearMiniGameRecentlyPlayed(Constants.QQ_MINI_GAME) } }, @@ -468,8 +452,7 @@ class SettingsFragment : ToolbarFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) SPUtils.setBoolean(Constants.SP_USAGE_STATUS, usageStatsHelper?.checkForPermission() == true) initUsageStats() } @@ -493,8 +476,7 @@ class SettingsFragment : ToolbarFragment() { mBinding.notificationAuthorityItem.switchLottie.setSwitchAnimation(NotificationHelper.notificationIsEnable()) - val browserInstallHelper = ARouter.getInstance().build(RouteConsts.provider.browserInstallHelper) - .navigation() as? IBrowserInstallHelperProvider + val browserInstallHelper = TheRouter.get(IBrowserInstallHelperProvider::class.java) if (browserInstallHelper?.isUseBrowserToInstallEnabled() == true) { if (browserInstallHelper.shouldUseBrowserToInstall()) { mBinding.installMethodItem.textMoreTv.text = getString(R.string.browser_install) @@ -503,8 +485,7 @@ class SettingsFragment : ToolbarFragment() { } mBinding.installMethodContainer.visibility = View.VISIBLE mBinding.installMethodItem.root.setOnClickListener { - val shellActivity = - ARouter.getInstance().build(RouteConsts.provider.shellActivity).navigation() as? IShellProvider + val shellActivity = TheRouter.get(IShellProvider::class.java) val intent = shellActivity?.getSwitchInstallMethodIntent(requireContext(), null) requireContext().startActivity(intent) browserInstallHelper.logSwitchInstallSettingEvent() @@ -578,9 +559,10 @@ class SettingsFragment : ToolbarFragment() { } fun getWechatConfig() { - val wechatBindHelper = ARouter.getInstance().build(RouteConsts.provider.wechatHelper) - .navigation() as? IWechatBindHelperProvider - wechatBindHelper?.getWechatConfig(::updateWechatConfig) + val wechatBindHelper = TheRouter.get(IWechatBindHelperProvider::class.java) + wechatBindHelper?.getWechatConfig(callback = { + updateWechatConfig(it as? WechatConfigEntity) + }) } } diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt index ebe283bfbe..ef32fef065 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.setting.view.security import android.content.Context import android.content.Intent import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt index a2a98afb13..33213dab9a 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt @@ -4,9 +4,10 @@ import android.app.Dialog import android.content.Intent import android.os.Bundle import android.os.Message +import android.text.TextUtils import android.view.View import androidx.lifecycle.Observer -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.base.fragment.ToolbarFragment @@ -20,6 +21,7 @@ import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.setting.R import com.gh.gamecenter.setting.databinding.FragmentBindPhoneBinding import com.lightgame.utils.Utils +import com.therouter.router.Autowired class BindPhoneFragment : ToolbarFragment() { @@ -30,6 +32,9 @@ class BindPhoneFragment : ToolbarFragment() { private val mBinding by lazy { FragmentBindPhoneBinding.inflate(layoutInflater) } private var mDialog: Dialog? = null + @Autowired(name = com.therouter.router.KEY_DESCRIPTION) + var routeSource: String = "" + override fun handleMessage(msg: Message) { if (msg.what == 0) { // 验证码倒计时 var arg1 = msg.arg1 @@ -58,6 +63,7 @@ class BindPhoneFragment : ToolbarFragment() { super.onCreate(savedInstanceState) mFromLogin = requireArguments().getBoolean(EntranceConsts.KEY_FROM_LOGIN) mChangePhone = requireArguments().getBoolean(EntranceConsts.KEY_CHANGE_PHONE) + routeSource = requireArguments().getString(com.therouter.router.KEY_DESCRIPTION, "") (requireActivity() as? ToolBarActivity)?.hideToolbar(mFromLogin) @@ -237,8 +243,7 @@ class BindPhoneFragment : ToolbarFragment() { mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "") // 更换手机号,当输入手机号和当前手机号相同则弹出提示 if (mChangePhone && phoneNum == oldPhoneNum) { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) dialogUtils?.showNoticeDialog(requireContext(), "", getString(R.string.change_phone_same)) { mBinding.bindPhoneEt.setText("") } @@ -281,8 +286,7 @@ class BindPhoneFragment : ToolbarFragment() { } private fun showBindPhoneDialog() { - val dialogUtils = - ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) mDialog = dialogUtils?.showBindPhoneDialog(requireContext()) { activity?.finish() } @@ -318,4 +322,17 @@ class BindPhoneFragment : ToolbarFragment() { } } } + + override fun onParentActivityFinish() { + super.onParentActivityFinish() + + // 尝试回调登录拦截器的登录成功回调 + if (mFromLogin && !TextUtils.isEmpty(routeSource)) { + if (routeSource == RouteConsts.Action.LOGIN_SUCCESS_ACTION) { + TheRouter.build(RouteConsts.Action.LOGIN_SUCCESS_ACTION).action() + } else { + TheRouter.build(routeSource).navigation(this) + } + } + } } \ No newline at end of file diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt index d2b1fe883f..30df854a6d 100644 --- a/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt +++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.setting.view.security import android.content.Intent import android.os.Bundle import android.view.View -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts @@ -43,7 +43,7 @@ class SecurityFragment : ToolbarFragment() { } private fun initView() { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) mBinding.securityContact.setOnClickListener { directUtils?.directToQqConversation(requireContext(), "800177318") } @@ -74,7 +74,7 @@ class SecurityFragment : ToolbarFragment() { titleTv.text = getString(R.string.bind_phone_key) textMoreTv.visibility = View.VISIBLE root.setOnClickListener { - ARouter.getInstance().build(RouteConsts.activity.bindPhoneActivity) + TheRouter.build(RouteConsts.activity.bindPhoneActivity) .withBoolean(EntranceConsts.KEY_FROM_LOGIN, false) .withBoolean(EntranceConsts.KEY_CHANGE_PHONE, !UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty()) .navigation(requireActivity(), INSERT_MOBILE_CODE) diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt index 7a17ce712c..630aadaacf 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.setting import android.os.Build import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.animated.giflite.GifDecoder import com.facebook.common.logging.FLog import com.facebook.imageformat.DefaultImageFormats @@ -35,10 +35,10 @@ class SettingModuleApp: MultiDexApplication() { private fun initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + // 可以直接删掉本行 ARouter.openLog() // 打印日志 + // 可以直接删掉本行 ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 + // 可以直接删掉本行 ARouter.init(this) // 尽可能早,推荐在Application中初始化 } fun initFresco() { diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt index b97412be14..86e2f8c53a 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.setting.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider @@ -11,12 +11,8 @@ import com.gh.gamecenter.setting.BuildConfig import com.gh.gamecenter.setting.HaloApp import com.gh.gamecenter.setting.R -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun getAppName(): String { return HaloApp.getInstance().getString(R.string.app_name) } diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt index 07b4a485ba..c76fcc3fec 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.browserInstallHelper, name = "BrowserInstallHelper暴露服务") +@com.therouter.inject.ServiceProvider class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider { override fun isUseBrowserToInstallEnabled(): Boolean { return false diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt index 88474c2517..097cbc8ba1 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt @@ -1,16 +1,13 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBuildConfigProvider import com.gh.gamecenter.setting.BuildConfig -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +@com.therouter.inject.ServiceProvider class BuildConfigImpl : IBuildConfigProvider { - override fun init(context: Context?) { - // Do nothing - } override fun getApplicationId(): String = BuildConfig.APPLICATION_ID diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt index de671a3bf9..c6c8d415d4 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +@com.therouter.inject.ServiceProvider class ConfigProviderImpl : IConfigProvider { override fun getTencentAppId(): String { return "" @@ -98,8 +98,4 @@ class ConfigProviderImpl : IConfigProvider { override fun getNightModeSetting(): Boolean { return false } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt index 01b8e2f5d1..01a10b4c99 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDataUtilsProvider -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataUtilsProviderImpl : IDataUtilsProvider { override fun getDeviceCertification() { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt index 459d59be23..cad3367023 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.setting.provider import android.app.Dialog import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDialogUtilsProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.dialogUtils, name = "DialogUtils暴露服务") +@com.therouter.inject.ServiceProvider class DialogUtilsProviderImpl : IDialogUtilsProvider { override fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) { ToastUtils.toast("调用->DialogUtilsProviderImpl.showRegulationTestDialog") @@ -35,8 +35,4 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider { ToastUtils.toast("调用->DialogUtilsProviderImpl.showBindPhoneDialog") return Dialog(context) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt index 114597db08..29ceea2c2c 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务") +@com.therouter.inject.ServiceProvider class DirectProviderImpl : IDirectProvider { override fun directToWebView(context: Context, url: String, entrance: String?) { @@ -124,8 +124,4 @@ class DirectProviderImpl : IDirectProvider { override fun directToExternalBrowser(context: Context, url: String) { ToastUtils.toast("调用->DirectProviderImpl.directToExternalBrowser") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt index dcafd2baad..670b842229 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IHistoryHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.historyHelper, name = "HistoryHelper暴露服务") +@com.therouter.inject.ServiceProvider class HistoryHelperProviderImpl : IHistoryHelperProvider { override fun emptyDatabase() { ToastUtils.toast("调用->HistoryHelperProviderImpl.emptyDatabase") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt deleted file mode 100644 index 80572389e7..0000000000 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.setting.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IMainProvider -import com.gh.gamecenter.core.utils.ToastUtils - -@Route(path = RouteConsts.provider.mainActivity, name = "MainActivity暴露服务") -class MainProviderImpl : IMainProvider { - override fun skipToMainActivity(context: Context, position: Int) { - ToastUtils.toast("调用->MainProviderImpl.skipToMainActivity") - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt index 4027d2d0df..78e5fecc75 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageUtilsProvider -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +@com.therouter.inject.ServiceProvider class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun obtainProcessName(): String { return "" diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt index 91a67b2a88..22db9aa45e 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt @@ -3,17 +3,13 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IShellProvider -@Route(path = RouteConsts.provider.shellActivity, name = "ShellActivity暴露服务") +@com.therouter.inject.ServiceProvider class ShellProviderImpl : IShellProvider { override fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent? { return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt index dae1525dee..5907284484 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt @@ -2,18 +2,14 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.os.Handler -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUpdateManagerProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务") +@com.therouter.inject.ServiceProvider class UpdateManagerProviderImpl: IUpdateManagerProvider { override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler?) { ToastUtils.toast("调用->UpdateManagerProviderImpl.checkUpdate") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt index 76477e9f0c..3f4d5172a8 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt @@ -3,12 +3,12 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.os.Build import androidx.annotation.RequiresApi -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.usageStatsHelper, name = "UsageStatsHelper暴露服务") +@com.therouter.inject.ServiceProvider class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider { @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1) override fun checkForPermission(): Boolean { @@ -17,8 +17,4 @@ class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider { override fun skipToUsageStats(context: Context, requestCode: Int) { ToastUtils.toast("调用->UsageStatsHelperProviderImpl.skipToUsageStats") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt index 3b6990e622..fb268258c5 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt @@ -3,13 +3,13 @@ package com.gh.gamecenter.setting.provider import android.content.Context import android.content.Intent import android.net.Uri -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.EnvHelper import com.gh.gamecenter.core.provider.IWebProvider -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +@com.therouter.inject.ServiceProvider class WebProviderImpl : IWebProvider { override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent { return Intent(Intent.ACTION_VIEW).apply { @@ -53,8 +53,4 @@ class WebProviderImpl : IWebProvider { ): Intent? { return null } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt index 1588308ddd..95c6cfe86b 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.gamecenter.setting.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWechatBindHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务") +@com.therouter.inject.ServiceProvider class WechatHelperProviderImpl : IWechatBindHelperProvider { override fun getWechatConfig(callback: (() -> Unit)?) { ToastUtils.toast("调用->WechatHelperProviderImpl.getWechatConfig") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/build.gradle b/module_setting_compose/build.gradle index 89aa474296..eb082140bd 100644 --- a/module_setting_compose/build.gradle +++ b/module_setting_compose/build.gradle @@ -6,6 +6,7 @@ if (isRelease.toBoolean()) { apply plugin: 'org.jetbrains.kotlin.android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-parcelize' +apply plugin: 'com.google.devtools.ksp' android { compileSdk rootProject.ext.compileSdkVersion @@ -45,12 +46,6 @@ android { } } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { debug { if (!isRelease.toBoolean()) { @@ -86,7 +81,9 @@ dependencies { if (!isRelease.toBoolean()) { implementation "androidx.multidex:multidex:$multiDex" } - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/HaloApp.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/HaloApp.kt index 1f141e76ec..91ac4b9f34 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/HaloApp.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/HaloApp.kt @@ -1,6 +1,7 @@ package com.gh.gamecenter.setting.compose import android.app.Application +import android.content.Context import android.content.res.Configuration import com.gh.gamecenter.core.iinterface.IApplication import com.google.auto.service.AutoService @@ -8,8 +9,8 @@ import com.google.auto.service.AutoService @AutoService(IApplication::class) class HaloApp : IApplication { - override fun attachBaseContext() { - // Do nothing + override fun attachBaseContext(base: Context) { + // do nothing } override fun onCreate(application: Application) { diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeAboutActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeAboutActivity.kt index efe166a0a5..73ddaa7902 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeAboutActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeAboutActivity.kt @@ -22,14 +22,15 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.constraintlayout.compose.ChainStyle import androidx.constraintlayout.compose.ConstraintLayout -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.common.utils.DialogHelper import com.gh.gamecenter.common.utils.PackageFlavorHelper import com.gh.gamecenter.common.utils.copyTextAndToast import com.gh.gamecenter.core.provider.* +import com.gh.gamecenter.core.provider.IUpdateManagerProvider +import com.gh.gamecenter.core.provider.IWebProvider import com.gh.gamecenter.core.utils.StringUtils import com.gh.gamecenter.core.utils.TimeUtils import com.gh.gamecenter.setting.compose.R @@ -39,6 +40,7 @@ import com.gh.gamecenter.setting.compose.ui.theme.HaloTheme import com.lightgame.utils.RuntimeUtils import com.lightgame.utils.Utils import java.util.* +import kotlin.jvm.java class ComposeAboutActivity : ComposeBaseActivity() { @@ -55,8 +57,7 @@ class ComposeAboutActivity : ComposeBaseActivity() { mutableStateOf("") } - val updateManager = ARouter.getInstance().build(RouteConsts.provider.updateManager) - .navigation() as? IUpdateManagerProvider + val updateManager = TheRouter.get(IUpdateManagerProvider::class.java) val updateHandler = object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) { super.handleMessage(msg) @@ -83,10 +84,8 @@ class ComposeAboutActivity : ComposeBaseActivity() { }, modifier = Modifier.fillMaxSize(), backgroundColor = HaloTheme.colors.background ) { - val packageUtils = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider - val webActivity = - ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) + val webActivity = TheRouter.get(IWebProvider::class.java) Column { Column( @@ -123,10 +122,7 @@ class ComposeAboutActivity : ComposeBaseActivity() { ) ) } else { - val appProvider = ARouter - .getInstance() - .build(RouteConsts.provider.app) - .navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) Utils.toast(this@ComposeAboutActivity, appProvider?.getChannel()) } }, @@ -182,8 +178,8 @@ class ComposeAboutActivity : ComposeBaseActivity() { startActivity( webActivity?.getWebIntent( this@ComposeAboutActivity, - getString(R.string.disclaimer_title), - getString(R.string.disclaimer_url) + getString(com.gh.gamecenter.common.R.string.disclaimer_title), + getString(com.gh.gamecenter.common.R.string.disclaimer_url) ) ) } @@ -192,8 +188,8 @@ class ComposeAboutActivity : ComposeBaseActivity() { startActivity( webActivity?.getWebIntent( this@ComposeAboutActivity, - getString(R.string.privacy_policy_title), - getString(R.string.privacy_policy_url) + getString(com.gh.gamecenter.common.R.string.privacy_policy_title), + getString(com.gh.gamecenter.common.R.string.privacy_policy_url) ) ) } @@ -201,8 +197,7 @@ class ComposeAboutActivity : ComposeBaseActivity() { SettingItem("官方抖音", showArrow = true, content = "光环助手APP") { val url = getString(R.string.gh_douyin_url) url.copyTextAndToast(String.format(Locale.CHINA, "已成功复制%s ,打开抖音可直达", url)) - val directUtils = - ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directDouyin(this@ComposeAboutActivity, "1402577827140941") } if (deviceContent.isNotEmpty()) { @@ -245,7 +240,7 @@ class ComposeAboutActivity : ComposeBaseActivity() { end.linkTo(parent.end) }) - Text(text = getString(R.string.icp_serial_numb_desc), + Text(text = getString(com.gh.gamecenter.common.R.string.icp_serial_numb_desc), fontSize = 11.sp, color = HaloTheme.colors.textSubtitleDesc, modifier = Modifier @@ -255,7 +250,7 @@ class ComposeAboutActivity : ComposeBaseActivity() { end.linkTo(icpHref.start) }) - Text(text = getString(R.string.icp), + Text(text = getString(com.gh.gamecenter.common.R.string.icp), fontSize = 11.sp, color = HaloTheme.colors.themeFont, modifier = Modifier @@ -267,14 +262,10 @@ class ComposeAboutActivity : ComposeBaseActivity() { top.linkTo(icpDesc.top) } .clickable { - val directUtils = - ARouter - .getInstance() - .build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToExternalBrowser( this@ComposeAboutActivity, - getString(R.string.icp_url) + getString(com.gh.gamecenter.common.R.string.icp_url) ) }) diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeBindPhoneActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeBindPhoneActivity.kt index 6891927619..504fac60e5 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeBindPhoneActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeBindPhoneActivity.kt @@ -8,6 +8,7 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.Message +import android.text.TextUtils import androidx.activity.viewModels import androidx.compose.foundation.background import androidx.compose.foundation.layout.* @@ -48,7 +49,6 @@ import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.window.Popup import androidx.constraintlayout.compose.ConstraintLayout import androidx.constraintlayout.compose.Dimension -import com.alibaba.android.arouter.launcher.ARouter import com.facebook.drawee.drawable.ScalingUtils import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder import com.facebook.drawee.generic.RoundingParams @@ -73,8 +73,13 @@ import com.gh.gamecenter.setting.compose.ui.component.* import com.gh.gamecenter.setting.compose.ui.theme.HaloTheme import com.gh.gamecenter.setting.compose.viewmodel.ComposeBindPhoneViewModel import com.lightgame.utils.Utils +import com.therouter.TheRouter +import com.therouter.router.Autowired +import com.therouter.router.Route import kotlinx.coroutines.delay +import kotlin.jvm.java +@Route(path = RouteConsts.activity.bindPhoneActivity) class ComposeBindPhoneActivity : ComposeBaseActivity() { private var mIsConflict by mutableStateOf(false) @@ -100,6 +105,9 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { private var mDialog: Dialog? = null private val mViewModel: ComposeBindPhoneViewModel by viewModels() + @Autowired(name = com.therouter.router.KEY_DESCRIPTION) + var routeSource: String = "" + private val mCaptchaHandler = object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) { super.handleMessage(msg) @@ -125,8 +133,7 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { val phoneNum: String = mBindPhoneNumber.text.trim { it <= ' ' }.replace(" ".toRegex(), "") // 更换手机号,当输入手机号和当前手机号相同则弹出提示 if (mChangePhone && phoneNum == oldPhoneNum) { - val dialogUtils = - ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) dialogUtils?.showNoticeDialog(this@ComposeBindPhoneActivity, "", getString(R.string.change_phone_same)) { mBindPhoneNumber = mBindPhoneNumber.empty() } @@ -186,10 +193,11 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { } else { mFromLogin = intent.getBooleanExtra(EntranceConsts.KEY_FROM_LOGIN, false) mChangePhone = intent.getBooleanExtra(EntranceConsts.KEY_CHANGE_PHONE, false) - mGetCaptchaBtnText = getString(R.string.login_get_captcha) + mGetCaptchaBtnText = getString(com.gh.gamecenter.login.R.string.login_get_captcha) initObserver() mShowBindPhoneKeyboard = true } + TheRouter.inject(this) super.onCreate(savedInstanceState) } @@ -272,8 +280,7 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { } private fun showBindPhoneDialog() { - val dialogUtils = - ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) mDialog = dialogUtils?.showBindPhoneDialog(this) { finish() } @@ -291,6 +298,20 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { } } + override fun onPause() { + super.onPause() + if (isFinishing) { + // 尝试回调登录拦截器的登录成功回调 + if (mFromLogin && !TextUtils.isEmpty(routeSource)) { + if (routeSource == RouteConsts.Action.LOGIN_SUCCESS_ACTION) { + TheRouter.build(RouteConsts.Action.LOGIN_SUCCESS_ACTION).action() + } else { + TheRouter.build(routeSource).navigation(this) + } + } + } + } + override fun onStop() { super.onStop() mDialog = null @@ -402,13 +423,13 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { }, contentAlignment = Alignment.CenterStart) { innerTextField() if (mBindPhoneNumber.text.isEmpty()) Text( - text = getString(R.string.input_phone_hint), + text = getString(com.gh.gamecenter.login.R.string.input_phone_hint), fontSize = 16.sp, color = HaloTheme.colors.textBody ) } Text( - text = getString(R.string.login_phone_prefix), + text = getString(com.gh.gamecenter.login.R.string.login_phone_prefix), fontSize = 16.sp, color = HaloTheme.colors.textTitle, modifier = Modifier.constrainAs(prefix) { @@ -498,7 +519,7 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { }, contentAlignment = Alignment.CenterStart) { innerTextField() if (mCaptcha.isEmpty()) Text( - text = getString(R.string.input_captcha_hint), + text = getString(com.gh.gamecenter.login.R.string.input_captcha_hint), fontSize = 16.sp, color = HaloTheme.colors.textBody ) @@ -558,7 +579,7 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { ) { innerTextField() if (mInviteCode.isEmpty()) Text( - text = getString(R.string.input_invite_code_hint), + text = getString(com.gh.gamecenter.login.R.string.input_invite_code_hint), fontSize = 16.sp, color = HaloTheme.colors.textBody ) @@ -756,10 +777,10 @@ class ComposeBindPhoneActivity : ComposeBaseActivity() { SimpleDraweeView(it).apply { val builder = GenericDraweeHierarchyBuilder(it.resources) hierarchy = builder.setFadeDuration(500) - .setPlaceholderImage(R.drawable.occupy) + .setPlaceholderImage(com.gh.gamecenter.common.R.drawable.occupy) .setPlaceholderImageScaleType(ScalingUtils.ScaleType.FIT_XY) .setRoundingParams(RoundingParams.asCircle().apply { - borderColor = R.color.ui_divider.toColor(it) + borderColor = com.gh.gamecenter.common.R.color.ui_divider.toColor(it) borderWidth = 1F.dip2px().toFloat() }) .build() diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeGameDownloadSettingActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeGameDownloadSettingActivity.kt index 55d240fd6b..12bebcacc4 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeGameDownloadSettingActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeGameDownloadSettingActivity.kt @@ -14,7 +14,7 @@ import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.core.content.FileProvider -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts @@ -28,6 +28,7 @@ import com.gh.gamecenter.setting.compose.ui.component.* import com.gh.gamecenter.setting.compose.ui.theme.HaloTheme import com.lightgame.utils.Utils import java.io.File +import kotlin.jvm.java class ComposeGameDownloadSettingActivity : ComposeBaseActivity() { @@ -90,7 +91,7 @@ class ComposeGameDownloadSettingActivity : ComposeBaseActivity() { Space(8.dp) SettingItem(getString(R.string.setting_clean_package), showArrow = true) { PermissionHelper.checkStoragePermissionBeforeAction(this@ComposeGameDownloadSettingActivity) { - ARouter.getInstance().build(RouteConsts.activity.cleanApkActivity).navigation() + TheRouter.build(RouteConsts.activity.cleanApkActivity).navigation() } } } @@ -101,8 +102,7 @@ class ComposeGameDownloadSettingActivity : ComposeBaseActivity() { val intent = Intent(Intent.ACTION_GET_CONTENT) try { val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val buildConfig = - ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) FileProvider.getUriForFile(this, buildConfig?.getApplicationId() ?: "", File(dirPath)) } else { Uri.fromFile(File(dirPath)) @@ -126,8 +126,7 @@ class ComposeGameDownloadSettingActivity : ComposeBaseActivity() { @JvmStatic fun getTrafficDownloadHintKey(): String { - val packageUtils = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) return packageUtils?.getGhVersionName() + "traffic_download_hint" } } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt index 35a9c56efa..d682e639f5 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.res.imageResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts @@ -90,8 +90,7 @@ class ComposeSecurityActivity : ComposeBaseActivity() { } else { Space(8.dp) SettingItem("注销帐号", showArrow = true) { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) if (EnvHelper.isDevEnv) { directUtils?.directToWebView( this@ComposeSecurityActivity, @@ -149,10 +148,7 @@ class ComposeSecurityActivity : ComposeBaseActivity() { modifier = Modifier .padding(start = 4.dp) .clickableWithoutRipple { - val directUtils = ARouter - .getInstance() - .build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToQqConversation(this@ComposeSecurityActivity, "800177318") }) } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSettingActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSettingActivity.kt index a134f113b8..db760d62a2 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSettingActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSettingActivity.kt @@ -26,20 +26,22 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.pointer.pointerInteropFilter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.core.content.ContextCompat -import com.alibaba.android.arouter.launcher.ARouter import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.activity.BaseActivity -import com.gh.gamecenter.common.constant.Config import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.WechatConfigEntity -import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.AppExecutor import com.gh.gamecenter.core.provider.* -import com.gh.gamecenter.core.utils.DisplayUtils +import com.gh.gamecenter.core.provider.IAppProvider +import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider +import com.gh.gamecenter.core.provider.IBuildConfigProvider +import com.gh.gamecenter.core.provider.IDialogUtilsProvider +import com.gh.gamecenter.core.provider.IHistoryHelperProvider +import com.gh.gamecenter.core.provider.IPackageUtilsProvider +import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider +import com.gh.gamecenter.core.provider.IWebProvider import com.gh.gamecenter.core.utils.GsonUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.login.user.UserManager @@ -56,6 +58,7 @@ import com.gh.gamecenter.setting.compose.ui.theme.* import com.gh.gamecenter.setting.compose.viewmodel.ComposeSettingViewModel import com.gh.gid.GidHelper import com.lightgame.utils.Utils +import com.therouter.TheRouter import io.reactivex.Observable import io.reactivex.ObservableEmitter import io.reactivex.Observer @@ -63,6 +66,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import org.greenrobot.eventbus.EventBus +import kotlin.jvm.java class ComposeSettingActivity : ComposeBaseActivity() { @@ -149,7 +153,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { PermissionHelper.checkStoragePermissionBeforeAction( this@ComposeSettingActivity ) { - ARouter.getInstance().build(RouteConsts.activity.gameSubmissionActivity) + TheRouter.build(RouteConsts.activity.gameSubmissionActivity) .withString( EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(mEntrance, "游戏上传") @@ -158,8 +162,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { } } } - val browserInstallHelper = ARouter.getInstance().build(RouteConsts.provider.browserInstallHelper) - .navigation() as? IBrowserInstallHelperProvider + val browserInstallHelper = TheRouter.get(IBrowserInstallHelperProvider::class.java) if (browserInstallHelper?.isUseBrowserToInstallEnabled() == true) { SettingDivider() SettingItem( @@ -167,8 +170,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { showArrow = true, content = if (browserInstallHelper.shouldUseBrowserToInstall()) "浏览器安装" else "助手安装" ) { - val shellActivity = ARouter.getInstance().build(RouteConsts.provider.shellActivity) - .navigation() as? IShellProvider + val shellActivity = TheRouter.get(IShellProvider::class.java) val intent = shellActivity?.getSwitchInstallMethodIntent(this@ComposeSettingActivity, null) startActivity(intent) browserInstallHelper.logSwitchInstallSettingEvent() @@ -177,8 +179,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { Space(8.dp) SettingItem(getString(R.string.setting_usage_stats), showSwitch = true, switchStatus = mUsageStatus) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) if (usageStatsHelper?.checkForPermission() == true) { DialogHelper.showDialog(this@ComposeSettingActivity, "提示", "关闭后将无法统计游戏时长,确定要关闭吗?", @@ -192,8 +193,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { }, {}, extraConfig = DialogHelper.Config(centerContent = true, centerTitle = true) ) } else { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) dialogUtils?.showUsageStatsDialog( this@ComposeSettingActivity, { usageStatsHelper?.skipToUsageStats( @@ -213,8 +213,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { if (entity != null) { NewLogUtils.logWechatRemindConfigClick(entity.bind, entity.follow, entity.notice) } - val webActivity = - ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider + val webActivity = TheRouter.get(IWebProvider::class.java) startActivity(webActivity?.getBindWechatIntent(this@ComposeSettingActivity)) SensorsBridge.trackEvent("AppointmenWechatRemindConfigPageShow", "source_entrance", "设置-微信提醒") } else { @@ -232,8 +231,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { //这种方案适用于 API 26, 即8.0(含8.0)以上可以用 val notifyIntent = Intent() notifyIntent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS - val buildConfig = ARouter.getInstance().build(RouteConsts.provider.buildConfig) - .navigation() as? IBuildConfigProvider + val buildConfig = TheRouter.get(IBuildConfigProvider::class.java) notifyIntent.putExtra(Settings.EXTRA_APP_PACKAGE, buildConfig?.getApplicationId()) startActivity(notifyIntent) } else { @@ -275,11 +273,9 @@ class ComposeSettingActivity : ComposeBaseActivity() { DialogHelper.showCenterWarningDialog( this@ComposeSettingActivity, "清除缓存", "确定要清除缓存吗?" ) { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) loadingDialog = dialogUtils?.showWaitDialog(this@ComposeSettingActivity, "清除缓存中...") - val historyHelper = ARouter.getInstance().build(RouteConsts.provider.historyHelper) - .navigation() as? IHistoryHelperProvider + val historyHelper = TheRouter.get(IHistoryHelperProvider::class.java) historyHelper?.emptyDatabase() clearCache() } @@ -291,14 +287,13 @@ class ComposeSettingActivity : ComposeBaseActivity() { if (mIsLogin) { Space(8.dp) LogoutButton { - val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils) - .navigation() as? IDialogUtilsProvider + val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java) DialogHelper.showDialog( this@ComposeSettingActivity, R.string.logout_dialog_title.toResString(), R.string.logout_dialog_content.toResString(), R.string.logout_dialog_confirm.toResString(), - R.string.cancel.toResString(), + com.gh.gamecenter.common.R.string.cancel.toResString(), { loadingDialog = dialogUtils?.showWaitDialog(this@ComposeSettingActivity, "退出登录中...") LoginUtils.logout { @@ -312,7 +307,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { centerContent = true ), uiModificationCallback = { - it.confirmTv.setTextColor(R.color.secondary_red.toColor(this@ComposeSettingActivity)) + it.confirmTv.setTextColor(com.gh.gamecenter.common.R.color.secondary_red.toColor(this@ComposeSettingActivity)) } ) } @@ -333,8 +328,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { mAboutText = "" } else { // Jenkins 打的包附带个打包时间在版本后面 - val packageUtils = - ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider + val packageUtils = TheRouter.get(IPackageUtilsProvider::class.java) mAboutText = if (BuildConfig.BUILD_TIME == 0L) { "V" + packageUtils?.getGhVersionName() } else { @@ -343,8 +337,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { if (PackageFlavorHelper.IS_TEST_FLAVOR) { var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL) if (channel == null || TextUtils.isEmpty(channel)) { - val appProvider = - ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider + val appProvider = TheRouter.get(IAppProvider::class.java) channel = appProvider?.getChannel() ?: "" } mAboutText = "($channel)" @@ -361,8 +354,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) { return } - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) if (usageStatsHelper?.checkForPermission() == true && SPUtils.getBoolean(Constants.SP_USAGE_STATUS, true)) { mUsageStatus = true } else { @@ -383,8 +375,7 @@ class ComposeSettingActivity : ComposeBaseActivity() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper) - .navigation() as? IUsageStatsHelperProvider + val usageStatsHelper = TheRouter.get(IUsageStatsHelperProvider::class.java) SPUtils.setBoolean(Constants.SP_USAGE_STATUS, usageStatsHelper?.checkForPermission() == true) initUsageStats() } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/NetworkDiagnosisActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/NetworkDiagnosisActivity.kt index a58fbdf9cb..ec8264fe5b 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/NetworkDiagnosisActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/NetworkDiagnosisActivity.kt @@ -17,7 +17,7 @@ import android.webkit.WebView import android.webkit.WebViewClient import android.widget.ScrollView import android.widget.TextView -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.retrofit.Response @@ -155,7 +155,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { builder.append(response.toString()) builder.append("\n") builder.append("Response Header:\n") - builder.append(response.headers().toString()) + builder.append(response.headers.toString()) builder.append("\n") } catch (e: IOException) { builder.append("Error:\n") @@ -239,8 +239,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { mSuggestBtn.run { visibility = View.VISIBLE setOnClickListener { - val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils) - .navigation() as? IDirectProvider + val directUtils = TheRouter.get(IDirectProvider::class.java) directUtils?.directToSuggestionFromDiagnosis( this@NetworkDiagnosisActivity, "网络诊断结果" + TimeUtils.getFormatTime(System.currentTimeMillis(), "yyyy.MM.dd"), @@ -252,7 +251,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() { builder.setSpan(object : ClickableSpan() { override fun updateDrawState(ds: TextPaint) { super.updateDrawState(ds) - ds.color = resources.getColor(R.color.text_theme) + ds.color = resources.getColor(com.gh.gamecenter.common.R.color.text_theme) ds.isUnderlineText = false } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/base/ComposeBaseActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/base/ComposeBaseActivity.kt index fab161a7a5..c63735fc68 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/base/ComposeBaseActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/base/ComposeBaseActivity.kt @@ -46,7 +46,7 @@ abstract class ComposeBaseActivity : AppCompatActivity() { mOldUiMode = newConfig.uiMode mIsDarkModeOn = DarkModeUtils.isDarkModeOn(this) WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = !mIsDarkModeOn - window.statusBarColor = R.color.ui_surface.toColor(this) + window.statusBarColor = com.gh.gamecenter.common.R.color.ui_surface.toColor(this) } } } \ No newline at end of file diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/provider/ComposeSettingProviderImpl.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/provider/ComposeSettingProviderImpl.kt index dd37c24fa1..8490e84a5d 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/provider/ComposeSettingProviderImpl.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/provider/ComposeSettingProviderImpl.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.ISettingProvider import com.gh.gamecenter.setting.compose.activity.ComposeAboutActivity @@ -11,7 +11,7 @@ import com.gh.gamecenter.setting.compose.activity.ComposeSecurityActivity import com.gh.gamecenter.setting.compose.activity.ComposeSettingActivity -@Route(path = RouteConsts.provider.composeSetting, name = "ComposeSetting暴露服务") +@com.therouter.inject.ServiceProvider class ComposeSettingProviderImpl : ISettingProvider { override fun getSettingIntent(context: Context, isUpdate: Boolean, entrance: String): Intent { return ComposeSettingActivity.getIntent(context, isUpdate, entrance) @@ -28,9 +28,4 @@ class ComposeSettingProviderImpl : ISettingProvider { override fun getAboutIntent(context: Context?, isUpdate: Boolean): Intent { return ComposeAboutActivity.getIntent(context, isUpdate) } - - override fun init(context: Context?) { - // do nothing - } - } \ No newline at end of file diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/viewmodel/ComposeBindPhoneViewModel.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/viewmodel/ComposeBindPhoneViewModel.kt index 032bd3ed0e..67c2e5c6a3 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/viewmodel/ComposeBindPhoneViewModel.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/viewmodel/ComposeBindPhoneViewModel.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.utils.DeviceUtils +import com.gh.gamecenter.common.utils.toRequestBody import com.gh.gamecenter.core.utils.GsonUtils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.login.utils.LoginUtils @@ -15,7 +16,6 @@ import com.gh.gamecenter.setting.compose.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -import okhttp3.MediaType import okhttp3.RequestBody import okhttp3.ResponseBody import org.json.JSONObject @@ -37,7 +37,7 @@ class ComposeBindPhoneViewModel(application: Application) : AndroidViewModel(app params["mobile"] = phoneNum val jsonObject = JSONObject(params as Map<*, *>) jsonObject.put("device", device) - val body: RequestBody = RequestBody.create(MediaType.parse(APPLICATION_JSON), jsonObject.toString()) + val body: RequestBody = APPLICATION_JSON.toRequestBody() api.bindPhone(1, body) .subscribeOn(Schedulers.io()) @@ -88,7 +88,7 @@ class ComposeBindPhoneViewModel(application: Application) : AndroidViewModel(app } val jsonObject = JSONObject(params as Map<*, *>) jsonObject.put("device", device) - val body: RequestBody = RequestBody.create(MediaType.parse(APPLICATION_JSON), jsonObject.toString()) + val body: RequestBody = APPLICATION_JSON.toRequestBody() api.bindPhone(2, body) .subscribeOn(Schedulers.io()) @@ -132,7 +132,7 @@ class ComposeBindPhoneViewModel(application: Application) : AndroidViewModel(app params["mobile"] = phoneNum val jsonObject = JSONObject(params as Map<*, *>) jsonObject.put("device", device) - val body: RequestBody = RequestBody.create(MediaType.parse(APPLICATION_JSON), jsonObject.toString()) + val body: RequestBody = APPLICATION_JSON.toRequestBody() api.reBindPhone(1, body) .subscribeOn(Schedulers.io()) @@ -184,7 +184,7 @@ class ComposeBindPhoneViewModel(application: Application) : AndroidViewModel(app } val jsonObject = JSONObject(params as Map<*, *>) jsonObject.put("device", device) - val body: RequestBody = RequestBody.create(MediaType.parse(APPLICATION_JSON), jsonObject.toString()) + val body: RequestBody = APPLICATION_JSON.toRequestBody() api.reBindPhone(2, body) .subscribeOn(Schedulers.io()) diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/SettingModuleApp.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/SettingModuleApp.kt index 74ed1ac457..496b303f57 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/SettingModuleApp.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/SettingModuleApp.kt @@ -2,7 +2,7 @@ package com.gh.gamecenter.setting.compose import android.os.Build import androidx.multidex.MultiDexApplication -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.facebook.animated.giflite.GifDecoder import com.facebook.common.logging.FLog import com.facebook.imageformat.DefaultImageFormats @@ -35,10 +35,10 @@ class SettingModuleApp : MultiDexApplication() { private fun initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 - ARouter.openLog() // 打印日志 - ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + // 可以直接删掉本行 ARouter.openLog() // 打印日志 + // 可以直接删掉本行 ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) } - ARouter.init(this) // 尽可能早,推荐在Application中初始化 + // 可以直接删掉本行 ARouter.init(this) // 尽可能早,推荐在Application中初始化 } fun initFresco() { diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt index 91f036a9f2..dc6a49e3f9 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt @@ -3,19 +3,15 @@ package com.gh.gamecenter.setting.compose.provider import android.app.Activity import android.app.Application import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IFlavorProvider import com.gh.gamecenter.setting.compose.HaloApp import com.gh.gamecenter.setting.compose.R -@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +@com.therouter.inject.ServiceProvider class AppProviderImpl : IAppProvider { - override fun init(context: Context?) { - // Do nothing - } - override fun getAppName(): String { return HaloApp.getInstance().getString(R.string.app_name) } diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BrowserInstallHelperProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BrowserInstallHelperProviderImpl.kt index 066f46afe8..0b7a36f952 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BrowserInstallHelperProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BrowserInstallHelperProviderImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.browserInstallHelper, name = "BrowserInstallHelper暴露服务") +@com.therouter.inject.ServiceProvider class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider { override fun isUseBrowserToInstallEnabled(): Boolean { return false diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BuildConfigImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BuildConfigImpl.kt index 7c331773a2..71839f1bee 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BuildConfigImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/BuildConfigImpl.kt @@ -1,12 +1,12 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IBuildConfigProvider import com.gh.gamecenter.setting.compose.BuildConfig -@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +@com.therouter.inject.ServiceProvider class BuildConfigImpl : IBuildConfigProvider { override fun init(context: Context?) { // Do nothing diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ConfigProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ConfigProviderImpl.kt index 0a53dd29fb..b55d0823c0 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ConfigProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ConfigProviderImpl.kt @@ -1,11 +1,11 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IConfigProvider -@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +@com.therouter.inject.ServiceProvider class ConfigProviderImpl : IConfigProvider { override fun getTencentAppId(): String { return "" @@ -91,8 +91,4 @@ class ConfigProviderImpl : IConfigProvider { override fun getNightModeSetting(): Boolean { return false } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DataUtilsProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DataUtilsProviderImpl.kt index 73a37e0342..11565abfbc 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DataUtilsProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DataUtilsProviderImpl.kt @@ -1,18 +1,15 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDataUtilsProvider -@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +@com.therouter.inject.ServiceProvider class DataUtilsProviderImpl : IDataUtilsProvider { override fun getDeviceCertification() { // Do nothing } - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DialogUtilsProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DialogUtilsProviderImpl.kt index 9d3365bb87..c20e7321ef 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DialogUtilsProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DialogUtilsProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.setting.compose.provider import android.app.Dialog import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDialogUtilsProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.dialogUtils, name = "DialogUtils暴露服务") +@com.therouter.inject.ServiceProvider class DialogUtilsProviderImpl : IDialogUtilsProvider { override fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) { ToastUtils.toast("调用->DialogUtilsProviderImpl.showRegulationTestDialog") @@ -47,8 +47,4 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider { ToastUtils.toast("调用->DialogUtilsProviderImpl.showBindPhoneDialog") return Dialog(context) } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt index 2ed0af5f17..f9929dfbed 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt @@ -2,12 +2,12 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务") +@com.therouter.inject.ServiceProvider class DirectProviderImpl : IDirectProvider { override fun directToWebView(context: Context, url: String, entrance: String?) { @@ -117,8 +117,4 @@ class DirectProviderImpl : IDirectProvider { override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/HistoryHelperProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/HistoryHelperProviderImpl.kt index 009826b66c..3951f3a8e1 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/HistoryHelperProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/HistoryHelperProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IHistoryHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.historyHelper, name = "HistoryHelper暴露服务") +@com.therouter.inject.ServiceProvider class HistoryHelperProviderImpl : IHistoryHelperProvider { override fun emptyDatabase() { ToastUtils.toast("调用->HistoryHelperProviderImpl.emptyDatabase") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/MainProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/MainProviderImpl.kt deleted file mode 100644 index 992d43fe10..0000000000 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/MainProviderImpl.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.gh.gamecenter.setting.compose.provider - -import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route -import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IMainProvider -import com.gh.gamecenter.core.utils.ToastUtils - -@Route(path = RouteConsts.provider.mainActivity, name = "MainActivity暴露服务") -class MainProviderImpl : IMainProvider { - override fun skipToMainActivity(context: Context, position: Int) { - ToastUtils.toast("调用->MainProviderImpl.skipToMainActivity") - } - - override fun init(context: Context?) { - // Do nothing - } -} \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/PackageUtilsProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/PackageUtilsProviderImpl.kt index b13465300c..9f3c1a0181 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/PackageUtilsProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/PackageUtilsProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.content.pm.PackageInfo -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPackageUtilsProvider -@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +@com.therouter.inject.ServiceProvider class PackageUtilsProviderImpl : IPackageUtilsProvider { override fun obtainProcessName(): String { return "" diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ShellProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ShellProviderImpl.kt index be37ca2178..14c3f7e507 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ShellProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/ShellProviderImpl.kt @@ -3,11 +3,11 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.content.Intent import android.os.Parcelable -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IShellProvider -@Route(path = RouteConsts.provider.shellActivity, name = "ShellActivity暴露服务") +@com.therouter.inject.ServiceProvider class ShellProviderImpl : IShellProvider { override fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent? { return null diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UpdateManagerProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UpdateManagerProviderImpl.kt index 35b59664b7..6861fa4db4 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UpdateManagerProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UpdateManagerProviderImpl.kt @@ -2,18 +2,14 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.os.Handler -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUpdateManagerProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务") +@com.therouter.inject.ServiceProvider class UpdateManagerProviderImpl : IUpdateManagerProvider { override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler) { ToastUtils.toast("调用->UpdateManagerProviderImpl.checkUpdate") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UsageStatsHelperProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UsageStatsHelperProviderImpl.kt index f2fce11483..f514fe4a09 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UsageStatsHelperProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/UsageStatsHelperProviderImpl.kt @@ -3,12 +3,12 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.os.Build import androidx.annotation.RequiresApi -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.usageStatsHelper, name = "UsageStatsHelper暴露服务") +@com.therouter.inject.ServiceProvider class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider { @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1) override fun checkForPermission(): Boolean { @@ -18,8 +18,4 @@ class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider { override fun skipToUsageStats(context: Context, requestCode: Int) { ToastUtils.toast("调用->UsageStatsHelperProviderImpl.skipToUsageStats") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WebProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WebProviderImpl.kt index 983467bcfc..1f979077fc 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WebProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WebProviderImpl.kt @@ -2,11 +2,11 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context import android.content.Intent -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWebProvider -@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +@com.therouter.inject.ServiceProvider class WebProviderImpl : IWebProvider { override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent { return Intent(Intent.ACTION_VIEW).apply { @@ -30,8 +30,4 @@ class WebProviderImpl : IWebProvider { data = Uri.parse(url) } } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WechatHelperProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WechatHelperProviderImpl.kt index f162418e45..8775288840 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WechatHelperProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/WechatHelperProviderImpl.kt @@ -1,18 +1,14 @@ package com.gh.gamecenter.setting.compose.provider import android.content.Context -import com.alibaba.android.arouter.facade.annotation.Route +import com.therouter.router.Route import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IWechatBindHelperProvider import com.gh.gamecenter.core.utils.ToastUtils -@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务") +@com.therouter.inject.ServiceProvider class WechatHelperProviderImpl : IWechatBindHelperProvider { override fun getWechatConfig(callback: (() -> Unit)?) { ToastUtils.toast("调用->WechatHelperProviderImpl.getWechatConfig") } - - override fun init(context: Context?) { - // Do nothing - } } \ No newline at end of file diff --git a/module_va_api/build.gradle b/module_va_api/build.gradle index 55a43ede45..2e93153bb2 100644 --- a/module_va_api/build.gradle +++ b/module_va_api/build.gradle @@ -1,7 +1,6 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' - id 'kotlin-kapt' id 'kotlin-parcelize' } @@ -20,12 +19,6 @@ android { dataBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { release { consumerProguardFiles 'proguard-rules.pro' diff --git a/module_va_api/src/main/java/com/gh/gamecenter/va/VCore.kt b/module_va_api/src/main/java/com/gh/gamecenter/va/VCore.kt index 0b9fd61d5f..7ca25b1912 100644 --- a/module_va_api/src/main/java/com/gh/gamecenter/va/VCore.kt +++ b/module_va_api/src/main/java/com/gh/gamecenter/va/VCore.kt @@ -3,7 +3,7 @@ package com.gh.gamecenter.va import android.app.Activity import android.content.ContentValues import android.content.Context -import com.alibaba.android.arouter.launcher.ARouter +import com.therouter.TheRouter import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.va.provider.IVa import com.gh.gamecenter.va.remote.InstalledAppInfo @@ -19,7 +19,7 @@ class VCore : IVa { fun getInstance(): IVa { return instance ?: synchronized(this) { - (ARouter.getInstance().build(RouteConsts.provider.vaCore).navigation() as? IVa + (TheRouter.get(IVa::class.java) ?: VCore()).also { instance = it } } } @@ -93,7 +93,4 @@ class VCore : IVa { override fun isZipFile(file: File): Boolean = false override fun getDefaultPluginUrl(): String = "" - override fun init(context: Context?) { - } - } \ No newline at end of file diff --git a/module_va_api/src/main/java/com/gh/gamecenter/va/provider/IVa.kt b/module_va_api/src/main/java/com/gh/gamecenter/va/provider/IVa.kt index 404636afd8..c6cda35a0a 100644 --- a/module_va_api/src/main/java/com/gh/gamecenter/va/provider/IVa.kt +++ b/module_va_api/src/main/java/com/gh/gamecenter/va/provider/IVa.kt @@ -3,13 +3,13 @@ package com.gh.gamecenter.va.provider import android.app.Activity import android.content.ContentValues import android.content.Context -import com.alibaba.android.arouter.facade.template.IProvider + import com.gh.gamecenter.va.remote.InstalledAppInfo import com.gh.gamecenter.va.remote.VaInstallResult import com.lg.vspace.archive.common.ui.interfaces.ArchiveProgressPageListener import java.io.File -interface IVa : IProvider { +interface IVa { fun isFakeVa(): Boolean = true diff --git a/module_va_impl/build.gradle b/module_va_impl/build.gradle index 3ff3397dfc..0f94fb817d 100644 --- a/module_va_impl/build.gradle +++ b/module_va_impl/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' id 'kotlin-parcelize' + id 'com.google.devtools.ksp' } android { @@ -37,12 +38,6 @@ android { dataBinding true } - kapt { - arguments { - arg("AROUTER_MODULE_NAME", project.name) - } - } - buildTypes { release { consumerProguardFiles 'proguard-rules.pro' @@ -90,7 +85,9 @@ android { } dependencies { - kapt "com.alibaba:arouter-compiler:$arouterVersion" + ksp "cn.therouter:apt:${routerVersion}" + kapt "com.google.auto.service:auto-service:${autoServiceVersion}" + implementation(project(path: ":module_common")) { exclude group: 'androidx.swiperefreshlayout' } diff --git a/module_va_impl/src/main/java/com/gh/gamecenter/va/Va.kt b/module_va_impl/src/main/java/com/gh/gamecenter/va/Va.kt index ab5e73d631..0e1030bfb0 100644 --- a/module_va_impl/src/main/java/com/gh/gamecenter/va/Va.kt +++ b/module_va_impl/src/main/java/com/gh/gamecenter/va/Va.kt @@ -6,9 +6,7 @@ import android.content.Context import android.net.Uri import android.os.Build import android.util.Log -import com.alibaba.android.arouter.facade.annotation.Route import com.blankj.utilcode.util.FileUtils -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.va.impl.BuildConfig import com.gh.gamecenter.va.provider.IVa @@ -37,7 +35,7 @@ import com.va.host.HostUtils import com.walkud.rom.checker.RomIdentifier import java.io.File -@Route(path = RouteConsts.provider.vaCore, name = "VA暴露服务") +@com.therouter.inject.ServiceProvider class Va : IVa { override fun isFakeVa(): Boolean = false @@ -182,6 +180,4 @@ class Va : IVa { override fun isZipFile(file: File): Boolean = PluginFileUtils.isZipFile(file) override fun getDefaultPluginUrl(): String = BuildConfig.DEFAULT_PLUGIN_URL - override fun init(context: Context?) { - } } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 0df324f061..6cf5a88ea7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -22,8 +22,8 @@ def coreModules = [ ':module_core', ':module_common', ':module_login', - ':module_setting', -// ':module_setting_compose', +// ':module_setting', + ':module_setting_compose', ':ndownload', ':module_core_feature', ':libraries:LGLibrary', @@ -32,6 +32,7 @@ def coreModules = [ ':vspace-bridge:vspace', ':feature:xapk-installer', ':feature:media_select', + ':feature:route_doc', ':module_internal_test', ':module_va_api', ] diff --git a/vasdk b/vasdk index 270ed85b7d..c586c866db 160000 --- a/vasdk +++ b/vasdk @@ -1 +1 @@ -Subproject commit 270ed85b7db8cc10b3311af35136c3ab66693aa4 +Subproject commit c586c866db385cc7da52604a0f50dd740b158468 diff --git a/vspace-bridge b/vspace-bridge index 398a6c0872..11bbe92dfe 160000 --- a/vspace-bridge +++ b/vspace-bridge @@ -1 +1 @@ -Subproject commit 398a6c0872f81ffee74897f6c5ce43ca2ef5c19e +Subproject commit 11bbe92dfe78a241dbe19cc0df345e12c020ed69