From f33b699723f46897a327ba5ec82a25859efea6fb Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 21 Oct 2022 16:58:20 +0800 Subject: [PATCH] =?UTF-8?q?!refactor:=20=E5=AE=8C=E5=85=A8=E8=A7=A3?= =?UTF-8?q?=E8=80=A6=E5=85=89=E8=83=BD=E6=A8=A1=E5=9D=97=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E4=B8=8D=E6=B7=BB=E5=8A=A0=E5=88=B0=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E7=A7=BB=E9=99=A4=E6=97=A7=E7=89=88=E6=88=91?= =?UTF-8?q?=E7=9A=84=E5=85=89=E7=8E=AF=E9=A1=B5=E9=9D=A2=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E6=B8=85=E7=90=86=E6=97=A0=E7=94=A8=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 7 +- app/src/main/AndroidManifest.xml | 4 - .../base/GlobalActivityLifecycleObserver.kt | 3 +- .../main/java/com/gh/common/DefaultJsApi.kt | 14 +- .../java/com/gh/common/util/DialogUtils.java | 31 - .../com/gh/common/util/DownloadItemUtils.kt | 4 +- .../com/gh/common/util/DownloadObserver.kt | 8 +- .../gh/common/util/FloatingBackViewManager.kt | 4 +- .../java/com/gh/gamecenter/MainActivity.java | 1 - .../com/gh/gamecenter/WeiBoShareActivity.java | 4 +- .../adapter/viewholder/DetailViewHolder.java | 4 +- .../com/gh/gamecenter/amway/AmwayViewModel.kt | 4 +- .../com/gh/gamecenter/energy/EnergyBridge.kt | 57 ++ .../entity/FunctionalGroupEntity.kt | 59 -- .../fragment/SearchToolbarFragment.java | 4 +- .../gamedetail/desc/DescViewModel.kt | 4 +- .../gamedetail/dialog/GameDetailMoreDialog.kt | 14 +- .../gamedetail/myrating/MyRatingViewModel.kt | 4 +- .../gamedetail/rating/RatingReplyViewModel.kt | 4 +- .../gamedetail/rating/RatingViewModel.kt | 4 +- .../rating/edit/RatingEditViewModel.kt | 5 +- .../message/KeFuFragmentAdapter.java | 10 +- .../message/MessageUnreadRepository.kt | 25 - .../gh/gamecenter/mygame/PlayedGameAdapter.kt | 4 +- .../personal/HaloPersonalFragment.kt | 16 - .../personal/NewPersonalActivity.kt | 22 - .../personal/NewPersonalFragment.kt | 679 ---------------- .../NewPersonalFunctionGroupAdapter.kt | 75 -- .../gamecenter/personal/PersonalFragment.kt | 732 ------------------ .../personal/PersonalFunctionAdapter.kt | 346 --------- .../personal/PersonalFunctionGroupAdapter.kt | 91 --- .../gamecenter/personal/PersonalViewModel.kt | 264 ------- .../background/BackgroundPreviewFragment.kt | 4 +- .../border/AvatarBorderFragment.kt | 4 +- .../border/ChooseAvatarBorderAdapter.kt | 7 +- .../personalhome/home/UserHistoryViewModel.kt | 5 +- .../home/game/UserCommentHistoryViewModel.kt | 4 +- .../BaseAnswerOrArticleItemViewHolder.kt | 11 +- .../qa/answer/detail/AnswerDetailViewModel.kt | 4 +- .../qa/answer/edit/AnswerEditViewModel.kt | 4 +- .../article/detail/ArticleDetailViewModel.kt | 5 +- .../qa/article/edit/ArticleEditViewModel.kt | 4 +- .../qa/comment/NewCommentViewModel.kt | 6 +- .../questions/edit/QuestionEditViewModel.kt | 5 +- .../retrofit/service/ApiService.java | 445 ----------- .../gamecenter/security/BindPhoneFragment.kt | 7 +- .../gamecenter/security/SecurityFragment.kt | 1 - .../detail/VideoDetailContainerViewModel.kt | 5 +- .../video/upload/view/UploadVideoViewModel.kt | 5 +- .../assistant/fragment/SettingsFragment.kt | 8 +- .../drawable-xhdpi/personal_home_arrow.png | Bin 258 -> 0 bytes .../drawable-xhdpi/personal_new_version.png | Bin 1850 -> 0 bytes .../reuse_network_error_dark.webp | Bin 6614 -> 0 bytes .../res/drawable-xxhdpi/ic_im_feedback.webp | Bin 4542 -> 0 bytes .../personal_account_security.webp | Bin 2008 -> 0 bytes .../personal_browsing_history.webp | Bin 2302 -> 0 bytes .../personal_delivery_info.webp | Bin 2222 -> 0 bytes .../drawable-xxhdpi/personal_feedback.webp | Bin 1768 -> 0 bytes .../personal_game_collection.webp | Bin 1992 -> 0 bytes .../personal_game_comment.webp | Bin 1726 -> 0 bytes .../personal_game_dynamic.webp | Bin 2552 -> 0 bytes .../drawable-xxhdpi/personal_gif_center.webp | Bin 1620 -> 0 bytes .../drawable-xxhdpi/personal_my_collect.webp | Bin 2336 -> 0 bytes .../res/drawable-xxhdpi/personal_my_game.webp | Bin 2086 -> 0 bytes .../personal_my_questions.webp | Bin 2428 -> 0 bytes .../drawable-xxhdpi/personal_news_center.webp | Bin 1168 -> 0 bytes .../personal_package_chean.webp | Bin 1508 -> 0 bytes .../res/drawable-xxhdpi/personal_setting.webp | Bin 1740 -> 0 bytes .../res/drawable-xxhdpi/personal_share.webp | Bin 2236 -> 0 bytes .../personal_sign_icon_white.webp | Bin 1330 -> 0 bytes .../personal_sign_icon_yellow.webp | Bin 1540 -> 0 bytes .../personal_simulator_game.webp | Bin 2126 -> 0 bytes .../personal_teenager_mode.webp | Bin 2142 -> 0 bytes .../res/drawable-xxhdpi/personal_tools.webp | Bin 1430 -> 0 bytes .../drawable-xxhdpi/personal_verified.webp | Bin 1356 -> 0 bytes .../personal_video_submission.webp | Bin 1530 -> 0 bytes .../personal_wechat_remind.webp | Bin 2384 -> 0 bytes .../drawable-xxxhdpi/bg_personal_info.webp | Bin 13156 -> 0 bytes .../res/drawable-xxxhdpi/bg_personal_top.webp | Bin 1668 -> 0 bytes .../personal_simulator_game.webp | Bin 2864 -> 0 bytes .../personal_teenager_mode.webp | Bin 2626 -> 0 bytes .../res/drawable-xxxhdpi/personal_top_bg.webp | Bin 1110 -> 0 bytes app/src/main/res/layout/dialog_energy.xml | 78 -- .../main/res/layout/dialog_invite_bind.xml | 56 -- app/src/main/res/layout/dialog_sign_rule.xml | 62 -- .../main/res/layout/fragment_new_personal.xml | 480 ------------ .../res/layout/fragment_new_personal_stub.xml | 11 - app/src/main/res/layout/fragment_personal.xml | 360 --------- .../layout/item_new_personal_fun_group.xml | 24 - .../res/layout/item_personal_fun_group.xml | 26 - .../main/res/layout/item_personal_func.xml | 42 - .../gamecenter/common/utils/ShareUtils.java | 18 +- .../core/provider/IEnergyTaskProvider.kt | 15 + .../energy/provider/EnergyTaskProviderImpl.kt | 27 + .../gamecenter/login/user/UserRepository.java | 7 +- .../gamecenter/login/view/LoginFragment.java | 4 +- .../gh/gamecenter/wxapi/WXEntryActivity.java | 4 +- 97 files changed, 213 insertions(+), 4042 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/energy/EnergyBridge.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/entity/FunctionalGroupEntity.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/NewPersonalActivity.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/NewPersonalFunctionGroupAdapter.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt delete mode 100644 app/src/main/res/drawable-xhdpi/personal_home_arrow.png delete mode 100644 app/src/main/res/drawable-xhdpi/personal_new_version.png delete mode 100644 app/src/main/res/drawable-xhdpi/reuse_network_error_dark.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_im_feedback.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_account_security.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_browsing_history.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_delivery_info.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_feedback.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_game_collection.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_game_comment.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_game_dynamic.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_gif_center.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_my_collect.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_my_game.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_my_questions.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_news_center.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_package_chean.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_setting.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_share.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_sign_icon_white.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_sign_icon_yellow.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_simulator_game.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_teenager_mode.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_tools.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_verified.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_video_submission.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/personal_wechat_remind.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/bg_personal_info.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/bg_personal_top.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/personal_simulator_game.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/personal_teenager_mode.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/personal_top_bg.webp delete mode 100644 app/src/main/res/layout/dialog_energy.xml delete mode 100644 app/src/main/res/layout/dialog_invite_bind.xml delete mode 100644 app/src/main/res/layout/dialog_sign_rule.xml delete mode 100644 app/src/main/res/layout/fragment_new_personal.xml delete mode 100644 app/src/main/res/layout/fragment_new_personal_stub.xml delete mode 100644 app/src/main/res/layout/fragment_personal.xml delete mode 100644 app/src/main/res/layout/item_new_personal_fun_group.xml delete mode 100644 app/src/main/res/layout/item_personal_fun_group.xml delete mode 100644 app/src/main/res/layout/item_personal_func.xml diff --git a/app/build.gradle b/app/build.gradle index 4d8de3c61d..ea8f8c27e7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -264,9 +264,10 @@ dependencies { implementation(project(':module_login')) { exclude group: 'androidx.swiperefreshlayout' } - implementation(project(':module_energy')) { - exclude group: 'androidx.swiperefreshlayout' - } + // 默认不接入光能模块,提高编译速度 +// debugImplementation(project(':module_energy')) { +// exclude group: 'androidx.swiperefreshlayout' +// } } File propFile = file('sign.properties') if (propFile.exists()) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8463ed939b..0062301224 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -574,10 +574,6 @@ android:name=".forum.search.ForumOrUserSearchActivity" android:screenOrientation="portrait" /> - - diff --git a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt index 5eb16a8435..4c153831ed 100644 --- a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt +++ b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt @@ -9,7 +9,6 @@ import com.gh.download.DownloadManager import com.gh.gamecenter.MainActivity import com.gh.gamecenter.SplashScreenActivity import com.gh.gamecenter.common.utils.PackageFlavorHelper -import com.gh.gamecenter.energy.view.EnergyCenterActivity import com.gh.gamecenter.forum.detail.ForumDetailActivity import com.gh.gamecenter.forum.list.ForumListActivity import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity @@ -32,7 +31,7 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { override fun onActivityResumed(activity: Activity) { // 判断是否需要显示或隐藏返回小浮窗 if (FloatingBackViewManager.getType().isNotEmpty()) { - if (activity is EnergyCenterActivity + if ((activity::class.java.name == "EnergyCenterActivity") && FloatingBackViewManager.getType() == FloatingBackViewManager.TYPE_TASK ) { FloatingBackViewManager.disableBackView() diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt index 07e56b5159..3c22783871 100644 --- a/app/src/main/java/com/gh/common/DefaultJsApi.kt +++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt @@ -25,9 +25,7 @@ import com.gh.gamecenter.core.utils.CurrentActivityHolder import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.energy.utils.EnergyTaskHelper -import com.gh.gamecenter.energy.view.EnergyCenterActivity -import com.gh.gamecenter.energy.view.EnergyHouseActivity +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.MtaEvent import com.gh.gamecenter.help.QaFeedbackDialogFragment import com.gh.gamecenter.login.entity.Badge @@ -130,7 +128,7 @@ class DefaultJsApi(var context: Context, val entrance: String = "") { WechatBindHelper.bindWechat(wechatLoginInfoMap, object : BiCallback { override fun onFirst(first: Boolean) { - EnergyTaskHelper.postEnergyTask("bind_wechat") + EnergyBridge.postEnergyTask("bind_wechat") handler.complete(true) } @@ -222,7 +220,7 @@ class DefaultJsApi(var context: Context, val entrance: String = "") { @JavascriptInterface fun updateRegulationTestStatus(msg: Any) { if (msg.toString().toLowerCase(Locale.getDefault()) == "pass") { - EnergyTaskHelper.postEnergyTask("finish_etiquette_exam") + EnergyBridge.postEnergyTask("finish_etiquette_exam") SPUtils.setString(Constants.SP_REGULATION_TEST_PASS_STATUS, "pass") } } @@ -298,17 +296,17 @@ class DefaultJsApi(var context: Context, val entrance: String = "") { @JavascriptInterface fun postWearBadgeTask(msg: Any) { - EnergyTaskHelper.postEnergyTask("wear_badge") + EnergyBridge.postEnergyTask("wear_badge") } @JavascriptInterface fun startEnergyCenter(msg: Any) { - context.startActivity(EnergyCenterActivity.getIntent(context)) + context.startActivity(EnergyBridge.getEnergyCenterIntent(context)) } @JavascriptInterface fun startEnergyHouse(msg: Any) { - context.startActivity(EnergyHouseActivity.getIntent(context)) + context.startActivity(EnergyBridge.getEnergyHouseIntent(context, null)) } @JavascriptInterface diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index c6db1318af..5900cdc175 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -1868,24 +1868,6 @@ public class DialogUtils { return dialog; } - public static void showEnergyDialog(Context context, String userName, long energy) { - context = checkDialogContext(context); - - final Dialog dialog = new Dialog(context, R.style.DialogWindowTransparent); - - View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_energy, null); - ((TextView) contentView.findViewById(R.id.userName)).setText("\"" + userName + "\""); - ((TextView) contentView.findViewById(R.id.energy)).setText(energy + ""); - - contentView.findViewById(R.id.dialog_positive).setOnClickListener(v -> { - dialog.dismiss(); - }); - - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(contentView); - dialog.show(); - } - public static void showSimulatorParseErrorDialog(Context context, String gameId, String gameName, ConfirmListener confirmListener) { context = checkDialogContext(context); final Dialog dialog = new Dialog(context, R.style.GhAlertDialog); @@ -1976,19 +1958,6 @@ public class DialogUtils { dialog.show(); } - public static void showSignRuleDialog(Context context) { - context = checkDialogContext(context); - - final Dialog dialog = new Dialog(context, R.style.DialogWindowTransparent); - - View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_sign_rule, null); - contentView.findViewById(R.id.dialog_ok).setOnClickListener(v -> dialog.dismiss()); - - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(contentView); - dialog.show(); - } - public static Dialog showBindPhoneDialog(Context context, ConfirmListener listener) { context = checkDialogContext(context); diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index c645e06db1..d928565134 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -32,7 +32,7 @@ import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.common.entity.LinkEntity -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.PluginLocation import com.gh.gamecenter.gamedetail.dialog.GamePermissionDialogFragment import com.gh.gamecenter.manager.PackagesManager @@ -789,7 +789,7 @@ object DownloadItemUtils { install(context, gameEntity, position, adapter, refreshCallback) } } else if (str == context.getString(R.string.launch)) { - EnergyTaskHelper.postEnergyTask("play_game", gameEntity.id, gameEntity.getApk()[0].packageName) + EnergyBridge.postEnergyTask("play_game", gameEntity.id, gameEntity.getApk()[0].packageName) //启动模拟器游戏 if (SimulatorGameManager.isSimulatorGame(gameEntity)) { diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index 92654a4599..13b3fd0687 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -16,7 +16,7 @@ import com.gh.gamecenter.common.eventbus.EBShowDialog import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SimpleGameEntity import com.gh.gamecenter.entity.SimulatorEntity @@ -202,11 +202,7 @@ object DownloadObserver { GameActivityDownloadHelper.clear() - EnergyTaskHelper.postEnergyTask( - "download_game", - downloadEntity.gameId, - downloadEntity.packageName - ) + EnergyBridge.postEnergyTask("download_game", downloadEntity.gameId, downloadEntity.packageName) val platform = PlatformUtils.getInstance(mApplication) .getPlatformName(downloadEntity.platform) if (platform != null) { diff --git a/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt b/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt index a2ecc4b977..0d9dfa3ce9 100644 --- a/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt +++ b/app/src/main/java/com/gh/common/util/FloatingBackViewManager.kt @@ -7,7 +7,7 @@ import android.widget.TextView import com.gh.gamecenter.R import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.core.utils.DisplayUtils -import com.gh.gamecenter.energy.view.EnergyCenterActivity +import com.gh.gamecenter.energy.EnergyBridge import com.lightgame.utils.Util_System_Keyboard import com.lzf.easyfloat.EasyFloat import com.lzf.easyfloat.enums.ShowPattern @@ -59,7 +59,7 @@ object FloatingBackViewManager { } else if (mType == TYPE_TASK) { titleView?.text = "返回任务" - activity.startActivity(EnergyCenterActivity.getIntent(activity)) + activity.startActivity(EnergyBridge.getEnergyCenterIntent(activity)) } disableBackView() diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 980a9041a4..a7b7b8e36e 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -1044,7 +1044,6 @@ public class MainActivity extends BaseActivity { ArrayList blackList = new ArrayList<>(); blackList.add(R.id.tabLayout); blackList.add(R.id.appbar); - blackList.add(R.id.personal_func); blackList.add(R.id.communityHomeContainer); blackList.add(R.id.lightgame_tab_container); blackList.add(R.id.wrapper_toolbar); diff --git a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java index 48aef9956c..aea6ee82b5 100644 --- a/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java +++ b/app/src/main/java/com/gh/gamecenter/WeiBoShareActivity.java @@ -21,7 +21,7 @@ import androidx.annotation.NonNull; import com.alibaba.android.arouter.facade.annotation.Route; import com.gh.common.constant.Config; -import com.gh.gamecenter.energy.utils.EnergyTaskHelper; +import com.gh.gamecenter.energy.EnergyBridge; import com.gh.common.util.IntegralLogHelper; import com.gh.gamecenter.common.callback.BiCallback; import com.gh.gamecenter.common.constant.RouteConsts; @@ -260,7 +260,7 @@ public class WeiBoShareActivity extends Activity implements WbShareCallback { com.gh.gamecenter.common.utils.LogUtils.uploadShareResult(ShareUtils.shareType, ShareUtils.shareEntrance.getName(), "success", ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId); EventBus.getDefault().post(new EBShare(ShareUtils.shareEntrance)); - EnergyTaskHelper.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); + EnergyBridge.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.inviteFriends) { IntegralLogHelper.INSTANCE.logInviteResult("成功", "微博"); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java index 5d96cf30e1..c198858ec2 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/viewholder/DetailViewHolder.java @@ -39,7 +39,7 @@ import com.gh.common.util.DetailDownloadUtils; import com.gh.gamecenter.common.utils.DialogHelper; import com.gh.common.util.DialogUtils; import com.gh.gamecenter.core.utils.PageSwitchDataHelper; -import com.gh.gamecenter.energy.utils.EnergyTaskHelper; +import com.gh.gamecenter.energy.EnergyBridge; import com.gh.common.util.LogUtils; import com.gh.gamecenter.core.utils.MtaHelper; import com.gh.common.util.PackageInstaller; @@ -174,7 +174,7 @@ public class DetailViewHolder { break; case LAUNCH_OR_OPEN: if (!mGameEntity.getApk().isEmpty()) { - EnergyTaskHelper.postEnergyTask("play_game", mGameEntity.getId(), mGameEntity.getApk().get(0).getPackageName()); + EnergyBridge.postEnergyTask("play_game", mGameEntity.getId(), mGameEntity.getApk().get(0).getPackageName()); } break; } diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt index fbb97664dc..e2150c9e18 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayViewModel.kt @@ -16,7 +16,7 @@ import com.gh.gamecenter.home.LegacyHomeItemData import com.gh.gamecenter.home.LegacyHomeSubjectTransformer import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.Observable @@ -209,7 +209,7 @@ class AmwayViewModel(application: Application) : ListViewModel Unit)?) { + mEnergyTaskHelp?.postInviteCodeTask(code, from, callback) + } + + fun postEnergyTask(action: String, id: String?) { + mEnergyTaskHelp?.postEnergyTask(action, id) + } + + @JvmStatic + fun postEnergyTask(action: String, id: String, packageName: String) { + mEnergyTaskHelp?.postEnergyTask(action, id, packageName) + } + + fun postEnergyTask(action: String, id: String?, packageName: String?, url: String?) { + mEnergyTaskHelp?.postEnergyTask(action, id, packageName, url) + } + + fun getEnergyCenterIntent(context: Context?): Intent { + return mEnergyTaskHelp?.getEnergyCenterIntent(context) ?: Intent(context, MainActivity::class.java) + } + + fun getEnergyCenterIntent(context: Context?, initTabIndex: Int): Intent { + return mEnergyTaskHelp?.getEnergyCenterIntent(context, initTabIndex) ?: Intent(context, MainActivity::class.java) + } + + fun getEnergyHouseIntent(context: Context?, categoryId: String?): Intent { + return mEnergyTaskHelp?.getEnergyHouseIntent(context, categoryId) ?: Intent(context, MainActivity::class.java) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/FunctionalGroupEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/FunctionalGroupEntity.kt deleted file mode 100644 index ba460f24c8..0000000000 --- a/app/src/main/java/com/gh/gamecenter/entity/FunctionalGroupEntity.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.gh.gamecenter.entity - -import android.os.Parcelable -import androidx.annotation.DrawableRes -import com.gh.gamecenter.common.entity.LinkEntity -import com.google.gson.annotations.SerializedName -import kotlinx.parcelize.Parcelize - -data class FunctionalGroupEntity( - @SerializedName("_id") - var id: String = "", - var name: String = "", - var icon: String = "", - var addons: ArrayList = ArrayList() -) - -@Parcelize -data class FunctionalLinkEntity( - @SerializedName("_id") - var id: String = "", - var active: Boolean = false, - var category: String = "", - @DrawableRes - var iconRes: Int = 0, // 客户端展示的icon - @SerializedName("remind_switch") - var remind: Boolean = false,//分组提醒 - var message: FunctionalMessageType? = null, - @SerializedName("checksum") - var checkSum: CheckSumEntity? = null // addons.$.type为 设置 时存在该字段 -) : LinkEntity() - -@Parcelize -data class CheckSumEntity( - @SerializedName("privacy_policy") - var privacyPolicy: String = "" //隐私政策网页md5值,用于判断是否有更新 -) : Parcelable - -enum class FunctionalMessageType { - NEW_VERSION, - NEW_MESSAGE -} - - -/* -data class FunctionalLinkEntity( - var name: String? = "", - var link: String? = "", - var type: String? = "", - var text: String? = "", - var community: CommunityEntity? = CommunityEntity(), - var display: Display? = null, // 板块 - @SerializedName("_id") - var id: String = "", - var active: Boolean = false, - var category: String = "", - var icon: String = "",// 客户端展示的icon - @DrawableRes - var iconRes: Int = 0// 客户端展示的icon -)*/ diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index 52d0cdc7d1..07582dfb10 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -40,7 +40,7 @@ import com.gh.gamecenter.DownloadManagerActivity; import com.gh.gamecenter.MessageActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SearchActivity; -import com.gh.gamecenter.energy.view.EnergyCenterActivity; +import com.gh.gamecenter.energy.EnergyBridge; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.common.eventbus.EBReuse; @@ -311,7 +311,7 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl IntegralLogHelper.INSTANCE.log("click_sign", mLocation); } - startActivity(EnergyCenterActivity.Companion.getIntent(requireContext())); + startActivity(EnergyBridge.INSTANCE.getEnergyCenterIntent(requireContext())); } else if (id == R.id.actionbar_teenager_model) { startActivity(TeenagerModeActivity.getIntent(requireContext())); } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt index 1b66cb40d7..0199780437 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt @@ -23,7 +23,7 @@ import com.gh.gamecenter.gamedetail.entity.CustomColumn import com.gh.gamecenter.gamedetail.entity.DetailEntity import com.gh.gamecenter.gamedetail.entity.GameInfo import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp import com.lightgame.utils.Utils @@ -122,7 +122,7 @@ class DescViewModel(application: Application, Utils.toast(getApplication(), "点赞成功") callback.invoke() - EnergyTaskHelper.postEnergyTask("vote_game_comment", commentId) + EnergyBridge.postEnergyTask("vote_game_comment", commentId) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt index 5fffc1c35b..fbf98562af 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt @@ -16,7 +16,7 @@ import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.databinding.DialogGameDetailMoreBinding -import com.gh.gamecenter.energy.utils.EnergyTaskHelper.postEnergyTask +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.gamedetail.GameDetailViewModel @@ -65,32 +65,32 @@ class GameDetailMoreDialog : BaseDraggableDialogFragment() { binding.shareWechatTv.setOnClickListener { getShareUtils().wechatShare() MtaHelper.onEvent("内容分享", "微信好友", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.sharePyquanTv.setOnClickListener { getShareUtils().wechatMomentsShare() MtaHelper.onEvent("内容分享", "微信朋友圈", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.shareQqTv.setOnClickListener { getShareUtils().qqShare() MtaHelper.onEvent("内容分享", "QQ好友", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.shareQqzoneTv.setOnClickListener { getShareUtils().qZoneShare() MtaHelper.onEvent("内容分享", "QQ空间", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.shareWeiboTv.setOnClickListener { getShareUtils().sinaWeiboShare() MtaHelper.onEvent("内容分享", "新浪微博", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.shareSmsTv.setOnClickListener { getShareUtils().shortMessageShare() MtaHelper.onEvent("内容分享", "短信", mGameEntity?.name) - postEnergyTask("share_game_detail", mGameEntity?.id) + EnergyBridge.postEnergyTask("share_game_detail", mGameEntity?.id) } binding.copyLinkTv.setOnClickListener { getShareUtils().copyLink(getShareUrl()) diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt index 130a9be449..528ab089ad 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/myrating/MyRatingViewModel.kt @@ -2,13 +2,13 @@ package com.gh.gamecenter.gamedetail.myrating import android.app.Application import com.gh.common.util.ErrorHelper -import com.gh.gamecenter.energy.utils.EnergyTaskHelper import com.gh.gamecenter.common.utils.toObject import com.gh.gamecenter.common.baselist.ListViewModel import com.gh.gamecenter.entity.ErrorEntity import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.personalhome.rating.MyRating import com.gh.gamecenter.common.retrofit.Response +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.Observable @@ -43,7 +43,7 @@ class MyRatingViewModel(application: Application) : ListViewModel { DirectUtils.directToEnergyRecord(mContext, 1); break; case "光能中心赚光能": - mContext.startActivity(EnergyCenterActivity.Companion.getIntent(mContext)); + mContext.startActivity(EnergyBridge.INSTANCE.getEnergyCenterIntent(mContext)); break; case "光能中心兑换": - mContext.startActivity(EnergyCenterActivity.Companion.getIntent(mContext, 1)); + mContext.startActivity(EnergyBridge.INSTANCE.getEnergyCenterIntent(mContext, 1)); break; case "抽奖中心": DirectUtils.directToLotteryParadisePage(mContext); @@ -461,10 +461,10 @@ public class KeFuFragmentAdapter extends ListAdapter { DirectUtils.directToEnergyRecord(mContext, 1); break; case "energy_center_get": - mContext.startActivity(EnergyCenterActivity.Companion.getIntent(mContext)); + mContext.startActivity(EnergyBridge.INSTANCE.getEnergyCenterIntent(mContext)); break; case "energy_center_exchange": - mContext.startActivity(EnergyCenterActivity.Companion.getIntent(mContext, 1)); + mContext.startActivity(EnergyBridge.INSTANCE.getEnergyCenterIntent(mContext, 1)); break; case "raffle_center": DirectUtils.directToLotteryParadisePage(mContext); diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt index c9f4a5d51e..86b20cd6d2 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt @@ -142,31 +142,6 @@ object MessageUnreadRepository { } - @SuppressLint("CheckResult") - private fun getAddonsData(): Observable { - var count = 0 - return Observable.create { - mApi.getHaloAddons(HaloApp.getInstance().channel) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: ArrayList) { - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet - data.forEach { group -> - group.addons.forEach { func -> - if (func.remind && !haveReadRecord.contains(func.id)) { - count++ - } - } - } - it.onNext(count) - it.onComplete() - } - }) - } - - } - @SuppressLint("CheckResult") private fun getNewAddonsData(): Observable { var count = 0 diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt index 6c75d34473..bb3da6e535 100644 --- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt @@ -36,7 +36,7 @@ import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.databinding.ItemPlayedGameBinding import com.gh.gamecenter.databinding.ViewSimpleToggleBinding -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.lightgame.download.DownloadEntity @@ -359,7 +359,7 @@ open class PlayedGameAdapter( class UsageStatsViewHolder(var binding: ViewSimpleToggleBinding) : RecyclerView.ViewHolder(binding.root) fun resetListData() { - if (!hasHeader()) EnergyTaskHelper.postEnergyTask("open_game_time") + if (!hasHeader()) EnergyBridge.postEnergyTask("open_game_time") setListData(mEntityList) } 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 9ff5af4bee..08e53e58c7 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -271,22 +271,6 @@ class HaloPersonalFragment: BaseLazyFragment() { observeNoneUIRelatedChanges() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - if (PackageFlavorHelper.IS_TEST_FLAVOR) { - val indicator = requireActivity() - .window - .decorView - .findViewById(android.R.id.content) - .findViewById(BaseActivity.ID_ROOT_INDICATOR) - indicator?.setOnClickListener { - requireContext().startActivity( - NewPersonalActivity.getIntent(requireContext()) - ) - } - } - } - override fun onFragmentFirstVisible() { super.onFragmentFirstVisible() inflateRealView() diff --git a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalActivity.kt b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalActivity.kt deleted file mode 100644 index e9c39f3a26..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalActivity.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.gh.gamecenter.personal - -import android.content.Context -import android.content.Intent -import android.os.Bundle -import com.gh.gamecenter.common.base.activity.ToolBarActivity -import com.gh.gamecenter.core.utils.DisplayUtils - -class NewPersonalActivity : ToolBarActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - hideToolbar(true) - DisplayUtils.transparentStatusAndNavigation(this) - } - - companion object { - fun getIntent(context: Context?): Intent? { - return getTargetIntent(context, NewPersonalActivity::class.java, NewPersonalFragment::class.java) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.kt deleted file mode 100644 index 9dc138facb..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.kt +++ /dev/null @@ -1,679 +0,0 @@ -package com.gh.gamecenter.personal - -import android.annotation.SuppressLint -import android.content.Intent -import android.os.Build -import android.os.Bundle -import android.text.TextUtils -import android.view.View -import android.view.ViewGroup -import androidx.core.content.ContextCompat -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.gh.gamecenter.common.base.fragment.BaseLazyFragment -import com.gh.common.databind.BindingAdapters -import com.gh.common.util.* -import com.gh.common.util.DirectUtils.directToBadgeDetail -import com.gh.common.util.DirectUtils.directToBadgeWall -import com.gh.common.util.DirectUtils.directToEnergyRecord -import com.gh.common.util.DirectUtils.directToHomeActivity -import com.gh.gamecenter.common.utils.ImageUtils.display -import com.gh.gamecenter.common.utils.ImageUtils.displayIcon -import com.gh.common.util.IntegralLogHelper.log -import com.gh.gamecenter.login.utils.LoginHelper.onQQLoginCallback -import com.gh.gamecenter.login.utils.LoginHelper.onWeiboLoginCallback -import com.gh.gamecenter.core.utils.MtaHelper.onEvent -import com.gh.gamecenter.core.utils.SPUtils.getLong -import com.gh.gamecenter.core.utils.SPUtils.setLong -import com.gh.gamecenter.core.utils.TimeUtils.getStartTimeOfDay -import com.gh.gamecenter.core.utils.ToastUtils.showToast -import com.gh.gamecenter.common.view.SpacingItemDecoration -import com.gh.gamecenter.MessageActivity -import com.gh.gamecenter.R -import com.gh.gamecenter.common.callback.ConfirmListener -import com.gh.gamecenter.common.utils.NetworkUtils -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.tryCatchInRelease -import com.gh.gamecenter.core.utils.DisplayUtils -import com.gh.gamecenter.databinding.FragmentNewPersonalBinding -import com.gh.gamecenter.databinding.FragmentNewPersonalStubBinding -import com.gh.gamecenter.energy.view.EnergyCenterActivity -import com.gh.gamecenter.energy.view.EnergyHouseActivity -import com.gh.gamecenter.entity.* -import com.gh.gamecenter.eventbus.EBConcernChanged -import com.gh.gamecenter.eventbus.EBNetworkState -import com.gh.gamecenter.common.eventbus.EBReuse -import com.gh.gamecenter.login.user.UserManager -import com.gh.gamecenter.message.MessageUnreadRepository.loadMessageUnreadTotal -import com.gh.gamecenter.message.MessageUnreadViewModel -import com.gh.gamecenter.personalhome.UserHomeViewModel -import com.gh.gamecenter.room.AppDatabase -import com.gh.gamecenter.common.retrofit.ApiResponse -import com.gh.gamecenter.energy.view.EnergyUserViewModel -import com.gh.gamecenter.login.entity.Badge -import com.gh.gamecenter.login.entity.UserInfoEntity -import com.gh.gamecenter.login.user.UserViewModel -import com.google.android.material.appbar.AppBarLayout -import com.halo.assistant.HaloApp -import com.tencent.connect.common.Constants -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.greenrobot.eventbus.ThreadMode -import kotlin.math.abs - -class NewPersonalFragment : BaseLazyFragment() { - private var mUserInfoEntity: UserInfoEntity? = null - - private lateinit var mDatabase: AppDatabase - - private lateinit var mBinding: FragmentNewPersonalStubBinding - private lateinit var mStubBinding: FragmentNewPersonalBinding - private lateinit var mUserViewModel: UserViewModel - private lateinit var mUnreadViewModel: MessageUnreadViewModel - private lateinit var mUserHomeViewModel: UserHomeViewModel - private lateinit var mPersonalViewModel: PersonalViewModel - private lateinit var mEnergyUserViewModel: EnergyUserViewModel - - private lateinit var mPersonalFuncGroupAdapter: NewPersonalFunctionGroupAdapter - - private var mIsLogging = false - private var mEnergy: Long = 0 - - override fun getInflatedLayout(): View { - mBinding = FragmentNewPersonalStubBinding.inflate(layoutInflater, null, false) - mBinding.stub.setOnInflateListener { _, inflateId -> - mStubBinding = FragmentNewPersonalBinding.bind(inflateId) - } - return mBinding.root - } - - override fun getLayoutId() = R.layout.fragment_new_personal_stub - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - when (requestCode) { - Constants.REQUEST_LOGIN -> { - onQQLoginCallback(requestCode, resultCode, data) - } - 32973 -> { - onWeiboLoginCallback(requireActivity(), requestCode, resultCode, data) - } - REQUEST_MESSAGE -> { - mUnreadViewModel.retry() - } - } - } - - override fun onClick(v: View?) { - super.onClick(v) - mStubBinding.run { - when (v) { - collapsingToolbar, - toolbar, - personalInfo -> { - if (mUserInfoEntity == null) { - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - personalLogin -> { - onEvent("我的光环_新", "立即登录", "点击登录") - CheckLoginUtils.checkLogin(context, "我的光环-立即登录", null) - } - personalMsg -> { - if (CheckLoginUtils.isLogin()) { - onEvent("我的光环", "消息") - onEvent("我的光环_新", "消息中心", "点击消息中心") - NewLogUtils.logMessageInformBellClick( - mStubBinding.loginMessageHint.visibility == View.VISIBLE, - "我的" - ) - startActivityForResult( - MessageActivity.getIntent(context, "(我的光环)+(消息中心)"), - REQUEST_MESSAGE - ) - } else { - onEvent("我的光环_新", "功能入口-跳转登录", "消息中心") - CheckLoginUtils.checkLogin(context, "我的光环-消息") {} - } - } - personalUserSmallIcon, personalUserIcon -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人中心") - onEvent("我的光环_新", "头像", "点击头像") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - onEvent("我的光环", "手机登录") - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - personalUserNameSmall, personalUserName -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人中心") - onEvent("我的光环_新", "昵称", "点击昵称") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - onEvent("我的光环", "手机登录") - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - ivArrow, personalHome -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人主页") - onEvent("我的光环_新", "个人主页", "进入个人主页") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-个人主页", null) - } - } - personalBadge -> { - onEvent("我的光环_新", "徽章中心", "进入徽章中心") - directToBadgeWall( - requireContext(), - mUserInfoEntity?.userId, - mUserInfoEntity?.name, - mUserInfoEntity?.icon - ) - } - personalReceiveEnergy -> { - log("click_energy", "我的光环") - if (mUserInfoEntity != null) { - onEvent("我的光环_新", "领光能", "点击领光能") - startActivity(EnergyCenterActivity.getIntent(requireContext())) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-领光能", null) - } - } - personalEnergy -> { - log("click_sign", "我的光环") - if (mUserInfoEntity != null) { - onEvent("我的光环_新", "光能值", "点击光能值") - DialogUtils.showEnergyDialog( - requireContext(), - mUserInfoEntity?.name, - mEnergy - ) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-光能值", null) - } - } - personalEnergyCenter -> { - onEvent("我的光环_新", "光能中心", "进入光能中心") - log("click_energy_center", "我的光环", "我的光环-光能中心") - log("view_energy_center", "光能中心") - requireContext().startActivity(EnergyCenterActivity.getIntent(requireContext())) - } - personalEnergyHouse -> { - onEvent("我的光环_新", "光能屋", "进入光能屋") - log("click_energy_store", "我的光环", "我的光环-光能屋") - log("view_energy_store", "光能屋") - requireContext().startActivity(EnergyHouseActivity.getIntent(requireContext())) - } - personalEnergyRecord -> { - log("click_energy_record", "我的光环", "我的光环-光能明细") - log("view_energy_record", "光能明细") - if (mUserInfoEntity != null) { - onEvent("我的光环_新", "光能记录", "进入光能记录") - directToEnergyRecord(requireContext()) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-光能记录", null) - } - } - } - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mDatabase = AppDatabase.getInstance() - val factory = UserViewModel.Factory(requireActivity().application) - mUserViewModel = ViewModelProvider(this, factory).get(UserViewModel::class.java) - mUserHomeViewModel = ViewModelProvider( - this, UserHomeViewModel.Factory( - HaloApp.getInstance().application, - UserManager.getInstance().userId - ) - ).get(UserHomeViewModel::class.java) - mUnreadViewModel = ViewModelProvider( - this, - MessageUnreadViewModel.Factory(HaloApp.getInstance().application) - ).get(MessageUnreadViewModel::class.java) - mPersonalViewModel = ViewModelProvider(this).get(PersonalViewModel::class.java) - mEnergyUserViewModel = ViewModelProvider( - this, EnergyUserViewModel.Factory( - HaloApp.getInstance().application, - UserManager.getInstance().userId - ) - ).get(EnergyUserViewModel::class.java) - - observeNoneUIRelatedChanges() - } - - override fun onFragmentFirstVisible() { - super.onFragmentFirstVisible() - inflateRealView() - observeUIRelatedChanges() - } - - override fun onFragmentResume() { - super.onFragmentResume() - - if (NetworkUtils.isNetworkConnected(requireContext())) { - mUnreadViewModel.retry() - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - if (CheckLoginUtils.isLogin()) { - mEnergyUserViewModel.getUserEnergy() - mEnergyUserViewModel.getSignInfo() - } - } -// val currentItem = (parentFragment as MainWrapperFragment).currentItem -// if (currentItem == MainWrapperFragment.INDEX_PERSONAL) { - DisplayUtils.setLightStatusBar(requireActivity(), false) -// } - } - - @SuppressLint("CheckResult", "SetTextI18n") - private fun observeUIRelatedChanges() { - mPersonalViewModel.appEntity.observe(this) { - if (it.versionCode > PackageUtils.getGhVersionCode()) { - notifyItemChange("设置", FunctionalMessageType.NEW_VERSION) - } else { - notifyItemChange("设置", null) - } - } - - mUserViewModel.loginObsUserinfo.observe( - this - ) { userInfoEntity: ApiResponse? -> - if (userInfoEntity != null && userInfoEntity.data != null) { - changeLoginState(true) - } else { - changeLoginState(false) - } - } - - mUserHomeViewModel.badges.observe(this - ) { badgeEntities: List -> - mStubBinding.personalBadgeIcon.setImageURI("") - if (badgeEntities.isEmpty()) { - mStubBinding.personalBadgeTv.visibility = View.GONE - mStubBinding.personalBadgeCountTv.visibility = View.GONE - mStubBinding.personalMyBadgeIcon.visibility = View.VISIBLE - } else { - mStubBinding.personalBadgeTv.visibility = View.VISIBLE - mStubBinding.personalBadgeCountTv.visibility = View.VISIBLE - mStubBinding.personalMyBadgeIcon.visibility = View.GONE - mStubBinding.personalBadgeCountTv.text = badgeEntities.size.toString() + "" - for ((_, _, icon, name, _, wear, _, actions) in badgeEntities) { - if (wear) { - display( - mStubBinding.personalBadgeIcon, - icon - ) - mStubBinding.personalBadgeIcon.setOnClickListener { - DialogUtils.showViewBadgeDialog( - requireContext(), - Badge(name, icon, actions), - object : ConfirmListener { - override fun onConfirm() { - directToBadgeWall( - requireContext(), - mUserInfoEntity?.userId, - mUserInfoEntity?.name, - mUserInfoEntity?.icon - ) - } - } - ) - } - break - } - } - } - } - mUserHomeViewModel.availableBadgeCount.observe(this, - { count: Int -> - mStubBinding.personalBadgeTips.visibility = - if (count > 0) View.VISIBLE else View.GONE - }) - - mUserHomeViewModel.availableBadge.observe(this - ) { badge: BadgeEntity? -> - // 徽章领取弹窗每隔7天弹出一次,所以要判断现在是否是上一次弹出的第7天或者之后 - if (badge != null && System.currentTimeMillis() >= getLong(SP_BADGE_RECORD_SEVEN_DAY)) { - // 徽章领取弹窗每隔7天弹出一次,所以本次弹出后就记录7天后的时间戳 - setLong( - SP_BADGE_RECORD_SEVEN_DAY, - getStartTimeOfDay(System.currentTimeMillis() + 86400000 * 6) - ) - DialogUtils.showReceiveBadgeDialog( - requireContext(), badge, object : ConfirmListener { - override fun onConfirm() { - mPersonalViewModel.applyOrReceiveBadge(badge.id, { - if ("self" == badge.receive?.type) { - showToast("领取成功") - } else { - showToast("申请成功") - } - // 跳转到徽章详情 - directToBadgeDetail( - requireContext(), - mUserInfoEntity?.userId, - badge.id - ) - }, { - if ("self" == badge.receive?.type) { - showToast("领取失败") - } else { - showToast("申请失败") - } - }) - } - } - ) - } - } - - mEnergyUserViewModel.energy.observe(this) { energy: Long -> - mEnergy = energy - if (energy > 9999) { - mStubBinding.personalEnergyTv.text = "9999+" - } else { - mStubBinding.personalEnergyTv.text = energy.toString() + "" - } - } - - mEnergyUserViewModel.signStatus.observe(this) { (todaySignIn) -> - if (todaySignIn) { - mStubBinding.personalEnergy.visibility = View.VISIBLE - mStubBinding.personalReceiveEnergy.visibility = View.GONE - } else { - mStubBinding.personalEnergy.visibility = View.GONE - mStubBinding.personalReceiveEnergy.visibility = View.VISIBLE - } - } - - mPersonalViewModel.haloAddData.observe( - this, - { datas: ArrayList -> - if (datas.isNotEmpty()) { - mPersonalFuncGroupAdapter.setListData(datas) - mPersonalViewModel.checkUpdate() - } - }) - - mUnreadViewModel.liveData.observe(this, { messageUnread: MessageUnreadEntity? -> - if (messageUnread != null && messageUnread.total > 0) { - mStubBinding.personalNewFansTips.visibility = - if (messageUnread.fans > 0) View.VISIBLE else View.GONE - mStubBinding.personalHome.text = - if (messageUnread.fans > 0) (if (messageUnread.fans < 100) messageUnread.fans else "99+").toString() + "位新粉丝" else "个人主页" - val count = messageUnread.total - messageUnread.fans - mStubBinding.loginMessageHint.visibility = - if (count > 0) View.VISIBLE else View.GONE - BindingAdapters.setMessageUnread(mStubBinding.loginMessageHint, count) - } else { - mStubBinding.loginMessageHint.visibility = View.GONE - mStubBinding.personalHome.text = "个人主页" - mStubBinding.personalNewFansTips.visibility = View.GONE - EventBus.getDefault() - .post(EBReuse(MESSAGE_READ_OVER)) - } - }) - mUnreadViewModel.zixunConcernLiveData.observe(this, - { hasConcern: Boolean -> - notifyItemChange( - "游戏动态", - if (hasConcern) FunctionalMessageType.NEW_MESSAGE else null - ) - }) - mUnreadViewModel.addonsUnreadLiveData.observe(this, - { (favorite) -> - notifyItemChange( - "我的收藏", - if (favorite > 0) FunctionalMessageType.NEW_MESSAGE else null - ) - }) - } - - private fun notifyItemChange(funcName: String, msg: FunctionalMessageType?) { - var notifyIndex = -1 - var notifySubIndex = -1 - val mEntityList = mPersonalFuncGroupAdapter.mEntityList - for ((index, group) in mEntityList.withIndex()) { - for ((subIndex, linkEntity) in group.addons.withIndex()) { - if (TextUtils.equals(linkEntity.type, funcName) && linkEntity.message != msg) { - linkEntity.message = msg - notifyIndex = index - notifySubIndex = subIndex - break - } - } - } - if (notifyIndex != -1) { - mStubBinding.personalFunc.postDelayed({ - tryCatchInRelease { - mPersonalFuncGroupAdapter.notifySubItemChanged(notifyIndex, notifySubIndex) - } - }, 500) - } - } - - private fun changeLoginState(isLogin: Boolean) { - if (isLogin) { - if (mUserInfoEntity != null) { - mStubBinding.personalUserIcon.display( - if (mUserInfoEntity?.iconBorder == null) "" else mUserInfoEntity?.iconBorder?.url, - mUserInfoEntity?.icon, - null - ) - displayIcon(mStubBinding.personalUserSmallIcon, mUserInfoEntity?.icon) - mStubBinding.personalUserName.visibility = View.VISIBLE - mStubBinding.personalBadge.visibility = View.VISIBLE - mStubBinding.personalHome.visibility = View.VISIBLE - mStubBinding.personalLogin.visibility = View.GONE - mStubBinding.personalUserName.text = mUserInfoEntity?.name - mStubBinding.personalUserNameSmall.text = mUserInfoEntity?.name - } - mUserHomeViewModel.userId = UserManager.getInstance().userId - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - mEnergyUserViewModel.getUserEnergy() - mEnergyUserViewModel.getSignInfo() - loadMessageUnreadTotal(true) - } else { - mStubBinding.personalReceiveEnergy.visibility = View.VISIBLE - mStubBinding.personalEnergy.visibility = View.GONE - mStubBinding.personalUserIcon.display("", "", "") - mStubBinding.personalUserSmallIcon.setImageURI("") - // mPersonalBadgeTv.setText("我的徽章"); - mStubBinding.personalUserNameSmall.text = "立即登录" - mStubBinding.personalUserName.visibility = View.GONE - mStubBinding.personalHome.visibility = View.GONE - mStubBinding.personalBadge.visibility = View.GONE - mStubBinding.personalLogin.visibility = View.VISIBLE - if (mStubBinding.loginMessageHint.visibility == View.VISIBLE) { - mStubBinding.loginMessageHint.visibility = View.GONE - EventBus.getDefault().post(EBReuse(MESSAGE_READ_OVER)) - } - } - } - - private fun inflateRealView() { - mBinding.stub.inflate() - - mStubBinding.collapsingToolbar.setOnClickListener(this) - mStubBinding.toolbar.setOnClickListener(this) - mStubBinding.personalInfo.setOnClickListener(this) - mStubBinding.personalLogin.setOnClickListener(this) - mStubBinding.personalMsg.setOnClickListener(this) - mStubBinding.personalHome.setOnClickListener(this) - mStubBinding.ivArrow.setOnClickListener(this) - mStubBinding.personalLogin.setOnClickListener(this) - mStubBinding.personalUserName.setOnClickListener(this) - mStubBinding.personalUserNameSmall.setOnClickListener(this) - mStubBinding.personalUserIcon.setOnClickListener(this) - mStubBinding.personalUserSmallIcon.setOnClickListener(this) - mStubBinding.personalBadge.setOnClickListener(this) - mStubBinding.personalReceiveEnergy.setOnClickListener(this) - mStubBinding.personalEnergy.setOnClickListener(this) - mStubBinding.personalEnergyCenter.setOnClickListener(this) - mStubBinding.personalEnergyRecord.setOnClickListener(this) - mStubBinding.personalEnergyHouse.setOnClickListener(this) - - mPersonalFuncGroupAdapter = NewPersonalFunctionGroupAdapter(requireContext()) - mStubBinding.personalFunc.layoutManager = LinearLayoutManager(requireContext()) - mStubBinding.personalFunc.adapter = mPersonalFuncGroupAdapter - mStubBinding.personalFunc.addItemDecoration( - SpacingItemDecoration( - onlyDecorateTheFirstItem = true, - notDecorateTheFirstItem = false, - notDecorateTheLastItem = false, - notDecorateTheFirstTwoItems = false, - left = 0, - top = 32F.dip2px(), - right = 0, - bottom = 0 - ) - ) - - val statusBarHeight = - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) 0 else DisplayUtils.getStatusBarHeight( - resources - ) - val params: ViewGroup.LayoutParams = mStubBinding.toolbar.layoutParams - params.height = DisplayUtils.dip2px(50F) + statusBarHeight - mStubBinding.toolbar.layoutParams = params - - mStubBinding.appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _: AppBarLayout?, verticalOffset: Int -> - val absOffset = abs(verticalOffset) - val invisibleOffset = - DisplayUtils.dip2px(56F + 48F - 50F) - DisplayUtils.getStatusBarHeight(resources) - if (absOffset <= invisibleOffset) { - mStubBinding.personalUserSmallIcon.visibility = View.GONE - mStubBinding.personalUserNameSmall.visibility = View.GONE - mStubBinding.toolbar.background = null - } else { - mStubBinding.personalUserSmallIcon.visibility = View.VISIBLE - mStubBinding.personalUserNameSmall.visibility = View.VISIBLE - mStubBinding.toolbar.setBackgroundResource(R.drawable.bg_personal_top) - } - mStubBinding.listRefresh.isEnabled = absOffset <= 2 - }) - mStubBinding.listRefresh.setColorSchemeColors( - ContextCompat.getColor( - requireContext(), - R.color.theme - ) - ) - mStubBinding.listRefresh.setProgressViewOffset( - false, - 0, - DisplayUtils.dip2px(80F) + DisplayUtils.getStatusBarHeight(requireContext().resources) - ) - mStubBinding.listRefresh.setOnRefreshListener { - mPersonalViewModel.getHaloAddons() - if (CheckLoginUtils.isLogin()) { - mUnreadViewModel.retry() - loadMessageUnreadTotal(false) - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - } - mBaseHandler.postDelayed({ mStubBinding.listRefresh.isRefreshing = false }, 2000) - onEvent("我的光环_新", "下拉刷新", "下拉刷新") - } - loadMessageUnreadTotal(true) - } - - private fun observeNoneUIRelatedChanges() { - mPersonalViewModel.getHaloAddons() - mUserViewModel.loginObsUserinfo.observe(this, - { userInfoEntity: ApiResponse? -> - val notifyUserInfo: UserInfoEntity? = userInfoEntity?.data - if (notifyUserInfo != null && mUserInfoEntity == null) { // 单个用户,首次触发 - EventBus.getDefault().post(EBConcernChanged()) - val loginTokenEntity = - UserManager.getInstance().loginTokenEntity - if (mIsLogging && loginTokenEntity != null) { - val loginType = loginTokenEntity.loginType - LogUtils.login( - "success", - loginType, - mPersonalViewModel.getLoginEntranceByType(loginType) - ) - mIsLogging = false - } - } - mUserInfoEntity = notifyUserInfo - if (notifyUserInfo == null) { - mUnreadViewModel.clean() - EventBus.getDefault().post(EBConcernChanged()) - } - }) - mPersonalViewModel.haloAddData.observe( - this, - { datas: ArrayList -> - if (datas.isNotEmpty()) { - loadMessageUnreadTotal(false) - } - }) - } - - // 连接上网络事件 - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEventMainThread(busNetworkState: EBNetworkState) { - if (busNetworkState.isNetworkConnected - && UserManager.getInstance().isLoggedIn - && (mUserInfoEntity == null || TextUtils.isEmpty(UserManager.getInstance().token)) - ) { - mUserViewModel.retryCheckLogin() - } - if (busNetworkState.isNetworkConnected) { - mPersonalViewModel.getHaloAddons() - } - } - -// @Subscribe(threadMode = ThreadMode.MAIN) -// fun onEventMainThread(busNine: EBUISwitch) { -// if (MainWrapperFragment.EB_MAIN_SCROLL_TOP == busNine.getFrom() && MainWrapperFragment.INDEX_PERSONAL == busNine.getPosition()) { -// //mScrollView.fullScroll(ScrollView.FOCUS_UP) -// } -// } - - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEventMainThread(reuse: EBReuse) { - if (MESSAGE_READ_OVER == reuse.type) { // 消息阅读完成 - mStubBinding.loginMessageHint.visibility = View.GONE - } - } - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - if (::mStubBinding.isInitialized) { - mStubBinding.listRefresh.setBackgroundColor(R.color.background_white.toColor(requireContext())) - mPersonalFuncGroupAdapter.notifyItemRangeChanged(0, mPersonalFuncGroupAdapter.itemCount) - } - } - - companion object { - private const val MESSAGE_READ_OVER = "MESSAGE_READ_OVER" - private const val SP_BADGE_RECORD_SEVEN_DAY = "badgeRecordSevenDay" - private const val REQUEST_MESSAGE = 199 - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFunctionGroupAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFunctionGroupAdapter.kt deleted file mode 100644 index fc71e1b087..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFunctionGroupAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.gh.gamecenter.personal - -import android.content.Context -import android.util.SparseArray -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.TextView -import androidx.core.util.isEmpty -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration -import com.gh.gamecenter.R -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.entity.FunctionalGroupEntity -import com.lightgame.adapter.BaseRecyclerAdapter - -class NewPersonalFunctionGroupAdapter(val context: Context) : BaseRecyclerAdapter(context) { - val mEntityList = ArrayList() - private val mSubAdapters = SparseArray() - - fun setListData(datas: ArrayList) { - mEntityList.clear() - mEntityList.addAll(datas) - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet - mEntityList.forEach loop@{ group -> - group.addons.forEach { func -> - if (func.remind && haveReadRecord.contains(func.id)) { - func.remind = false - } - } - } - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_new_personal_fun_group, parent, false)) {} - } - - override fun getItemCount(): Int = mEntityList.size - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val groupEntity = mEntityList[position] - val groupNameTv = holder.itemView.findViewById(R.id.tv_group_name) - val funcRv = holder.itemView.findViewById(R.id.funcRv) - groupNameTv.text = groupEntity.name - funcRv.apply { - if (adapter != null) { - groupNameTv.setTextColor(R.color.text_title.toColor(holder.itemView.context)) - holder.itemView.setPadding(16F.dip2px(), 0, 16F.dip2px(), 32F.dip2px()) - for (i in 0 until itemDecorationCount) { - removeItemDecorationAt(i) - } - addItemDecoration(GridSpacingItemColorDecoration(context, 0, 32, R.color.background_white)) - (adapter as PersonalFunctionAdapter).checkResetData(groupEntity) - return - } - val personalFunctionAdapter = PersonalFunctionAdapter(context, groupEntity.name, groupEntity.addons) - adapter = personalFunctionAdapter - mSubAdapters.put(position, personalFunctionAdapter) - layoutManager = GridLayoutManager(context, 4) - isNestedScrollingEnabled = false - if (itemDecorationCount == 0) { - addItemDecoration(GridSpacingItemColorDecoration(context, 0, 32, R.color.background_white)) - } - } - } - - fun notifySubItemChanged(index: Int, subIndex: Int) { - if (mSubAdapters.isEmpty() || mSubAdapters[index] == null) return - mSubAdapters[index].notifyItemChanged(subIndex) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.kt deleted file mode 100644 index 88bd0b2f34..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.kt +++ /dev/null @@ -1,732 +0,0 @@ -package com.gh.gamecenter.personal - -import android.annotation.SuppressLint -import android.content.Intent -import android.database.sqlite.SQLiteException -import android.os.Build -import android.os.Bundle -import android.text.TextUtils -import android.view.View -import android.view.ViewGroup -import androidx.core.content.ContextCompat -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.gh.common.databind.BindingAdapters -import com.gh.common.util.* -import com.gh.common.util.DirectUtils.directToBadgeDetail -import com.gh.common.util.DirectUtils.directToBadgeWall -import com.gh.common.util.DirectUtils.directToHomeActivity -import com.gh.gamecenter.common.utils.ImageUtils.display -import com.gh.gamecenter.common.utils.ImageUtils.displayIcon -import com.gh.gamecenter.login.utils.LoginHelper.onQQLoginCallback -import com.gh.gamecenter.login.utils.LoginHelper.onWeiboLoginCallback -import com.gh.gamecenter.core.utils.MtaHelper.onEvent -import com.gh.gamecenter.core.utils.SPUtils.getLong -import com.gh.gamecenter.core.utils.SPUtils.setLong -import com.gh.gamecenter.core.utils.TimeUtils.getStartTimeOfDay -import com.gh.gamecenter.core.utils.ToastUtils.showToast -import com.gh.gamecenter.common.view.VerticalItemDecoration -import com.gh.gamecenter.MessageActivity -import com.gh.gamecenter.R -import com.gh.gamecenter.common.base.activity.BaseActivity -import com.gh.gamecenter.common.base.fragment.BaseLazyFragment -import com.gh.gamecenter.common.callback.ConfirmListener -import com.gh.gamecenter.common.retrofit.ApiResponse -import com.gh.gamecenter.common.utils.NetworkUtils -import com.gh.gamecenter.common.utils.PackageFlavorHelper -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.tryCatchInRelease -import com.gh.gamecenter.core.utils.DisplayUtils -import com.gh.gamecenter.databinding.FragmentPersonalBinding -import com.gh.gamecenter.databinding.FragmentPersonalStubBinding -import com.gh.gamecenter.entity.* -import com.gh.gamecenter.eventbus.EBConcernChanged -import com.gh.gamecenter.eventbus.EBNetworkState -import com.gh.gamecenter.fragment.MainWrapperFragment -import com.gh.gamecenter.common.eventbus.EBReuse -import com.gh.gamecenter.message.MessageUnreadRepository.loadMessageUnreadTotal -import com.gh.gamecenter.login.user.UserManager -import com.gh.gamecenter.message.MessageUnreadViewModel -import com.gh.gamecenter.personal.NewPersonalActivity.Companion.getIntent -import com.gh.gamecenter.personalhome.UserHomeViewModel -import com.gh.gamecenter.room.AppDatabase -import com.google.android.material.appbar.AppBarLayout -import com.gh.gamecenter.login.entity.Badge -import com.gh.gamecenter.login.entity.UserInfoEntity -import com.gh.gamecenter.login.user.UserViewModel -import com.halo.assistant.HaloApp -import com.jakewharton.rxbinding2.view.RxView -import com.tencent.connect.common.Constants -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe -import org.greenrobot.eventbus.ThreadMode -import java.util.concurrent.TimeUnit -import kotlin.math.abs - -class PersonalFragment : BaseLazyFragment() { - private var mUserInfoEntity: UserInfoEntity? = null - - private lateinit var mDatabase: AppDatabase - - private lateinit var mBinding: FragmentPersonalStubBinding - private lateinit var mStubBinding: FragmentPersonalBinding - private lateinit var mUserViewModel: UserViewModel - private lateinit var mUnreadViewModel: MessageUnreadViewModel - private lateinit var mUserHomeViewModel: UserHomeViewModel - private lateinit var mPersonalViewModel: PersonalViewModel - - private lateinit var mPersonalFuncGroupAdapter: PersonalFunctionGroupAdapter - - private var mItemDecoration: RecyclerView.ItemDecoration? = null - - private var mIsLogging = false - - override fun getInflatedLayout(): View { - mBinding = FragmentPersonalStubBinding.inflate(layoutInflater, null, false) - mBinding.stub.setOnInflateListener { _, inflateId -> - mStubBinding = FragmentPersonalBinding.bind(inflateId) - } - return mBinding.root - } - - override fun getLayoutId() = R.layout.fragment_personal_stub - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - when (requestCode) { - Constants.REQUEST_LOGIN -> { - onQQLoginCallback(requestCode, resultCode, data) - } - 32973 -> { - onWeiboLoginCallback(requireActivity(), requestCode, resultCode, data) - } - REQUEST_MESSAGE -> { - mUnreadViewModel.retry() - } - } - } - - override fun onClick(v: View?) { - super.onClick(v) - mStubBinding.run { - when (v) { - collapsingToolbar, - toolbar, - personalInfo -> { - if (mUserInfoEntity == null) { - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - personalLogin -> { - onEvent("我的光环_新", "立即登录", "点击登录") - CheckLoginUtils.checkLogin(context, "我的光环-立即登录", null) - } - personalMsg -> { - if (CheckLoginUtils.isLogin()) { - onEvent("我的光环", "消息") - onEvent("我的光环_新", "消息中心", "点击消息中心") - NewLogUtils.logMessageInformBellClick( - mStubBinding.loginMessageHint.visibility == View.VISIBLE, - "我的" - ) - startActivityForResult( - MessageActivity.getIntent(context, "(我的光环)+(消息中心)"), - REQUEST_MESSAGE - ) - } else { - onEvent("我的光环_新", "功能入口-跳转登录", "消息中心") - CheckLoginUtils.checkLogin(context, "我的光环-消息") {} - } - } - personalUserSmallIcon, personalUserIcon -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人中心") - onEvent("我的光环_新", "头像", "点击头像") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - onEvent("我的光环", "手机登录") - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - personalUserNameSmall, personalUserName -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人中心") - onEvent("我的光环_新", "昵称", "点击昵称") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - onEvent("我的光环", "手机登录") - CheckLoginUtils.checkLogin(context, "我的光环-手机登录", null) - } - } - ivArrow, personalHome -> { - if (mUserInfoEntity != null) { - onEvent("我的光环", "个人主页") - onEvent("我的光环_新", "个人主页", "进入个人主页") - directToHomeActivity( - requireContext(), - UserManager.getInstance().userId, - "", - "我的光环" - ) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-个人主页", null) - } - } - personalBadge -> { - onEvent("我的光环_新", "徽章中心", "进入徽章中心") - directToBadgeWall( - requireContext(), - mUserInfoEntity?.userId, - mUserInfoEntity?.name, - mUserInfoEntity?.icon - ) - } - } - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mDatabase = AppDatabase.getInstance() - val factory = UserViewModel.Factory(requireActivity().application) - mUserViewModel = ViewModelProvider(this, factory).get(UserViewModel::class.java) - mUserHomeViewModel = ViewModelProvider( - this, UserHomeViewModel.Factory( - HaloApp.getInstance().application, - UserManager.getInstance().userId - ) - ).get(UserHomeViewModel::class.java) - mUnreadViewModel = ViewModelProvider( - this, - MessageUnreadViewModel.Factory(HaloApp.getInstance().application) - ).get(MessageUnreadViewModel::class.java) - mPersonalViewModel = ViewModelProvider(this).get(PersonalViewModel::class.java) - - observeNoneUIRelatedChanges() - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - if (PackageFlavorHelper.IS_TEST_FLAVOR) { - val indicator = requireActivity() - .window - .decorView - .findViewById(android.R.id.content) - .findViewById(BaseActivity.ID_ROOT_INDICATOR) - indicator?.setOnClickListener { - requireContext().startActivity( - getIntent(requireContext()) - ) - } - } - } - - override fun onFragmentFirstVisible() { - super.onFragmentFirstVisible() - inflateRealView() - observeUIRelatedChanges() - } - - override fun onFragmentResume() { - super.onFragmentResume() - - if (NetworkUtils.isNetworkConnected(requireContext())) { - mUnreadViewModel.retry() - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - } - val currentItem = (parentFragment as MainWrapperFragment).currentItem - if (currentItem == MainWrapperFragment.INDEX_PERSONAL) { - DisplayUtils.setLightStatusBar(requireActivity(), false) - } - } - - @SuppressLint("CheckResult") - private fun observeUIRelatedChanges() { - mPersonalViewModel.appEntity.observe(this, { - if (it.versionCode > PackageUtils.getGhVersionCode()) { - notifyItemChange("设置", FunctionalMessageType.NEW_VERSION) - } else { - notifyItemChange("设置", null) - } - }) - - mUserViewModel.loginObsUserinfo.observe( - this, - { userInfoEntity: ApiResponse? -> - if (userInfoEntity != null && userInfoEntity.data != null) { - changeLoginState(true) - } else { - changeLoginState(false) - } - }) - - mUserHomeViewModel.badges.observe(this - ) { badgeEntities: List -> - mStubBinding.personalBadgeIcon.setImageURI("") - if (badgeEntities.isEmpty()) { - mStubBinding.personalBadgeTv.visibility = View.GONE - mStubBinding.personalBadgeCountTv.visibility = View.GONE - mStubBinding.personalMyBadgeIcon.visibility = View.VISIBLE - } else { - mStubBinding.personalBadgeTv.visibility = View.VISIBLE - mStubBinding.personalBadgeCountTv.visibility = View.VISIBLE - mStubBinding.personalMyBadgeIcon.visibility = View.GONE - mStubBinding.personalBadgeCountTv.text = badgeEntities.size.toString() + "" - for ((_, _, icon, name, _, wear, _, actions) in badgeEntities) { - if (wear) { - display( - mStubBinding.personalBadgeIcon, - icon - ) - mStubBinding.personalBadgeIcon.setOnClickListener { - DialogUtils.showViewBadgeDialog( - requireContext(), - Badge(name, icon, actions), - object :ConfirmListener{ - override fun onConfirm() { - directToBadgeWall( - requireContext(), - mUserInfoEntity?.userId, - mUserInfoEntity?.name, - mUserInfoEntity?.icon - ) - } - } - ) - } - break - } - } - } -// mStubBinding.personalBadgeIcon.setImageURI("") -// -// if (badgeEntities.isEmpty()) { -// mStubBinding.personalBadgeTv.setText("我的徽章") -// } else { -// mStubBinding.personalBadgeTv.setText( -// String.format( -// Locale.CHINA, -// "%d枚徽章", -// badgeEntities.size -// ) -// ) -// for ((_, _, icon, name, _, wear, _, actions) in badgeEntities) { -// if (wear) { -// display(mStubBinding.personalBadgeIcon, icon) -// mStubBinding.personalBadgeIcon.setOnClickListener(View.OnClickListener { v: View? -> -// DialogUtils.showViewBadgeDialog( -// requireContext(), -// Badge(name, icon, actions) -// ) { -// directToBadgeWall( -// requireContext(), -// mUserInfoEntity?.userId, -// mUserInfoEntity?.name, -// mUserInfoEntity?.icon -// ) -// } -// }) -// break -// } -// } -// } - } - mUserHomeViewModel.availableBadgeCount.observe(this, - { count: Int -> - mStubBinding.personalBadgeTips.visibility = - if (count > 0) View.VISIBLE else View.GONE - }) - - mUserHomeViewModel.availableBadge.observe(this - ) { badge: BadgeEntity? -> - // 徽章领取弹窗每隔7天弹出一次,所以要判断现在是否是上一次弹出的第7天或者之后 - if (badge != null && System.currentTimeMillis() >= getLong(SP_BADGE_RECORD_SEVEN_DAY)) { - // 徽章领取弹窗每隔7天弹出一次,所以本次弹出后就记录7天后的时间戳 - setLong( - SP_BADGE_RECORD_SEVEN_DAY, - getStartTimeOfDay(System.currentTimeMillis() + 86400000 * 6) - ) - DialogUtils.showReceiveBadgeDialog( - requireContext(), badge,object :ConfirmListener{ - override fun onConfirm() { - mPersonalViewModel.applyOrReceiveBadge(badge.id, { - if ("self" == badge.receive?.type) { - showToast("领取成功") - } else { - showToast("申请成功") - } - // 跳转到徽章详情 - directToBadgeDetail( - requireContext(), - mUserInfoEntity?.userId, - badge.id - ) - }, { - if ("self" == badge.receive?.type) { - showToast("领取失败") - } else { - showToast("申请失败") - } - }) - } - } - ) - } - } - - mPersonalViewModel.haloAddData.observe( - this - ) { datas: ArrayList -> - if (datas.isNotEmpty()) { - mPersonalFuncGroupAdapter.setListData(datas) - mPersonalViewModel.checkUpdate() - } - } - - mUnreadViewModel.liveData.observe(this) { messageUnread: MessageUnreadEntity? -> - if (messageUnread != null && messageUnread.total > 0) { - mStubBinding.personalNewFansTips.visibility = - if (messageUnread.fans > 0) View.VISIBLE else View.GONE - mStubBinding.personalHome.text = - if (messageUnread.fans > 0) (if (messageUnread.fans < 100) messageUnread.fans else "99+").toString() + "位新粉丝" else "个人主页" - val count = messageUnread.total - messageUnread.fans - mStubBinding.loginMessageHint.visibility = - if (count > 0) View.VISIBLE else View.GONE - BindingAdapters.setMessageUnread(mStubBinding.loginMessageHint, count) - } else { - mStubBinding.loginMessageHint.visibility = View.GONE - mStubBinding.personalHome.text = "个人主页" - mStubBinding.personalNewFansTips.visibility = View.GONE - EventBus.getDefault() - .post(EBReuse(MESSAGE_READ_OVER)) - } - } - mUnreadViewModel.zixunConcernLiveData.observe(this, - { hasConcern: Boolean -> - notifyItemChange( - "游戏动态", - if (hasConcern) FunctionalMessageType.NEW_MESSAGE else null - ) - }) - mUnreadViewModel.addonsUnreadLiveData.observe(this, - { (favorite) -> - notifyItemChange( - "我的收藏", - if (favorite > 0) FunctionalMessageType.NEW_MESSAGE else null - ) - }) - - // 微信/签到 - RxView.clicks(mStubBinding.personalSign) - .throttleFirst(1, TimeUnit.SECONDS) - .subscribe { - if (CheckLoginUtils.isLogin()) { - onEvent("我的光环", "签到") - onEvent("我的光环_新", "签到", "点击签到") - sign() - } else { - onEvent("我的光环_新", "功能入口-跳转登录", "签到") - CheckLoginUtils.checkLogin(context, "我的光环-签到") {} - } - } - } - - private fun sign() { - mPersonalViewModel.sign { signEntity -> - mStubBinding.personalSign.setImageDrawable( - ContextCompat.getDrawable( - requireContext(), - R.drawable.personal_sign_icon_yellow - ) - ) - if (mPersonalViewModel.isCanSign(signEntity.lastTime)) { - DialogUtils.showSignDialog( - context, - "签到成功,获得经验:1", - getString(R.string.sign_dialog_content, signEntity.serialSign), - getString(R.string.sign_dialog_content2, signEntity.experience), - getSignSkipText(signEntity.title), - object :ConfirmListener{ - override fun onConfirm() { - mPersonalViewModel.signSkip(signEntity) - } - } - ) - signEntity.lastTime = System.currentTimeMillis() / 1000 - } else { - DialogUtils.showSignDialog( - context, - "今天已签到,明天再来吧~", - getString(R.string.sign_dialog_content, signEntity.serialSign), - getString(R.string.sign_dialog_content2, signEntity.experience), - getSignSkipText(signEntity.title), object : ConfirmListener { - override fun onConfirm() { - mPersonalViewModel.signSkip(signEntity) - } - }) - } - signEntity.id = UserManager.getInstance().userId - if (mDatabase.signDao().updateSignEntity(signEntity) <= 0) { - try { - mDatabase.signDao().addSignEntity(signEntity) - } catch (e: SQLiteException) { - e.printStackTrace() - } - } - } - } - - private fun getSignSkipText(text: String): String = - if (TextUtils.isEmpty(text)) "去首页看看" else text - - private fun notifyItemChange(funcName: String, msg: FunctionalMessageType?) { - var notifyIndex = -1 - var notifySubIndex = -1 - val mEntityList = mPersonalFuncGroupAdapter.mEntityList - for ((index, group) in mEntityList.withIndex()) { - for ((subIndex, linkEntity) in group.addons.withIndex()) { - if (TextUtils.equals(linkEntity.type, funcName) && linkEntity.message != msg) { - linkEntity.message = msg - notifyIndex = index - notifySubIndex = subIndex - break - } - } - } - if (notifyIndex != -1) { - mStubBinding.personalFunc.postDelayed({ - tryCatchInRelease { - mPersonalFuncGroupAdapter.notifySubItemChanged(notifyIndex, notifySubIndex) - } - }, 500) - } - } - - private fun changeLoginState(isLogin: Boolean) { - if (isLogin) { - // 设置背景 - if (mUserInfoEntity?.background != null) { - display(mStubBinding.personalBackground, mUserInfoEntity?.background?.url) - // 自定义背景才需要加阴影 - if (TextUtils.isEmpty(mUserInfoEntity?.background?.id)) { - mStubBinding.personalBackgroundShadow.visibility = View.VISIBLE - } - } else { - display(mStubBinding.personalBackground, R.drawable.bg_home_user_info) - } - val signEntity = - mDatabase.signDao().getSignEntityById(UserManager.getInstance().userId) - if (signEntity != null && !mPersonalViewModel.isCanSign(signEntity.lastTime)) { - mStubBinding.personalSign.setImageDrawable( - ContextCompat.getDrawable( - requireContext(), - R.drawable.personal_sign_icon_yellow - ) - ) - } else { - mStubBinding.personalSign.setImageDrawable( - ContextCompat.getDrawable( - requireContext(), - R.drawable.personal_sign_icon_white - ) - ) - } - if (mUserInfoEntity != null) { - mStubBinding.personalUserIcon.display( - if (mUserInfoEntity?.iconBorder == null) "" else mUserInfoEntity?.iconBorder?.url, - mUserInfoEntity?.icon, - null - ) - displayIcon(mStubBinding.personalUserSmallIcon, mUserInfoEntity?.icon) - mStubBinding.personalUserName.visibility = View.VISIBLE - mStubBinding.personalBadge.visibility = View.VISIBLE - mStubBinding.personalHome.visibility = View.VISIBLE - mStubBinding.personalLogin.visibility = View.GONE - mStubBinding.personalUserName.text = mUserInfoEntity?.name - mStubBinding.personalUserNameSmall.text = mUserInfoEntity?.name - } - mUserHomeViewModel.userId = UserManager.getInstance().userId - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - loadMessageUnreadTotal(true) - } else { - display(mStubBinding.personalBackground, R.drawable.personal_top_bg) - mStubBinding.personalBackgroundShadow.visibility = View.GONE - mStubBinding.personalUserIcon.display("", "", "") - mStubBinding.personalUserSmallIcon.setImageURI("") - // mPersonalBadgeTv.setText("我的徽章"); - mStubBinding.personalUserNameSmall.text = "立即登录" - mStubBinding.personalUserName.visibility = View.GONE - mStubBinding.personalHome.visibility = View.GONE - mStubBinding.personalBadge.visibility = View.GONE - mStubBinding.personalLogin.visibility = View.VISIBLE - if (mStubBinding.loginMessageHint.visibility == View.VISIBLE) { - mStubBinding.loginMessageHint.visibility = View.GONE - EventBus.getDefault().post(EBReuse(MESSAGE_READ_OVER)) - } - } - } - - private fun inflateRealView() { - mBinding.stub.inflate() - - mStubBinding.collapsingToolbar.setOnClickListener(this) - mStubBinding.toolbar.setOnClickListener(this) - mStubBinding.personalInfo.setOnClickListener(this) - mStubBinding.personalLogin.setOnClickListener(this) - mStubBinding.personalMsg.setOnClickListener(this) - mStubBinding.personalHome.setOnClickListener(this) - mStubBinding.ivArrow.setOnClickListener(this) - mStubBinding.personalLogin.setOnClickListener(this) - mStubBinding.personalUserName.setOnClickListener(this) - mStubBinding.personalUserNameSmall.setOnClickListener(this) - mStubBinding.personalUserIcon.setOnClickListener(this) - mStubBinding.personalUserSmallIcon.setOnClickListener(this) - mStubBinding.personalBadge.setOnClickListener(this) - - mPersonalFuncGroupAdapter = PersonalFunctionGroupAdapter(requireContext()) - mStubBinding.personalFunc.layoutManager = LinearLayoutManager(requireContext()) - mStubBinding.personalFunc.adapter = mPersonalFuncGroupAdapter - mStubBinding.personalFunc.addItemDecoration(getItemDecoration()) - - val statusBarHeight = - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) 0 else DisplayUtils.getStatusBarHeight( - resources - ) - val params: ViewGroup.LayoutParams = mStubBinding.toolbar.layoutParams - params.height = DisplayUtils.dip2px(50F) + statusBarHeight - mStubBinding.toolbar.layoutParams = params - - mStubBinding.appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _: AppBarLayout?, verticalOffset: Int -> - val absOffset = abs(verticalOffset) - val invisibleOffset = - DisplayUtils.dip2px(56F + 48F - 50F) - DisplayUtils.getStatusBarHeight(resources) - if (absOffset <= invisibleOffset) { - mStubBinding.personalUserSmallIcon.visibility = View.GONE - mStubBinding.personalUserNameSmall.visibility = View.GONE - mStubBinding.toolbar.background = null - } else { - mStubBinding.personalUserSmallIcon.visibility = View.VISIBLE - mStubBinding.personalUserNameSmall.visibility = View.VISIBLE - mStubBinding.toolbar.setBackgroundResource(R.drawable.personal_top_bg) - } - mStubBinding.listRefresh.isEnabled = absOffset <= 2 - }) - mStubBinding.listRefresh.setColorSchemeColors( - ContextCompat.getColor( - requireContext(), - R.color.theme - ) - ) - mStubBinding.listRefresh.setProgressViewOffset( - false, - 0, - DisplayUtils.dip2px(80F) + DisplayUtils.getStatusBarHeight(requireContext().resources) - ) - mStubBinding.listRefresh.setOnRefreshListener { - mPersonalViewModel.getHaloAddons() - if (CheckLoginUtils.isLogin()) { - mUnreadViewModel.retry() - loadMessageUnreadTotal(false) - mUserHomeViewModel.getBadgeList() - mUserHomeViewModel.availableBadges() - } - mBaseHandler.postDelayed({ mStubBinding.listRefresh.isRefreshing = false }, 2000) - onEvent("我的光环_新", "下拉刷新", "下拉刷新") - } - loadMessageUnreadTotal(true) - } - - private fun observeNoneUIRelatedChanges() { - mPersonalViewModel.getHaloAddons() - mUserViewModel.loginObsUserinfo.observe(this, - { userInfoEntity: ApiResponse? -> - val notifyUserInfo: UserInfoEntity? = userInfoEntity?.data - if (notifyUserInfo != null && mUserInfoEntity == null) { // 单个用户,首次触发 - EventBus.getDefault().post(EBConcernChanged()) - val loginTokenEntity = - UserManager.getInstance().loginTokenEntity - if (mIsLogging && loginTokenEntity != null) { - val loginType = loginTokenEntity.loginType - LogUtils.login( - "success", - loginType, - mPersonalViewModel.getLoginEntranceByType(loginType) - ) - mIsLogging = false - } - } - mUserInfoEntity = notifyUserInfo - if (notifyUserInfo == null) { - mUnreadViewModel.clean() - EventBus.getDefault().post(EBConcernChanged()) - } - }) - mPersonalViewModel.haloAddData.observe( - this, - { datas: ArrayList -> - if (datas.isNotEmpty()) { - loadMessageUnreadTotal(false) - } - }) - } - - // 连接上网络事件 - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEventMainThread(busNetworkState: EBNetworkState) { - if (busNetworkState.isNetworkConnected - && UserManager.getInstance().isLoggedIn - && (mUserInfoEntity == null || TextUtils.isEmpty(UserManager.getInstance().token)) - ) { - mUserViewModel.retryCheckLogin() - } - if (busNetworkState.isNetworkConnected) { - mPersonalViewModel.getHaloAddons() - } - } - -// @Subscribe(threadMode = ThreadMode.MAIN) -// fun onEventMainThread(busNine: EBUISwitch) { -// if (MainWrapperFragment.EB_MAIN_SCROLL_TOP == busNine.getFrom() && MainWrapperFragment.INDEX_PERSONAL == busNine.getPosition()) { -// //mScrollView.fullScroll(ScrollView.FOCUS_UP) -// } -// } - - @Subscribe(threadMode = ThreadMode.MAIN) - fun onEventMainThread(reuse: EBReuse) { - if (MESSAGE_READ_OVER == reuse.type) { // 消息阅读完成 - mStubBinding.loginMessageHint.visibility = View.GONE - } - } - - private fun getItemDecoration() = VerticalItemDecoration(requireContext(), 8F, false) - .apply { mItemDecoration = this } - - override fun onDarkModeChanged() { - super.onDarkModeChanged() - if (::mStubBinding.isInitialized && ::mPersonalFuncGroupAdapter.isInitialized) { - mStubBinding.listRefresh.setBackgroundColor(R.color.background.toColor(requireContext())) - mPersonalFuncGroupAdapter.notifyItemRangeChanged(0, mPersonalFuncGroupAdapter.itemCount) - mItemDecoration?.let { mStubBinding.personalFunc.removeItemDecoration(it) } - mStubBinding.personalFunc.addItemDecoration(getItemDecoration()) - } - } - - companion object { - private const val MESSAGE_READ_OVER = "MESSAGE_READ_OVER" - private const val SP_BADGE_RECORD_SEVEN_DAY = "badgeRecordSevenDay" - private const val REQUEST_MESSAGE = 199 - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt deleted file mode 100644 index 39f34c761e..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt +++ /dev/null @@ -1,346 +0,0 @@ -package com.gh.gamecenter.personal - -import android.content.Context -import android.content.Intent -import android.os.Build -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.facebook.drawee.view.SimpleDraweeView -import com.gh.common.util.CheckLoginUtils -import com.gh.common.util.DataCollectionUtils -import com.gh.common.util.DirectUtils -import com.gh.common.util.NewLogUtils -import com.gh.gamecenter.* -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.utils.DialogHelper -import com.gh.gamecenter.common.utils.ImageUtils -import com.gh.gamecenter.common.utils.PermissionHelper -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.core.utils.EmptyCallback -import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.db.GameTrendsDao -import com.gh.gamecenter.entity.FunctionalGroupEntity -import com.gh.gamecenter.entity.FunctionalLinkEntity -import com.gh.gamecenter.entity.FunctionalMessageType -import com.gh.gamecenter.game.upload.GameSubmissionActivity -import com.gh.gamecenter.gamecollection.mine.MyGameCollectionActivity -import com.gh.gamecenter.gamedetail.myrating.MyRatingActivity -import com.gh.gamecenter.history.HistoryActivity -import com.gh.gamecenter.login.user.UserManager -import com.gh.gamecenter.message.MessageUnreadRepository -import com.gh.gamecenter.mygame.MyGameActivity -import com.gh.gamecenter.qa.myqa.MyAskActivity -import com.gh.gamecenter.security.SecurityActivity -import com.gh.gamecenter.simulatorgame.SimulatorGameActivity -import com.gh.gamecenter.teenagermode.TeenagerModeActivity -import com.gh.gamecenter.toolbox.ToolBoxBlockActivity -import com.gh.gamecenter.video.videomanager.VideoManagerActivity -import com.halo.assistant.HaloApp -import com.lightgame.adapter.BaseRecyclerAdapter - -class PersonalFunctionAdapter(val context: Context, val groupName: String, var mEntityList: ArrayList) : - BaseRecyclerAdapter(context) { - - private var mDisplayUpdateHint = false - private val gameTrendsDao = GameTrendsDao(HaloApp.getInstance().application) - private var countAndKey: Pair? = null - - init { - var dataIds = "" - mEntityList.forEach { - dataIds += it.id - } - if (dataIds.isNotEmpty()) countAndKey = Pair(mEntityList.size, dataIds) - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_personal_func, parent, false)) {} - } - - override fun getItemCount(): Int = mEntityList.size - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val linkEntity = mEntityList[position] - holder.itemView.apply { - val addIconIv = findViewById(R.id.iv_addon_icon) - val nameTv = findViewById(R.id.tv_name) - val updateHintIv = findViewById(R.id.iv_update_hint) - val messageTips = findViewById(R.id.iv_message_tips) - if (linkEntity.iconRes != 0) { - ImageUtils.display(addIconIv, linkEntity.iconRes) - } else { - ImageUtils.display(addIconIv, linkEntity.icon) - } - nameTv.text = linkEntity.name - nameTv.setTextColor(R.color.text_subtitle.toColor(context)) - messageTips.visibility = View.GONE - updateHintIv.visibility = View.GONE - - if (linkEntity.message == null) { - messageTips.visibility = View.GONE - updateHintIv.visibility = View.GONE - } else { - when (linkEntity.message) { - FunctionalMessageType.NEW_VERSION -> { - updateHintIv.visibility = View.VISIBLE - mDisplayUpdateHint = true - } - FunctionalMessageType.NEW_MESSAGE -> { - messageTips.visibility = View.VISIBLE - } - else -> { - //do nothing - } - } - } - if (linkEntity.remind) { - messageTips.visibility = View.VISIBLE - } - if (linkEntity.type == "设置" && !checkPrivacyIsSame()) { - messageTips.visibility = View.VISIBLE - } - - setOnClickListener { - directPage(linkEntity) - } - } - } - - private fun checkPrivacyIsSame(): Boolean { - val currentMd5 = SPUtils.getString(Constants.SP_PRIVACY_CURRENT_MD5) - val settingMd5 = SPUtils.getString(Constants.SP_PRIVACY_SETTING_MD5) - return currentMd5 == settingMd5 - } - - private fun directPage(linkEntity: FunctionalLinkEntity) { - if (linkEntity.remind) { - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet - val newReadRecord = hashSetOf()//这里必须重新创建HashSet对象,否则重启app数据不能保存 - newReadRecord.addAll(haveReadRecord) - newReadRecord.add(linkEntity.id) - SPUtils.setStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ, newReadRecord) - MessageUnreadRepository.loadMessageUnreadTotal(true) - linkEntity.remind = false - notifyDataSetChanged() - } - - MtaHelper.onEvent("我的光环_新", "功能入口", "$groupName+${linkEntity.name}") - NewLogUtils.logHaloSelfClick(groupName, linkEntity.name ?: "", linkEntity.type ?: "", linkEntity.link ?: "",linkEntity.text?:"") - when (linkEntity.type) { - "我的游戏" -> { - if (UserManager.getInstance().isLoggedIn) { - MtaHelper.onEvent("我的光环", "我的游戏") - context.startActivity(Intent(context, MyGameActivity::class.java)) - } else { - MtaHelper.onEvent("我的光环", "我的游戏") - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的游戏") - CheckLoginUtils.checkLogin(context, "我的光环-我的游戏") {} - } - } - "我的收藏" -> { - if (UserManager.getInstance().isLoggedIn) { - if ((MessageUnreadRepository.addonsUnread.value?.favorite ?: 0) > 0) { - MessageUnreadRepository.refreshUnreadCount(MessageUnreadRepository.UnreadMessageType.FAVORITE) - } - MtaHelper.onEvent("我的光环", "收藏") - context.startActivity(CollectionActivity.getCollectionActivity(context, "(我的光环)")) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的收藏") - CheckLoginUtils.checkLogin(context, "我的光环-收藏") {} - } - - } - "帮助与反馈" -> { - MtaHelper.onEvent("我的光环", "反馈") - DirectUtils.directToHelpAndFeedback(context) - } - "浏览记录" -> { - context.startActivity(HistoryActivity.getHistoryIntent(context, "我的光环-浏览记录")) - MtaHelper.onEvent("我的光环", "浏览记录") - } - "视频投稿" -> { - if (UserManager.getInstance().isLoggedIn) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH || BuildConfig.DEBUG) { - context.startActivity(VideoManagerActivity.getIntent(context, "", "我的光环-视频投稿")) - } else { - DialogHelper.showDialog( - context, "提示", - "抱歉,您当前系统版本过低,暂不支持视频功能", "我知道了", "" - ) - } - MtaHelper.onEvent("我的光环", "视频投稿") - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "视频投稿") - CheckLoginUtils.checkLogin(context, "我的光环-视频投稿") {} - } - } - "账号安全" -> { - if (UserManager.getInstance().isLoggedIn) { - context.startActivity(SecurityActivity.getIntent(context, "我的光环-账号安全")) - MtaHelper.onEvent("我的光环", "账号安全") - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "账号安全") - CheckLoginUtils.checkLogin(context, "我的光环-账号安全") {} - } - } - "模拟器游戏" -> { - MtaHelper.onEvent("我的光环", "模拟器游戏") - context.startActivity(SimulatorGameActivity.getIntent(context)) - } - "收货信息" -> { - if (UserManager.getInstance().isLoggedIn) { - context.startActivity(DeliveryInfoActivity.getIntent(context)) - MtaHelper.onEvent("我的光环", "收货信息") - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "收货信息") - CheckLoginUtils.checkLogin(context, "我的光环-账号安全") {} - } - } - "游戏评论" -> { - if (UserManager.getInstance().isLoggedIn) { - context.startActivity(MyRatingActivity.getIntent(context, "", "我的光环-游戏评论")) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的游戏评论") - CheckLoginUtils.checkLogin(context, "我的光环-游戏评论") {} - } - } - "我的问答" -> { - if (UserManager.getInstance().isLoggedIn) { - MtaHelper.onEvent("我的光环", "我的问答") - context.startActivity(MyAskActivity.getIntent(context)) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "我的问答") - CheckLoginUtils.checkLogin(context, "我的光环-我的问答") { } - } - } - "实名认证" -> { - context.startActivity(ShellActivity.getIntent(context, ShellActivity.Type.REAL_NAME_INFO, null)) - } - "微信提醒" -> { - if (UserManager.getInstance().isLoggedIn) { - MtaHelper.onEvent("我的光环", "设置微信提醒") - context.startActivity(WebActivity.getBindWechatIntent(context)) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-微信提醒") { } - } - } - "分享光环" -> { - MtaHelper.onEvent("我的光环", "分享") - context.startActivity(ShareGhActivity.getIntent(context)) - } - "设置" -> { - if (!checkPrivacyIsSame()) { - SPUtils.setString( - Constants.SP_PRIVACY_SETTING_MD5, SPUtils.getString( - Constants.SP_PRIVACY_CURRENT_MD5 - ) - ) - notifyDataSetChanged() - } - MtaHelper.onEvent("我的光环", "设置图标") - DataCollectionUtils.uploadClick(context, "设置图标", "我的光环") - context.startActivity(SettingActivity.getIntent(context, mDisplayUpdateHint, "(我的光环)")) - } - "游戏动态" -> { - if (UserManager.getInstance().isLoggedIn) { - DataCollectionUtils.uploadClick(context, "游戏动态", "发现") - DirectUtils.directToConcernInfo(context) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "游戏动态") - CheckLoginUtils.checkLogin(context, "我的光环-游戏动态") { } - } - val trendsInfo = gameTrendsDao.findGameTrendsInfo(UserManager.getInstance().userId) - if (trendsInfo != null) { - trendsInfo.readPostTime = System.currentTimeMillis() - gameTrendsDao.add(trendsInfo) - MessageUnreadRepository.loadMessageUnreadTotal(true) - } - } - "资讯中心" -> { - DataCollectionUtils.uploadClick(context, "资讯中心", "发现") - - context.startActivity(InfoActivity.getIntent(context)) - } - "礼包中心" -> { - DataCollectionUtils.uploadClick(context, "礼包中心", "发现") - DirectUtils.directToGift(context, "(发现:礼包)") - } - "工具箱" -> { - DataCollectionUtils.uploadClick(context, "工具箱", "发现") - - context.startActivity(ToolBoxBlockActivity.getIntent(context, "(发现:工具箱)")) - } - "安装包清理" -> { - DataCollectionUtils.uploadClick(context, "安装包清理", "发现") - context.startActivity(CleanApkActivity.getIntent(context)) - } - "个人中心" -> { - if (UserManager.getInstance().isLoggedIn) { - context.startActivity(UserInfoActivity.getIntent(context)) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "个人中心") - CheckLoginUtils.checkLogin(context, "我的光环-个人中心") {} - } - } - "游戏投稿" -> { - if (UserManager.getInstance().isLoggedIn) { - MtaHelper.onEvent("我的光环", "游戏投稿") - PermissionHelper.checkStoragePermissionBeforeAction(context, object : EmptyCallback { - override fun onCallback() { - context.startActivity(GameSubmissionActivity.getIntent(context, "(我的光环)", "")) - } - }) - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "游戏投稿") - CheckLoginUtils.checkLogin(context, "我的光环-游戏投稿") { } - } - } - "视频数据" -> { - if (UserManager.getInstance().isLoggedIn) { - DirectUtils.directVideoData(context, "我的光环-视频数据") - } else { - MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "视频数据") - CheckLoginUtils.checkLogin(context, "我的光环-视频数据") {} - } - } - "青少年模式" -> { - context.startActivity(TeenagerModeActivity.getIntent(context)) - } - "我的游戏单" -> { - if (UserManager.getInstance().isLoggedIn) { - context.startActivity(MyGameCollectionActivity.getIntent(context)) - } else { - CheckLoginUtils.checkLogin(context, "我的光环-我的游戏单") { } - } - } - else -> { - DirectUtils.directToLinkPage(context, linkEntity, "", "我的光环") - } - } - - } - - fun checkResetData(entity: FunctionalGroupEntity) { - var dataIds = "" - entity.addons.forEach { - dataIds += it.id - } - - mEntityList = entity.addons - if (countAndKey?.first == entity.addons.size && countAndKey?.second != dataIds) { - notifyItemRangeChanged(0, itemCount) - } else if (countAndKey?.first != entity.addons.size) { - notifyDataSetChanged() - } else { - notifyItemRangeChanged(0, itemCount) - } - - // 重新刷新数据标识 - countAndKey = Pair(entity.addons.size, dataIds) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt deleted file mode 100644 index a73a27ec9d..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionGroupAdapter.kt +++ /dev/null @@ -1,91 +0,0 @@ -package com.gh.gamecenter.personal - -import android.content.Context -import android.util.SparseArray -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.TextView -import androidx.core.util.isEmpty -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.toDrawable -import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration -import com.gh.gamecenter.R -import com.gh.gamecenter.entity.FunctionalGroupEntity -import com.lightgame.adapter.BaseRecyclerAdapter - -class PersonalFunctionGroupAdapter(val context: Context) : BaseRecyclerAdapter(context) { - val mEntityList = ArrayList() - private val mSubAdapters = SparseArray() - - fun setListData(datas: ArrayList) { - mEntityList.clear() - mEntityList.addAll(datas) - val haveReadRecord: HashSet = SPUtils.getStringSet(Constants.SP_ADDONS_FUNCS_HAVE_READ) as HashSet - mEntityList.forEach loop@{ group -> - group.addons.forEach { func -> - if (func.remind && haveReadRecord.contains(func.id)) { - func.remind = false - } - } - } - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return object : RecyclerView.ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_personal_fun_group, parent, false)) {} - } - - override fun getItemCount(): Int = mEntityList.size - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val groupEntity = mEntityList[position] - val groupNameTv = holder.itemView.findViewById(R.id.tv_group_name) - val funcRv = holder.itemView.findViewById(R.id.funcRv) - groupNameTv.text = groupEntity.name - funcRv.apply { - if (adapter != null) { - groupNameTv.setTextColor(R.color.text_title.toColor(holder.itemView.context)) - holder.itemView.background = R.drawable.bg_personal_card.toDrawable(holder.itemView.context) - holder.itemView.setPadding(18F.dip2px(), 16F.dip2px(), 16F.dip2px(), 28F.dip2px()) - for (i in 0 until itemDecorationCount) { - removeItemDecorationAt(i) - } - addItemDecoration( - GridSpacingItemColorDecoration( - context, - 0, - 32, - R.color.background_white - ) - ) - (adapter as PersonalFunctionAdapter).checkResetData(groupEntity) - return - } - val personalFunctionAdapter = PersonalFunctionAdapter(context, groupEntity.name, groupEntity.addons) - adapter = personalFunctionAdapter - mSubAdapters.put(position, personalFunctionAdapter) - layoutManager = GridLayoutManager(context, 4) - isNestedScrollingEnabled = false - if (itemDecorationCount == 0) { - addItemDecoration( - GridSpacingItemColorDecoration( - context, - 0, - 32, - R.color.background_white - ) - ) - } - } - } - - fun notifySubItemChanged(index: Int, subIndex: Int) { - if (mSubAdapters.isEmpty() || mSubAdapters[index] == null) return - mSubAdapters[index].notifyItemChanged(subIndex) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt deleted file mode 100644 index 01c577f425..0000000000 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt +++ /dev/null @@ -1,264 +0,0 @@ -package com.gh.gamecenter.personal - -import android.annotation.SuppressLint -import android.app.Application -import android.text.TextUtils -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.MutableLiveData -import com.gh.gamecenter.common.constant.Constants -import com.gh.common.util.* -import com.gh.gamecenter.GameDetailActivity -import com.gh.gamecenter.MainActivity -import com.gh.gamecenter.NewsDetailActivity -import com.gh.gamecenter.R -import com.gh.gamecenter.common.entity.LinkEntity -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.core.utils.ToastUtils -import com.gh.gamecenter.entity.* -import com.gh.gamecenter.eventbus.EBSkip -import com.gh.gamecenter.fragment.MainWrapperFragment -import com.gh.gamecenter.login.user.UserManager -import com.gh.gamecenter.common.retrofit.BiResponse -import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.retrofit.RetrofitManager -import com.gh.gamecenter.subject.SubjectActivity -import com.halo.assistant.HaloApp -import com.lightgame.utils.Utils -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers -import okhttp3.RequestBody -import okhttp3.ResponseBody -import org.greenrobot.eventbus.EventBus -import retrofit2.HttpException -import java.text.SimpleDateFormat -import java.util.* -import kotlin.collections.ArrayList - -class PersonalViewModel(application: Application) : AndroidViewModel(application) { - - val haloAddData = MutableLiveData>() - val appEntity = MutableLiveData() - private val commonFuncs = arrayListOf( - Triple("我的游戏", R.drawable.personal_my_game, "我的游戏"), - Triple("游戏评论", R.drawable.personal_game_comment, "游戏评论"), - Triple("我的问答", R.drawable.personal_my_questions, "我的问答"), - Triple("视频投稿", R.drawable.personal_video_submission, "视频投稿"), - Triple("我的收藏", R.drawable.personal_my_collect, "我的收藏"), - Triple("浏览记录", R.drawable.personal_browsing_history, "浏览记录"), - Triple("账号安全", R.drawable.personal_account_security, "账号安全"), - Triple("模拟器游戏", R.drawable.personal_simulator_game, "模拟器游戏"), - Triple("收货信息", R.drawable.personal_delivery_info, "收货信息"), - Triple("我的游戏单", R.drawable.personal_game_collection, "我的游戏单") - ) - private val contentCenterFuncs = arrayListOf( - Triple("游戏动态", R.drawable.personal_game_dynamic, "游戏动态"), - Triple("资讯中心", R.drawable.personal_news_center, "资讯中心"), - Triple("礼包中心", R.drawable.personal_gif_center, "礼包中心"), - Triple("工具箱", R.drawable.personal_tools, "工具箱") - ) - private val otherFuncs = arrayListOf( - Triple("帮助与反馈", R.drawable.personal_feedback, "帮助与反馈"), - Triple("实名认证", R.drawable.personal_verified, "实名认证"), - Triple("微信提醒", R.drawable.personal_wechat_remind, "微信提醒"), - Triple("安装包清理", R.drawable.personal_package_chean, "安装包清理"), - Triple("分享光环", R.drawable.personal_share, "分享光环"), - Triple("设置", R.drawable.personal_setting, "设置"), - Triple("青少年模式", R.drawable.personal_teenager_mode, "青少年模式") - ) - - init { - initDefaultData() - } - - @SuppressLint("CheckResult") - fun getHaloAddons() { - RetrofitManager.getInstance() - .api.getHaloAddons(HaloApp.getInstance().channel) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse>() { - override fun onSuccess(data: ArrayList) { - haloAddData.postValue(data) - data.forEach loop@{ - it.addons.forEach { link -> - if (link.type == "设置") { - SPUtils.setString( - Constants.SP_PRIVACY_CURRENT_MD5, link.checkSum?.privacyPolicy - ?: "") - return@loop - } - } - } - } - }) - } - - private fun initDefaultData() { - val datas = ArrayList() - - val groupEntity1 = FunctionalGroupEntity(name = "常用功能") - commonFuncs.forEach { - groupEntity1.addons.add(FunctionalLinkEntity(iconRes = it.second).apply { - name = it.first - type = it.third - }) - } - datas.add(groupEntity1) - - val groupEntity2 = FunctionalGroupEntity(name = "内容中心") - contentCenterFuncs.forEach { - groupEntity2.addons.add(FunctionalLinkEntity(iconRes = it.second).apply { - name = it.first - type = it.third - }) - } - datas.add(groupEntity2) - - val groupEntity3 = FunctionalGroupEntity(name = "其它功能") - otherFuncs.forEach { - groupEntity3.addons.add(FunctionalLinkEntity(iconRes = it.second).apply { - name = it.first - type = it.third - }) - } - datas.add(groupEntity3) - haloAddData.postValue(datas) - } - - fun checkUpdate() { - RetrofitManager.getInstance() - .api - .getUpdate( - PackageUtils.getGhVersionName(), - PackageUtils.getGhVersionCode(), - HaloApp.getInstance().channel - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(response: AppEntity?) { - super.onResponse(response) - if (response != null) { - appEntity.postValue(response) - } - } - }) - } - - fun postMessageRead(messageId: String, body: RequestBody, callback: () -> Unit) { - RetrofitManager.getInstance().api - .postMessageRead( - UserManager.getInstance().userId, - messageId, - body - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : - Response() { - override fun onResponse(response: ResponseBody?) { - super.onResponse(response) - callback.invoke() - } - }) - } - - fun sign(successCallback: (signEntity: SignEntity) -> Unit) { - val context = getApplication().applicationContext - RetrofitManager.getInstance().api - .postSign(UserManager.getInstance().userId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : Response() { - override fun onResponse(signEntity: SignEntity?) { - if (signEntity != null) { - successCallback.invoke(signEntity) - } - } - - override fun onFailure(e: HttpException?) { - if (e == null || e.code() != 401) { - ToastUtils.toast(context.getString(R.string.loading_network_error)) - } - } - }) - } - - @SuppressLint("CheckResult") - fun applyOrReceiveBadge( - id: String, - successCallback: (data: ResponseBody) -> Unit, - failureCallback: () -> Unit - ) { - RetrofitManager.getInstance().api - .applyOrReceiveBadge(id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : BiResponse() { - override fun onSuccess(data: ResponseBody) { - successCallback.invoke(data) - } - - override fun onFailure(exception: java.lang.Exception) { - super.onFailure(exception) - failureCallback.invoke() - } - }) - } - - fun signSkip(signEntity: SignEntity) { - val context = getApplication().applicationContext - val data = signEntity.data - val entrance = "(我的光环)+(签到)" - if (data == null || TextUtils.isEmpty(data.type)) { - EventBus.getDefault().post(EBSkip(MainActivity.EB_SKIP_MAIN, MainWrapperFragment.INDEX_HOME)) - return - } - when (data.type) { - "game" -> { - GameDetailActivity.startGameDetailActivity(context, data.link, entrance) - } - "news" -> { - context.startActivity(NewsDetailActivity.getIntentById(context, data.link, entrance)) - } - "column" -> { - SubjectActivity.startSubjectActivity( - context, - data.link, - null, - false, - entrance - ) - } - else -> { - val linkEntity = LinkEntity() - linkEntity.type = data.type - linkEntity.link = data.link - linkEntity.text = data.text - linkEntity.community = data.community - linkEntity.display = data.display - DirectUtils.directToLinkPage(context, linkEntity, entrance, "") - } - } - } - - fun isCanSign(time: Long): Boolean { - val context = getApplication().applicationContext - val formatDay = SimpleDateFormat("dd", Locale.CHINA) - val lastSignTime = time * 1000 - val curTime = Utils.getTime(context) * 1000 - val lastSignDay = formatDay.format(lastSignTime).toInt() - val curDay = formatDay.format(curTime).toInt() - return lastSignDay != curDay || curTime - lastSignTime > 24 * 60 * 60 * 1000 - } - - fun getLoginEntranceByType(loginTag: String): String { - var entrance = "" - when (loginTag) { - "qq" -> entrance = "我的光环-QQ" - "wechat" -> entrance = "我的光环-微信" - "weibo" -> entrance = "我的光环-新浪微博" - } - return entrance - } -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewFragment.kt index 8a1da48f51..fd76e75389 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/background/BackgroundPreviewFragment.kt @@ -22,7 +22,7 @@ import com.gh.gamecenter.databinding.FragmentBackgroundPreviewBinding import com.gh.gamecenter.entity.ErrorEntity import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.common.base.fragment.ToolbarFragment -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.login.entity.BackgroundImageEntity import com.gh.gamecenter.login.user.UserViewModel import com.halo.assistant.HaloApp @@ -63,7 +63,7 @@ class BackgroundPreviewFragment : ToolbarFragment() { mUserViewModel.uploadBackground.observeNonNull(this) { mPostDialog?.dismiss() if (it) { - EnergyTaskHelper.postEnergyTask("update_user_background") + EnergyBridge.postEnergyTask("update_user_background") requireActivity().setResult(Activity.RESULT_OK) requireActivity().finish() diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt index 9038b3d008..ee34aacfcc 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt @@ -26,7 +26,7 @@ import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentAvatarBorderBinding -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.AvatarBorderCategoryEntity import com.gh.gamecenter.login.entity.AvatarBorderEntity import com.gh.gamecenter.login.user.UserManager @@ -87,7 +87,7 @@ class AvatarBorderFragment : ToolbarFragment() { mUserViewModel?.uploadAvatarBorder?.observe(this, Observer { mPostDialog?.dismiss() if (it) { - EnergyTaskHelper.postEnergyTask("wear_avatar_frame") + EnergyBridge.postEnergyTask("wear_avatar_frame") requireActivity().finish() mUserViewModel?.uploadAvatarBorder?.value = false } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt index 0251e7ad2a..48fd35c465 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt @@ -12,7 +12,7 @@ import com.gh.gamecenter.R import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.databinding.AvatarItemBinding -import com.gh.gamecenter.energy.view.EnergyHouseActivity +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.login.entity.AvatarBorderEntity import com.gh.gamecenter.login.user.UserManager import com.lightgame.adapter.BaseRecyclerAdapter @@ -120,8 +120,9 @@ class ChooseAvatarBorderAdapter(context: Context, notifyDataSetChanged() } else { mFragment.startActivityForResult( - EnergyHouseActivity.getIntent(mContext, borderEntity.categoryId), - ChooseAvatarBorderFragment.REQUEST_CODE) + EnergyBridge.getEnergyHouseIntent(mContext, borderEntity.categoryId), + ChooseAvatarBorderFragment.REQUEST_CODE + ) } } } diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt index b84d983c18..9376003cdf 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryViewModel.kt @@ -6,7 +6,6 @@ import android.text.TextUtils import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.gh.gamecenter.energy.utils.EnergyTaskHelper import com.gh.common.util.ErrorHelper import com.gh.gamecenter.core.utils.UrlFilterUtils import com.gh.gamecenter.common.utils.toObject @@ -17,7 +16,7 @@ import com.gh.gamecenter.entity.ErrorEntity import com.gh.gamecenter.entity.ForumVideoEntity import com.gh.gamecenter.entity.PersonalHistoryEntity import com.gh.gamecenter.common.retrofit.BiResponse -import com.gh.gamecenter.common.retrofit.Response +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp import com.lightgame.utils.Utils @@ -73,7 +72,7 @@ class UserHistoryViewModel(application: Application, Utils.toast(getApplication(), "点赞成功") callback.invoke() - EnergyTaskHelper.postEnergyTask("vote_game_comment", commentId) + EnergyBridge.postEnergyTask("vote_game_comment", commentId) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryViewModel.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryViewModel.kt index 834b1466dd..0efba14304 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryViewModel.kt @@ -11,7 +11,7 @@ import com.gh.gamecenter.core.utils.UrlFilterUtils import com.gh.gamecenter.entity.ErrorEntity import com.gh.gamecenter.personalhome.rating.MyRating import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.Observable @@ -50,7 +50,7 @@ class UserCommentHistoryViewModel(application: Application, var userId: String) Utils.toast(getApplication(), "点赞成功") callback.invoke() - EnergyTaskHelper.postEnergyTask("vote_game_comment", commentId) + EnergyBridge.postEnergyTask("vote_game_comment", commentId) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt index b6a3c66dc5..7bed226c07 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/BaseAnswerOrArticleItemViewHolder.kt @@ -15,7 +15,6 @@ import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.entity.VoteEntity import com.gh.gamecenter.forum.detail.ForumDetailActivity -import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity import com.gh.gamecenter.qa.comment.CommentActivity import com.gh.gamecenter.qa.entity.AnswerEntity @@ -26,7 +25,7 @@ import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import com.lightgame.view.CheckableImageView @@ -320,7 +319,7 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH .subscribe(object : BiResponse() { override fun onSuccess(data: ResponseBody) { //Utils.toast(getApplication(), "已点赞") - EnergyTaskHelper.postEnergyTask("vote_video", entity.id) + EnergyBridge.postEnergyTask("vote_video", entity.id) } override fun onFailure(exception: Exception) { @@ -346,10 +345,10 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH override fun onResponse(response: VoteEntity?) { if (entity.type == "community_article") { entity.me.isCommunityArticleVote = true - EnergyTaskHelper.postEnergyTask("vote_community_article", entity.id) + EnergyBridge.postEnergyTask("vote_community_article", entity.id) } else { entity.me.isAnswerVoted = true - EnergyTaskHelper.postEnergyTask("vote_answer", entity.id) + EnergyBridge.postEnergyTask("vote_answer", entity.id) } ToastUtils.showToast("已赞同") } @@ -473,7 +472,7 @@ open class BaseAnswerOrArticleItemViewHolder(itemView: View) : BaseRecyclerViewH override fun onResponse(response: VoteEntity?) { entity.me.isCommunityArticleVote = true ToastUtils.showToast("已赞同") - EnergyTaskHelper.postEnergyTask("vote_community_article", entity.id) + EnergyBridge.postEnergyTask("vote_community_article", entity.id) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailViewModel.kt index 227f21523c..a0589c669a 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/detail/AnswerDetailViewModel.kt @@ -6,7 +6,6 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.gh.common.history.HistoryHelper import com.gh.common.util.CollectionUtils -import com.gh.gamecenter.energy.utils.EnergyTaskHelper import com.gh.common.util.ErrorHelper import com.gh.common.util.LogUtils import com.gh.gamecenter.R @@ -17,6 +16,7 @@ import com.gh.gamecenter.common.syncpage.SyncFieldConstants import com.gh.gamecenter.common.syncpage.SyncPageRepository import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.StringUtils +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.SpecialColumn import com.gh.gamecenter.entity.VoteEntity import com.gh.gamecenter.eventbus.EBUserFollow @@ -95,7 +95,7 @@ class AnswerDetailViewModel(application: Application) : AndroidViewModel(applica syncVoteData(answerId) - EnergyTaskHelper.postEnergyTask("vote_answer", answerId) + EnergyBridge.postEnergyTask("vote_answer", answerId) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt index 4ff3b2fc21..5f3366715d 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt @@ -18,7 +18,7 @@ import com.gh.gamecenter.core.utils.UrlFilterUtils import com.gh.gamecenter.qa.entity.AnswerDraftEntity import com.gh.gamecenter.qa.entity.Questions import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.lightgame.utils.Utils import io.reactivex.Single import io.reactivex.android.schedulers.AndroidSchedulers @@ -80,7 +80,7 @@ class AnswerEditViewModel(application: Application, syncAnswerCount() tryWithDefaultCatch { - EnergyTaskHelper.postEnergyTask("post_answer", JSONObject(data).optString("_id")) + EnergyBridge.postEnergyTask("post_answer", JSONObject(data).optString("_id")) } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt index a271725c3d..15ad368dc2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailViewModel.kt @@ -16,11 +16,10 @@ import com.gh.gamecenter.common.utils.toRequestBody import com.gh.gamecenter.entity.* import com.gh.gamecenter.eventbus.EBCollectionChanged import com.gh.gamecenter.eventbus.EBUserFollow -import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.qa.comment.base.BaseCommentViewModel import com.gh.gamecenter.qa.entity.ArticleDetailEntity import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.lightgame.utils.Utils import io.reactivex.Observable @@ -140,7 +139,7 @@ class ArticleDetailViewModel( syncVoteData() - EnergyTaskHelper.postEnergyTask("vote_community_article", articleId) + EnergyBridge.postEnergyTask("vote_community_article", articleId) } override fun onFailure(e: HttpException?) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt index 443c30a549..fed64431d3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt @@ -15,7 +15,7 @@ import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.tryWithDefaultCatch import com.gh.gamecenter.core.utils.HtmlUtils import com.gh.gamecenter.core.utils.ToastUtils -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.ActivityLabelEntity import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.login.user.UserManager @@ -171,7 +171,7 @@ class ArticleEditViewModel(application: Application) : BaseRichEditorViewModel(a if (detailEntity == null) { tryWithDefaultCatch { - EnergyTaskHelper.postEnergyTask("publish_community_article", JSONObject(data).optString("_id")) + EnergyBridge.postEnergyTask("publish_community_article", JSONObject(data).optString("_id")) } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt index 6692667484..c20f0beeaf 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentViewModel.kt @@ -6,7 +6,6 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import com.gh.gamecenter.energy.utils.EnergyTaskHelper import com.gh.gamecenter.common.utils.UploadImageUtils import com.gh.gamecenter.common.baselist.ListViewModel import com.gh.gamecenter.common.retrofit.ApiResponse @@ -18,6 +17,7 @@ import com.gh.gamecenter.common.syncpage.SyncPageRepository import com.gh.gamecenter.common.utils.createRequestBodyAny import com.gh.gamecenter.common.utils.tryCatchInRelease import com.gh.gamecenter.common.utils.tryWithDefaultCatch +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.CommentDraft import com.gh.gamecenter.entity.CommentEntity import com.gh.gamecenter.retrofit.RetrofitManager @@ -204,13 +204,13 @@ open class NewCommentViewModel( if (commentType == CommentType.COMMUNITY_ARTICLE && commentEntity == null) { tryWithDefaultCatch { - EnergyTaskHelper.postEnergyTask("comment_community_article", JSONObject(response?.string()).optString("_id")) + EnergyBridge.postEnergyTask("comment_community_article", JSONObject(response?.string()).optString("_id")) } } if (commentType == CommentType.VIDEO && commentEntity == null) { tryWithDefaultCatch { - EnergyTaskHelper.postEnergyTask("comment_video", JSONObject(response?.string()).optString("_id")) + EnergyBridge.postEnergyTask("comment_video", JSONObject(response?.string()).optString("_id")) } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt index 375b18e3b3..49bd0446f6 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditViewModel.kt @@ -9,7 +9,6 @@ import androidx.lifecycle.MutableLiveData import com.gh.base.BaseRichEditorViewModel import com.gh.base.RichType import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment -import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.common.utils.singleToMain import com.gh.gamecenter.common.utils.toJson @@ -27,7 +26,7 @@ import com.gh.gamecenter.qa.entity.QuestionDraftEntity import com.gh.gamecenter.qa.entity.QuestionsDetailEntity import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.lightgame.utils.Utils import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -230,7 +229,7 @@ class QuestionEditViewModel(application: Application) : BaseRichEditorViewModel( if (questionEntity == null) { tryWithDefaultCatch { - EnergyTaskHelper.postEnergyTask("post_question", JSONObject(data).optString("_id")) + EnergyBridge.postEnergyTask("post_question", JSONObject(data).optString("_id")) } } } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index 977d6015c3..d514b5e53c 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -19,19 +19,12 @@ import com.gh.gamecenter.qa.entity.ArticleDetailEntity; import com.gh.gamecenter.qa.entity.ArticleDraftEntity; import com.gh.gamecenter.qa.entity.ArticleEntity; import com.gh.gamecenter.qa.entity.AskSubjectEntity; -import com.gh.gamecenter.qa.entity.AskTagGroupsEntity; -import com.gh.gamecenter.qa.entity.CommunityHotSearch; -import com.gh.gamecenter.qa.entity.CommunitySelectEntity; -import com.gh.gamecenter.qa.entity.CommunitySelectOpenEntity; import com.gh.gamecenter.qa.entity.EditorInsertDefaultEntity; import com.gh.gamecenter.qa.entity.InviteEntity; import com.gh.gamecenter.qa.entity.QuestionDraftEntity; import com.gh.gamecenter.qa.entity.Questions; import com.gh.gamecenter.qa.entity.QuestionsDetailEntity; import com.gh.gamecenter.qa.entity.QuestionsIndexEntity; -import com.gh.gamecenter.qa.entity.SearchHottestEntity; -import com.gh.gamecenter.qa.entity.SearchNewestEntity; -import com.gh.gamecenter.qa.entity.SuggestedFollowEntity; import com.google.gson.JsonObject; import java.util.ArrayList; @@ -44,7 +37,6 @@ import io.reactivex.Observable; import io.reactivex.Single; import okhttp3.RequestBody; import okhttp3.ResponseBody; -import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.DELETE; import retrofit2.http.GET; @@ -90,12 +82,6 @@ public interface ApiService { @GET("games/{game_id}?view=article") Observable getGameNewsDigest(@Path("game_id") String game_id); - /** - * 获取游戏详情 - */ - @GET("games/{game_id}?view=detail") - Observable getGameDetail(@Path("game_id") String game_id); - /** * 获取热门卡牌 */ @@ -134,12 +120,6 @@ public interface ApiService { @GET("games?view=digest") Observable> loadGameDataByPackageName(@Query("filter") String filter); - /** - * 获取游戏更新 - */ - @GET("games?view=digest") - Observable getGameUpdate(@Query("filter") String filter); - /** * 获取游戏更新 */ @@ -245,19 +225,6 @@ public interface ApiService { @GET("index/slides") Observable> getSlide(); - /** - * 获取游戏插件专题数据 - */ - @GET("index/columns?page_size=10") - Observable> getColumn(@Query("page") int page); - - /** - * 获取主页专题入口数据 - */ - @GET("index/recommends") - Observable> getSubjectDigest(); - - /** * 获取专题数据 */ @@ -270,18 +237,6 @@ public interface ApiService { @GET("columns/{column_id}/setting") Observable getColumnSettings(@Path("column_id") String column_id); -// /** -// * 获取界面设置参数 -// */ -// @GET("support/setting/ui") -// Observable getUISetting(); - -// /** -// * 获取下载按钮显示状态 -// */ -// @GET("support/download_status") -// Observable getDownloadStatus(@Query("version") String version, @Query("channel") String channel); - /** * 获取专题游戏 用于主页换一批 */ @@ -308,12 +263,6 @@ public interface ApiService { @GET("games/plugin_tags") Observable> getTags(); -// /** -// * 获取热门搜索 -// */ -// @GET("settings") -// Observable getHotSearch(); - /** * 获取开服表数据 */ @@ -524,13 +473,6 @@ public interface ApiService { @GET("users/{user_id}/follows/libao") Observable> getConcernLibao(@Path("user_id") String user_id, @Query("page") int page); - /** - * 获取游戏详情礼包数据 - */ - @GET("libao") - Observable> getLibaoByGame(@Query("filter") String filter, - @Query("page") int page, @Query("page_size") int pageSize); - /** * 获取礼包详情数据 */ @@ -615,65 +557,6 @@ public interface ApiService { /****** 问答(社区相关) *******/ - /** - * 社区列表已开通页面 - */ - @GET("communities") - Observable> getCommunitySelectOpened(@Query("channel") String channel, - @Query("filter") String filter, - @Query("page") int page, - @Query("page_size") int pageSize); - - /** - * 社区列表 - */ - @GET("communities") - Observable> getCommunityVoting(@Query("channel") String channel, @Query("filter") String filter); - - /** - * 投票社区 - */ - @POST("communities") - Observable postCommunities(@Body RequestBody body); - - - /** - * 获取社区首页精选 - */ - @GET("communities/{community_id}/recommends") - Call> getAskRecommends(@Path("community_id") String communityId, @Query("filter") String filter); - - /** - * 获取社区首页-问题列表 - */ - @GET("communities/{community_id}/questions?view=digest") - Observable> getAskQuestions(@Path("community_id") String communityId, @Query("filter") String filter, @Query("page") int page); - - /** - * 获取社区首页栏目:默认 - */ - @GET("communities/{community_id}/tag_groups") - Observable> getDefaultAskTagGroups(@Path("community_id") String communityId); - - /** - * 获取社区首页栏目:用户排序 - */ - @GET("users/{user_id}/communities/{community_id}/tag_groups") - Observable> getUserAskTagGroups(@Path("user_id") String user_id, @Path("community_id") String communityId); - - /** - * 保存用户社区首页栏目的排序 - */ - @POST("users/{user_id}/communities/{community_id}/tag_groups") - Observable postUserAskTagGroups(@Body RequestBody body, @Path("user_id") String user_id, @Path("community_id") String communityId); - - - /** - * 保存用户社区首页栏目的排序 - */ - @DELETE("users/{user_id}/communities/{community_id}/tag_groups") - Observable deleteUserAskTagGroups(@Path("user_id") String user_id, @Path("community_id") String communityId); - /** * 社区问题详情 @@ -706,55 +589,6 @@ public interface ApiService { @POST("bbses/questions/{question_id}:invite") Observable postInvite(@Body RequestBody body, @Path("question_id") String questionId); - /** - * 搜索社区回答 - */ - @GET("communities/{community_id}:search") - Observable> getAskSearch(@Path("community_id") String communityId, - @Query("keyword") String keyword, - @Query("filter") String filter, - @Query("sort") String sort, - @Query("page") int page); - - /** - * 搜索社区最新回答 - */ - @GET("communities/{community_id}:search") - Observable> getAskSearchNewest(@Path("community_id") String communityId, - @Query("keyword") String keyword, - @Query("filter") String filter, - @Query("sort") String sort, - @Query("page") int page); - - /** - * 搜索社区问题 - */ - @GET("communities/{community_id}:search") - Observable> getAskSearchQuestion(@Path("community_id") String communityId, - @Query("keyword") String keyword, - @Query("filter") String filter, - @Query("sort") String sort, - @Query("page") int page); - - /** - * 搜索社区用户 - */ - @GET("communities/{community_id}:search") - Observable> getAskSearchUser(@Path("community_id") String communityId, - @Query("keyword") String keyword, - @Query("filter") String filter, - @Query("page") int page); - - /** - * 搜索社区文章 - */ - @GET("communities/{community_id}:search") - Observable> getAskSearchArticle(@Path("community_id") String communityId, - @Query("keyword") String keyword, - @Query("filter") String filter, - @Query("sort") String sort, - @Query("page") int page); - /** * 搜索社区问题(编辑问题索引) */ @@ -786,12 +620,6 @@ public interface ApiService { @GET("communities/{community_id}/tags") Observable> getCommunitiesTags(@Path("community_id") String communityId); - /** - * 根据问题标题匹配标签问题标签 - */ - @GET("communities/{community_id}/tags") - Observable> getQuestionTagsByTitle(@Path("community_id") String communityId, @Query("filter") String filter); - /** * 添加社区问题 */ @@ -828,13 +656,6 @@ public interface ApiService { @POST("answers/{answer_id}:unoppose") Observable postAnswerUnoppose(@Path("answer_id") String answerId); - /** - * 获取个人主页的问题列表 - */ - @GET("users/{user_id}/questions?view=home_page") - Observable> getMyHomeQuestions(@Path("user_id") String userId, @Query("page") int page, - @Query("channel") String channel, @Query("timestamp") long timestamp); - /** * 获取用户的问题列表 */ @@ -842,13 +663,6 @@ public interface ApiService { Observable> getMyQuestions(@Path("user_id") String userId, @Query("page") int page, @Query("channel") String channel, @Query("timestamp") long timestamp); - /** - * 获取个人主页的回答列表 - */ - @GET("users/{user_id}/answers?view=home_page") - Observable> getMyHomeAnswers(@Path("user_id") String userId, @Query("page") int page, - @Query("channel") String channel, @Query("timestamp") long timestamp); - /** * 获取用户的回答列表 */ @@ -924,12 +738,6 @@ public interface ApiService { @GET("communities/{community_id}/columns/{column_id}") Observable getAskSubjectData(@Path("community_id") String communityId, @Path("column_id") String columnId); - /** - * 获取社区轮播图列表 - */ - @GET("communities/{community_id}/slides") - Observable> getAskSlide(@Path("community_id") String communityId); - /** * 社区专题的答案 */ @@ -1066,51 +874,12 @@ public interface ApiService { @GET("categories/{category_id}/directories") Observable> getCategories(@Path("category_id") String categoryId, @Query("page") int page); - /** - * 获取分类游戏 - */ - @Headers({"Content-Type: application/json", "Accept: application/json"}) - @GET("categories/{category_id}/games") - Observable> getGamesInCategory(@Path("category_id") String categoryId, @Query("sort") String sort, @Query("page") int page); - /** * 获取分类游戏 */ @GET("categories/{category_id}/games") Single> getGamesInCategory(@Path("category_id") String categoryId, @Query("sort") String sort, @Query("filter") String filter, @Query("page") int page); - - /** - * 社区专栏的标签列表: 默认 - */ - @GET("communities/{community_id}/special-columns") - Observable> getAskColumnsTags(@Path("community_id") String communityId); - - /** - * 获取用户的专栏列表 - */ - @GET("users/{user_id}/communities/{community_id}/special-columns") - Observable> getUserAskColumnsTags(@Path("user_id") String userId, @Path("community_id") String communityId); - - /** - * 获取用户的专栏列表 - */ - @GET("communities/{community_id}/special-columns/{column_id}") - Observable getAskColumnsTagsById(@Path("community_id") String communityId, @Path("column_id") String columnId); - - /** - * 调整专栏排序 - */ - @PUT("users/{user_id}/communities/{community_id}/special-columns") - Observable patchUserAskColumnsTags(@Body RequestBody body, @Path("user_id") String userId, @Path("community_id") String communityId); - - /** - * 调整专栏排序 - */ - @DELETE("users/{user_id}/communities/{community_id}/special-columns") - Observable deleteUserAskColumnsTags(@Path("user_id") String userId, @Path("community_id") String communityId); - - /** * 社区专栏的热门答案列表 */ @@ -1217,19 +986,6 @@ public interface ApiService { @Query("channel") String channel, @Query("filter") String filter); - /** - * 检测游戏是否开启社区,用在游戏详情页的答案列表。如果有可用答案,将会返回社区ID和专题ID - */ - @POST("games/{game_id}/has-community") - Observable checkHasCommunity(@Path("game_id") String gameId); - - /** - * 获取推送别名 - */ - @Headers({"Content-Type: application/json", "Accept: application/json"}) - @POST("umeng/alias") - Observable getAlias(@Body RequestBody body); - @GET() Observable getImageInfo(@Url String url); @@ -1243,12 +999,6 @@ public interface ApiService { @GET("dialog") Single getOpeningDialog(@Query("channel") String channel, @Query("prev_id") String previousId, @Query("prev_time") Long previousTime, @Query("open_type") String openType); - /** - * 告诉后台用户结束了客服会话 - */ - @POST("users/{user_id}/im:ending") - Observable postImEnding(@Path("user_id") String userId); - /** * 将消息标记为已读 */ @@ -1443,12 +1193,6 @@ public interface ApiService { Observable postCommunityArticleCommentReport(@Path("comment_id") String commentId, @Body RequestBody reportData); - /** - * 获取个人主页的回答列表 - */ - @GET("communities/{community_id}/answers") - Observable> getCommunitiesAnswer(@Path("community_id") String communityId, @Query("page") int page); - /** * 游戏评分页面 */ @@ -1464,12 +1208,6 @@ public interface ApiService { @Query("filter") String filter, @Query("sort") String sort); - /** - * 获取游戏详情介绍页面的评论 - */ - @GET("games/{game_id}/comments:hot") - Observable> getGameCommentsForDesc(@Path("game_id") String gameId, @Query("page") int page); - /** * 添加游戏评论 */ @@ -1527,30 +1265,6 @@ public interface ApiService { @GET("blocks/smart_column") Observable getBlockSmartColumn(); - /** - * 获取社区内容列表(推荐最新) - */ - @GET("communities/{community_id}/contents") - Observable> getCommunitiesRecommendNewest(@Path("community_id") String communityId, @Query("page") int page); - - /** - * 获取问答关注动态 - */ - @GET("communities/{community_id}/users/{user_id}/followers/histories") - Observable> getAskFollow(@Path("community_id") String communityId, @Path("user_id") String userId, @Query("page") int page, @Query("timestamp") long timestamp); - - /** - * 获取推荐关注列表 - */ - @GET("communities/{community_id}/users/{user_id}/recommend-followers") - Observable> getRecommendUsers(@Path("community_id") String communityId, @Path("user_id") String userId); - - /** - * 获取社区未读关注信息 - */ - @GET("communities/{community_id}/users/{user_id}/followers/histories:unread") - Observable getUnreadCommunityTimeline(@Path("community_id") String communityId, @Path("user_id") String userId); - /** * 版主修改问题 */ @@ -1602,13 +1316,6 @@ public interface ApiService { @POST("answers/{answer_id}/comments/{comment_id}:hide") Observable hideAnswerComment(@Path("answer_id") String answerId, @Path("comment_id") String commentId); - - /** - * 获取问答-推荐的推荐关注列表 - */ - @GET("communities/{community_id}/suggested_follows") - Observable> getSuggestedFollows(@Path("community_id") String communityId); - /** * 百度ocpc激活 */ @@ -1625,19 +1332,6 @@ public interface ApiService { @GET("reserve_columns") Observable> getReserveColumns(); - /** - * 标记用户点击了该推送 - */ - @POST("./umeng:receive") - Single postUmengReceiveInfo(@Body RequestBody body); - - /** - * 获取单个社区摘要 - * 404 : 隐藏 - */ - @GET("communities/{community_id}") - Observable getCommunityDesc(@Path("community_id") String community_id); - /** * 设置回答详情的的评论区域是否开启 */ @@ -1675,37 +1369,6 @@ public interface ApiService { @POST("communities/articles/comments/{comment_id}:hide") Observable hideCommunityArticleComment(@Path("comment_id") String commendId); - /** - * 设置回答详情的的评论区域是否开启 - */ - @POST("communities/{community_id}/articles/{article_id}:commentable") - Observable postCommunityArticleCommentable(@Path("community_id") String communityId, @Path("article_id") String articleId, @Body RequestBody body); - - - /** - * 获取社区默认搜索文案 - */ - @GET("communities/{community_id}/default_search") - Observable getCommunityDefaultSearch(@Path("community_id") String communityId); - - /** - * 获取默认社区们搜索文案 - */ - @GET("communities/{community_id}/hot_search") - Observable> getCommunityHotSearch(@Path("community_id") String communityId); - - /** - * 获取单条社区文章摘要 - */ - @GET("communities/{community_id}/articles/{article_id}?view=digest") - Observable getCommunityArticle(@Path("community_id") String communityId, @Path("article_id") String articleId); - - /** - * 获取单条回答摘要 - */ - @GET("answers/{answer_id}?view=recommend") - Observable getCommunityArticle(@Path("answer_id") String articleId); - /** * 获取游戏评分回复列表 */ @@ -1792,12 +1455,6 @@ public interface ApiService { @GET("users/{user_id}/games/comments") Single> getMyRating(@Path("user_id") String userId, @Query("page") int page, @Query("filter") String filter); - /** - * 我的光环-用户的优秀评论列表 - */ - @GET("users/{user_id}/games/comments?page=1&filter=view:jingxuan") - Single> getExcellentComments(@Path("user_id") String userId); - /** * 游戏评分-修改 */ @@ -1810,18 +1467,6 @@ public interface ApiService { @GET("devices/alias") Single getDeviceAlias(@Query("model") String model); - /** - * 获取社区推荐位 - */ - @GET("communities/{community_id}/community-recommends") - Single> getCommunityRecommendedEntrances(@Path("community_id") String communityId); - - /** - * 获取社区的全部文章 - */ - @GET("communities/{community_id}/articles") - Single> getAllCommunityArticles(@Path("community_id") String communityId, @Query("sort") String sort, @Query("page") int page, @Query("timestamp") long timestamp); - /** * 获取评分修改记录 */ @@ -1904,15 +1549,6 @@ public interface ApiService { @GET("activities/videos/{video_id}/stream?page_size=20") Single> getActivitiesVideoStream(@Path("video_id") String videoId, @Query("page") int page, @Query("type") String type, @Query("act") String act); - /** - * 获取活动的视频流(新版) - * - * @param type hot最热,new最新,award获奖(只返回获奖视频) - * @param act 活动名称 - */ - @GET("activities/videos/{video_id}/stream") - Single> getActivitiesVideoStream(@Path("video_id") String videoId, @Query("type") String type, @Query("act") String act, @Query("filter") String filter); - /** * 获取活动的视频流(可滑动) * @@ -1951,12 +1587,6 @@ public interface ApiService { @POST("videos/{video_id}:share") Single shareVideoStatistics(@Path("video_id") String videoId); - /** - * 分享统计 - */ - @POST("shares") - Single postShareResult(@Body RequestBody body); - /** * 社区内容浏览记录 */ @@ -2005,15 +1635,6 @@ public interface ApiService { @GET("sts/oss?type=user") Single getOssUpdateConfig(); - @GET("sts/oss") - Single getOssUpdateConfig(@Query("type") String type); - - /** - * 获取首页顶部 tab - */ - @GET("home/tabs") - Single> getHomeTabs(@Query("channel") String channel, @Query("version") String version); - /** * 获取视频标签 */ @@ -2038,24 +1659,6 @@ public interface ApiService { @POST("videos/{video_id}") Observable patchVideo(@Body RequestBody body, @Path("video_id") String videoId); - /** - * 获取相应问题的邀请列表 - */ - @GET("questions/{question_id}/invitations") - Single> getQuestionInvitations(@Path("question_id") String questionId); - - /** - * 对相应问题进行只能邀请 - */ - @POST("questions/{question_id}:smart_invite") - Single postSmartInvitations(@Path("question_id") String questionId); - - /** - * 获取对应问题的相似回答 - */ - @GET("questions/{question_id}/similar_answers") - Single> getSimilarAnswers(@Path("question_id") String questionId); - /** * 提交视频草稿 */ @@ -2207,12 +1810,6 @@ public interface ApiService { @GET("anliwall/comments/{comment_id}") Single getAmwayDetail(@Path("comment_id") String commentId); - /** - * 获取通知权限引导数据 - */ - @GET("boot_popup") - Single getBootPopup(); - /** * 专题合集配置接口 */ @@ -2237,42 +1834,18 @@ public interface ApiService { @GET("games/comments/guide_tags") Observable> guideTags(); - /** - * 首页-轮播图 - */ - @GET("home/slides") - Single> getHomeSlides(@Query("channel") String channel, @Query("version") String version); - - /** - * 首页-推荐入口 - */ - @GET("home/recommends") - Single> getHomeRecommends(@Query("channel") String channel, @Query("version") String version); - /** * 首页-内容列表 */ @GET("home/contents") Single> getHomeContents(@Query("channel") String channel, @Query("version") String version, @Query("page") int page); - /** - * 首页游戏库配置 - */ - @GET("home/navbar") - Single getHomeNavBar(@Query("channel") String channel, @Query("version") String version); - /** * 首页导航栏数据v2 */ @GET("home/navbar/v2") Single getHomeNavBarV2(@Query("channel") String channel, @Query("version") String version); - /** - * 获取我的光环功能列表 - */ - @GET("halo_addons") - Single> getHaloAddons(@Query("channel") String channel); - /** * 获取我的光环(新)数据 */ @@ -2408,12 +1981,6 @@ public interface ApiService { @GET("games/auth_dialogs") Observable> authDialog(); - /** - * 用户关闭游戏实名认证弹窗 - */ - @POST("games/{gameId}/auth_dialog/{dialogId}:close") - Single closeAuthDialog(@Path("gameId") String gameId, @Path("dialogId") String dialogId); - /** * 获取游戏大事件 */ @@ -2559,12 +2126,6 @@ public interface ApiService { @POST("bbses/{bbs_id}:unfollow") Single unFollowForum(@Path("bbs_id") String bbsId); - /** - * 获取论坛关注Tab内容 - */ - @GET("users/{user_id}/follows/bbses/contents") - Observable> getForumFollowArticle(@Path("user_id") String userId, @Query("sort") String sort, @Query("page") int page); - /** * 获取论坛推荐Tab内容 */ @@ -2766,12 +2327,6 @@ public interface ApiService { @GET("./bbses:search") Observable> searchForumContent(@QueryMap HashMap map, @Query("page") int page); - /** - * 应用跳转 - */ - @GET("packages/{package}/redirect") - Single redirectGameDetail(@Path("package") String packageName); - /** * 启动广告 */ diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt b/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt index 3a7e3f9581..da5568eeb5 100644 --- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt @@ -8,7 +8,6 @@ import android.view.View import androidx.lifecycle.Observer import com.gh.gamecenter.common.constant.Constants import com.gh.common.util.DialogUtils -import com.gh.gamecenter.energy.utils.EnergyTaskHelper.postInviteCodeTask import com.gh.gamecenter.R import com.gh.gamecenter.common.BuildConfig import com.gh.gamecenter.common.base.activity.ToolBarActivity @@ -19,7 +18,7 @@ import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.databinding.FragmentBindPhoneBinding import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.common.base.fragment.ToolbarFragment -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.lightgame.utils.Utils class BindPhoneFragment : ToolbarFragment() { @@ -127,13 +126,13 @@ class BindPhoneFragment : ToolbarFragment() { mViewModel.finishLiveData.observe(viewLifecycleOwner, Observer { isSuccess -> if (isSuccess) { // 上报光能任务 - EnergyTaskHelper.postEnergyTask("bind_mobile") + EnergyBridge.postEnergyTask("bind_mobile") // 已完成填写邀请码 val inviteCode = mBinding.bindPhoneInviteEt.text.toString().trim() if (inviteCode.isNotBlank()) { SPUtils.setBoolean(Constants.SP_HAS_COMPLETE_INVITE_CODE, true) - postInviteCodeTask(inviteCode, "mobile_binding", {}) + EnergyBridge.postInviteCodeTask(inviteCode, "mobile_binding", {}) } // 更新本地用户已绑定手机的信息 diff --git a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt b/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt index 472c210537..f11cd6eec2 100644 --- a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt @@ -11,7 +11,6 @@ import com.gh.gamecenter.databinding.FragmentSecurityBinding import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.common.base.fragment.ToolbarFragment -import com.gh.gamecenter.personal.PersonalFragment import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt index 27bb565ae8..19d54082a7 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerViewModel.kt @@ -8,7 +8,6 @@ import androidx.recyclerview.widget.RecyclerView import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.common.history.HistoryDatabase import com.gh.gamecenter.core.runOnIoThread -import com.gh.common.util.* import com.gh.download.DownloadManager import com.gh.gamecenter.common.utils.createRequestBodyAny import com.gh.gamecenter.common.utils.singleToMain @@ -22,7 +21,7 @@ import com.gh.gamecenter.eventbus.EBUserFollow import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.google.gson.JsonObject import com.lightgame.utils.Utils @@ -443,7 +442,7 @@ class VideoDetailContainerViewModel(application: Application) : AndroidViewModel .subscribe(object : BiResponse() { override fun onSuccess(data: ResponseBody) { //Utils.toast(getApplication(), "已点赞") - EnergyTaskHelper.postEnergyTask("vote_video", videoDetail.id) + EnergyBridge.postEnergyTask("vote_video", videoDetail.id) } override fun onFailure(exception: Exception) { diff --git a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt index 8391dbc28f..73fd413a8e 100644 --- a/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/video/upload/view/UploadVideoViewModel.kt @@ -19,7 +19,7 @@ import com.gh.gamecenter.common.mvvm.Resource import com.gh.gamecenter.common.retrofit.BiResponse import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.UploadImageUtils -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.retrofit.RetrofitManager import com.google.gson.JsonObject import com.lightgame.utils.Utils @@ -32,7 +32,6 @@ import org.json.JSONObject import retrofit2.HttpException import java.io.File - class UploadVideoViewModel(application: Application) : AndroidViewModel(application) { private val mApi = RetrofitManager.getInstance().api @@ -74,7 +73,7 @@ class UploadVideoViewModel(application: Application) : AndroidViewModel(applicat val length = jsonObject.getLong("length") postLiveData.postValue(Resource.success(MyVideoEntity(id = videoId, poster = poster, url = url, length = length, status = "pending"))) - EnergyTaskHelper.postEnergyTask("upload_video", videoId) + EnergyBridge.postEnergyTask("upload_video", videoId) } } diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt index 58be9c29b9..20f34bb00b 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt @@ -39,7 +39,7 @@ import com.gh.gamecenter.core.utils.EmptyCallback import com.gh.gamecenter.core.utils.GsonUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentSettingBinding -import com.gh.gamecenter.energy.utils.EnergyTaskHelper +import com.gh.gamecenter.energy.EnergyBridge import com.gh.gamecenter.entity.WechatConfigEntity import com.gh.gamecenter.fragment.MainWrapperFragment import com.gh.gamecenter.game.upload.GameSubmissionActivity @@ -178,7 +178,7 @@ class SettingsFragment : ToolbarFragment() { } if (UsageStatsHelper.checkForPermission() && SPUtils.getBoolean(UsageStatsHelper.USAGE_STATUS_SP_KEY, true)) { mUsageStatus = true - EnergyTaskHelper.postEnergyTask("open_game_time") + EnergyBridge.postEnergyTask("open_game_time") } else { mUsageStatus = false } @@ -463,13 +463,11 @@ class SettingsFragment : ToolbarFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == UsageStatsHelper.USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - if (UsageStatsHelper.checkForPermission()) EnergyTaskHelper.postEnergyTask("open_game_time") + if (UsageStatsHelper.checkForPermission()) EnergyBridge.postEnergyTask("open_game_time") SPUtils.setBoolean(UsageStatsHelper.USAGE_STATUS_SP_KEY, UsageStatsHelper.checkForPermission()) initUsageStats() } - // 当前登录方式为手机号登录,更换手机号后,回到该界面更新"退出账号"的手机号 - // 当前登录方式为手机号登录,更换手机号后,回到该界面更新"退出账号"的手机号 if (requestCode == INSERT_MOBILE_CODE) { initLoginStatus() diff --git a/app/src/main/res/drawable-xhdpi/personal_home_arrow.png b/app/src/main/res/drawable-xhdpi/personal_home_arrow.png deleted file mode 100644 index b7368c9004a21acc48f8593831318ee7c515cece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zjKx9jP7LeL$-D$|_ISEDhIsHM zCrI=>`2YWZlS2&Gk$)wH@)s7pbl_qBJ0;?jOWQN11!qMfy)O7IU=4Dpk$&c?;alvz z)LmCq!u*LA1KZn-50j)TTE6!Fc+l(0uUyn+R$_dh#?9^6a))CgCZ5?Qc3*cK*wMrC z$R23o{6-$zS2r6{gf1lHOuMO|xlpe7iqWc;rx^x(ClgATk4aZ8Tjp!W%*uaZ6E9Ht z0-=_&X^y%+j8ROV9(vD;X7grn=vHZ*!Fx=7IvazEBU{_d%3l^he=vBu`njxgN@xNA DYtdc} diff --git a/app/src/main/res/drawable-xhdpi/personal_new_version.png b/app/src/main/res/drawable-xhdpi/personal_new_version.png deleted file mode 100644 index 2038f5ebf37c7e502b6a22df6869a651753ee8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1850 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 U09tY{!HvvykOtBM+F5`A0I>nVga7~l diff --git a/app/src/main/res/drawable-xxhdpi/ic_im_feedback.webp b/app/src/main/res/drawable-xxhdpi/ic_im_feedback.webp deleted file mode 100644 index 35a785b6d0ec5df9bef5ce8931b92ca2540e1f5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 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 diff --git a/app/src/main/res/drawable-xxhdpi/personal_account_security.webp b/app/src/main/res/drawable-xxhdpi/personal_account_security.webp deleted file mode 100644 index f48b4a21f154d42d5e7788c0a879d015bc7defca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2008 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 wu6Xdhly^Gz^nHr zjh(+Ex(cO|#YF&8%e$h2KaP1+dicXNZnHo(->B!bzYKP9k8acgwhTV?>p%&9-S|au zLwm_1{n^E04Pm?RywL#55f-vF$dDsc)kU4r!TR88uq(Kr81!$DjOZ$;l)?lLaekIO zu%*9@xJV!i1SvcoFUt-x>AO0zx@B330=XZRiL|jZD?E;u8S}OXI=i^{zwF(?N~Cf1lIvw%Y<|Ee6j<9 zDyA!6QQm;Nldwy&0k;-RNoR~LgC(-+)^2HM^nFaFr49G7Cds4B+B_*`MLfz~Nq{mH z2NisC$b?kHl7c1wT9p7+P&go*1ONcg8UUREDpUYe00000C9nfbg#__GuKpYTx_^xM zUa5a1`#bwH{de+atly8}U+TZge~5ok{;U80?637-;2(y5pgn*;L_fWMI{h~N|L+0j z1NhJI59+_bKL7sf|G<9$>j3^|`~&o3|NsC0m!It2U?0N2qWU2JgZ}IL|MZ3YFZ!?i zU+g~tU&p_Y|Em1zqh&xGTiZ>(LW+%Js8*l*r|Nq4kx6MiiZLY zW6qiv-A@pfb@)tZyMJQVt3vTIzU6eSI#vas-*S?ZM(ee0b~uPcg{By)5wIC_bX%|Y z9cyupug)2AKuV#h{b@YKLqe+mO!T~+ryPxf^!s_-uR~y+0H9MXKr-i}61l4^^_H5bIGJXZHGp(52C(S`B^7k;KU^e5K{8q+i02mtQ^*6hS^3VYyD}s}GGsc66-LM{G z34WjEYb$H(NP0FwCk0=I0iT2X{?>h|=cHOxwM*q&n$l5OSh{99EsG%e@ZMkMEu+Sx zQ@(#k=q(G1g+##>*fhB5$q8RKdRk9lGLXjD&)?Z$zlMEOeg=v;p)v5fh~BW%%X2yU z_@fpn1V`^q`!}9)*&yG?*y%^{=_ar)jSaFo!&QDsEo@D=Vvk3S=$!&iHuymCJcpcr z9$BeoKY=a*Im!wR*x#U?h;8N++PCLuVnx%<%D#{2lNpR0!>KcCd^cS(oVh`W6C;)h ze6sUnhwzlom!D+9NgS16`Dc-b5Ts1JudXv2- zRWpUo)rGNdQ?IhEIXR9?^Ux+{@Alt7acL6WC%6SkR`!qv$;bNAoMrwoXKc4lTfE$F z&&y8rkKZq8=V?|_Ml(dY^7PGn19(XgBvOH5i%CfU&e>ic?9w-1_GQGw`-)kPr7t0l zZr3$}H?C#n^&ZQ4*lrjgrbskU`QX~1;y95zpq}#WLW;Cj(X*wL8z6XH5<_3b14q!y z`189fPXMS8qlP<0w^IasaQKAdHQS*g!9H(y;*wgrg^4`W>>;Q&t5-5+SaO;r2K$cZMHAQI$pMm|GyGo K(OBpJ0002g_G}IS diff --git a/app/src/main/res/drawable-xxhdpi/personal_game_collection.webp b/app/src/main/res/drawable-xxhdpi/personal_game_collection.webp deleted file mode 100644 index cb3281513b17d8edcf7d1a55dc2e830a2f74a9ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1992 zcmV;(2RHaqNk&G%2LJ$9MM6+kP&il$0000G0000}002_}06|PpNdE%>00Hn;YumQB z&9)s71VId91`&gXLCnBnaO@0h1_}d15Ck!(7(@(~`D5RYkF!7fD9#K<5z<7mEOQ7F zO~zd>=Ae=s=6aCBc)#m)p)9kEbkNbdrr_(YU1iynWF0DV5t&Ph+sf$(A{SSZIq5!1 znsS&Bok~Jlxvvl%6ojNGK~OU10mI>h5}^=sJ*9`V5|J#U%ypEgGI!r@F6*)^F(n<$ zS@)1sv^rTLMG`G&LAq-orxVJpHEAl`S0y2HbS6qur~`H1jw)nX=A_J-%VAQ|T_cB~ z$#JeGk;B}kXv*mntwJ$H5!GFLh#*8l<`k60GRxdGBvi;8q)1u*JD#?0Z!J#VwMUAA zvdr=7^Ld-UubQg6MiB{xf{>Kr?`{202#ULQC-dWJJN^9O>~{E4D51NCwDPuH{dVT_ z=sBnF+Ov*dmo~KedOCO!Md+?ECHU{tl^>yk{~Wxb$b6f{vd^*aV;^JeW9<8H<*?7^ z#oy)heJMp{oghTQ=eBK6J4&m%YbS>xC4$O4y>Hw0!(jw>4Tr7fAUOSpoZF_Pu%R8RGkMWK~6VW1)DA=~`Ptp{0$IH8u zX%f;T%a}g4ZTkV`WS4%rGjod|D(Y?9w%=sk!j(4<&B?4^w{82#$?Dqfa+DtMvTaZ3 zXnpS4jafF$DIsLrwm*Z2y5aR&=FgvFjIr%9O z_-ZcteA+Jls2rdBx|TAw{3Z}u?b(Fc}I3|y& zR#_*qu2j~Y=s`-;T;`l_CWI^>bbm)iXb zWF4f%Iz;8LkoR-rhG-%4q7EXXgx>#5=QDeLM z&n3}x9MXxyoP67^|GFWeI)PFuNtR8&wmZLnoJ;1M2tfpyGrzxVH$VS1j`w}v$3EtL zjD76;zK?y3eIH}r_c8Xd&tvRk?EBx(+yAWs09H^qAesXJ0FW2}odGIT08{_~001S4 zv^g5n=-BXh{#V#VjJt2(2kn3L?y0Vz<%5+J-1RZ=kIIkgzdZj{e*iu|`hb3k|0w*r z_ip|H(gXMh@DJ%9z&+ghKtG)S0QFV=!PY7K1NgV0KlLwBZ}Feiegc1#{}21!UIdKdNdm6S0yXxuqXcj=hjXfivx_??RE-s8KEHS7y29mzMh?2lGNmR-riGXPFi1t>3}gb`-;iVaR(i9)$lgv5HeqeR+DCnZs=IaU#lnel zgYCU|*FKuM3j&y=1(nA;qI5=tegSd+^4}kZ0KVWsJfJ@{qXP0AHW7|KEathX2AgHi5i@`)3p5~x-GNM8gz!Jt)> zYdXh^%v|D*PV(`M1Ti6aT=PuJsk=g*iG;w9R-F`OdUVVp@Xg5;=4^RatzK50unBMf a?tpUiK$!*lxW8z4s{h}D=l}o!0000(wEp-2 diff --git a/app/src/main/res/drawable-xxhdpi/personal_game_comment.webp b/app/src/main/res/drawable-xxhdpi/personal_game_comment.webp deleted file mode 100644 index f86bba7efb540febb0eed1e5cbc18f67b1f08ef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1726 zcmV;v20{5!Nk&Gt1^@t8MM6+kP&il$0000G0000}002_}06|PpNLd2_00FR6TYDhM zQ9>vNP6pEqYz6~int_W!h(SXr2!>D)n!yx=Wbp1nicq?pE3YDA0&f3eef#5o#~8;L zV;tj{$2g8LALBTVF~%{DV~jD5aU5feV~qDd{+8c=Jgh@dR4!-Evf%OY+q2$&2rbGo z%e1OU5JBO`+f(je(IWfNl+zRnO8$R;!u<%RAC4hq>!q=d-2)%>~j z-Ss3wnn;#q4nZP#-}yplA*dv$*$;A>$Hsr1w@{W@Mmp(iT~qM;wGUK@%CafRI#lK& zGMAK(Yd@i+ayf#?=1MXreO*(CqNFLO3DKn_q?N~pX|52R6ojNGK~ORWJ2d5dLWxia z*-z7_BT1`aOL1!tUlO`gH&<06X2}(4H zglf^0xyXFYZkADMvdC#@Dwj7piIk$UP7orwTw2w}^_+&32rBc&9Kn-v-f9k#)1Xd* zEU!f+Let!84noNF2+=jjY0=MbxBdH1rCOwuIm?ZdgjDXgXMU3?7t<89Q|6G!+f!~3 zmnavzX3jczf6AYtqE51I;R%Sc{5ZzuG5&&F&c*5}k<1Y#%Us-`v-L)jb%iXO=9Cax z1QGR&IjvNdnInQwnG=~a_Y9?#(@3%`vP?`=&Nphcj1-l56(K37L3)a5H|vzLOvHs{ z=JbpfwVJaI64Nq;ri)tzSw%C=ww_7lbnJ zG!YRgQZ5ETK@*AREXy(>=QRaUQ8Fi|Jt3lLGgosp$ucBQc#SXV@sd7Y()&xgzoL)Z z3wqpN(fjQMjoa&ayx+DT|GdxpZU6J1_4PU4ZqFQhVP&gnq0{{Rp6#$(9DpUYe00000C5g1e##89nIYEAb z_yOQ6KKg6tUxmM`pWr&MVmIst?U}0STjf8Bzra0!Im>^delB~N{{Zp;_5u0<{LlCY zyMO2hSO@3_00;07zFOy05=8sA(Kkc3I3&MiVJ6$e`g3>0092| zP^bU?wr~Ib!%6@D>f+Up^MOyVIHO_iu_aHxQBJB4-ASolU_)w=z;(!S1!ut4;C3%n z4s+FsZ8HdSpcF{qB#%o(>fD!lw*?qFF4wP!%9Hb=9gM)0|3<(t8@Es)s0#3U_5o(O zmJV|Yps{btgeo}qH5A6wGX&n@GT(py{i)1M8KYv;@(tgC6}R#Cn*YlJf&&$$SM;B6 zh}6%<67XbcgcpDtqE#g7h3YYHmZ*{=-f2noN`7w{2jrCB0ebFcJ860`l`9O=^-Z;<>miCSqE{cW9Kr5ED@G@R3<-ZGD*%pLYw+)?uKMlzfEMgKja$#!4!=!B3D z?6BqF6?*)r3nEqYrFCJUpSpFyB%s=wO}73mveuQn4}JO#^G|ZNDy}l0hiUnDQXw@h z@y9i|gE*%j`Dx9mCz;lZmG+CVh=`k!CX@RkYyP$v`~2|XHRbB^JuMXjWYN96`d%aV{0?k7&5~J0!X0GO zqC3r3Fy~5XBWKs6J~%#zbGcnLT>NI3s^CXuv;5d^?t=Bu4yC8@Cj#*U#?YY__0-?N zP}$0LK|p#T5? diff --git a/app/src/main/res/drawable-xxhdpi/personal_game_dynamic.webp b/app/src/main/res/drawable-xxhdpi/personal_game_dynamic.webp deleted file mode 100644 index 064b9854dbad28d62c5f71f7e0b03b91e6c50484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2552 zcmV<|BMM6+kP&il$0000G0000}002_}06|PpNL&N}00E%GY?~9o z;iB^j$vNYky_a*qIZfeAc{u0wIGf5BR&Lpv<|5Z}+apnKxf1;zHPtlqBf>0~NrADm$N|;()*1i9w!|w>h@{@wkH*SL?T5uM-9zYD>RP^|=ZdYHj(jtW@z8Ow00QeWhPdqw@g=J1tKuqFnAxZQ2P|yRkmXc}n#h7kHKVb!>?Ed3Aq28M z0j4G;G=qU$_Y5t62M~vQTpw^wU}oTd7>Ixqo0}E2WbPI{=3wR`46vA49o8_CF`P&t z+4GdLE~m$IB{;~ej$28&%WVQ+1`34h1HNS8OTvSy0HYWd4E71gl3WeCM=5yhs8G&F zSW_+g@Gzn=`4YW-#zd_No<<;@l{OW@cipG?{44f@xzS{KY zX3n4jaO@j!m|X1hIdtG?o<`g}D{+07=lP8`V+2NNZSb@h{LKQWjD#pDJ32JY-MVz2Q$_P{+fUaT?A5J z&eP?fYm#J<=!ne#c^Y{=JpD^D`_keKzD&|IFNyw0biD*`AkuIruwdJ^^}tQrwwl3u znIM13EDpkWt=+R*Wl3b(VwE{kDO{p0v$=6vz9d3Ci-WMK8s0l>R?Gfb#%>s!;VU$1 zLHKu;=Ve&}@v1D#JkQekjJd_OAkeWOwJkg=cx064d9mM)cif}3iv6e^M~+iuu(ZN1 zxRVdX>yGgyQCc@w;4E~Ek}PdHAw>I}B4^&qC0PEUYtc+YpRi{^=uF;ms6@!DMbw@2 zZg&~UINYTO(;jh|Rp8`~-|QMXchQ)1^c|ml*VX?G0r2Y%d<^&CDxDAdG-ayQD7*Z& z)5xIZ~yzHyZ?Le z5&WC@pZlNA{z1Rs9d7@GAD|qJ*2*l%ywy_or~W+m@1GlLGEQ1_A*8myR~pcfovtK+ zGb!lGb6x%1(kV(=P#_>T1tZWmo0_`~o+U9y&=-|4qlm}!am5sO^a5V!X`|WE7v8ti zLF^6r@FumtbGQbMf9(8v!{x+%u4nIwDq~mx0RI2qZq}pzvj@jWU&r%^UqlbeiV1tc z4Vhg+3xWpHo`&6VndzGc1b5QAkOrIVR(432O-toFp9_1r{8}RI7GMNjWd4U{_h$Za z`{JU%8+Wq?mWa_|B< z>O29Mw98B-e$=avm(4%()X8L1!C|Mu>r2v?$~diQq+$j}M&$&2%4b|qKl*I-@U=+p zo9Kv?Yy(itNl~I&zwSSymr)C^D)Rz=={JSxz@e7-StHk)J4{e@6=5Mh@T$nR9pH_gtN!+65crpt}xkE=0zG*4PH^Q zhNY|sJnLwm%gTuOOYDNb78biGZ8%@9?dPsXa%FB$56Or->_`h};BpTHyr#d$C}Z9B zD06bawcz$v(l)R+Zw9`h{-#L9V2M(PQJ#t!sug?z#LInz?GY2sMtwuBJ_E>Sy}DFu zAYs%hfdz+KQUoU(z|>>X#f0Kbr1rY)g`mP}pE4Oh(fKU2cCLOS9t%KsG#x&TaY*9QoRTR~as`u=P-O zk_5|!;;?+E&fb<{vq8`YYg?2+5G7&?<qkl1*)`Y{|X<|CY3BFL$>R z^U?0%-c{5~)1rS_@&Eo)lD~-zDW3(T3*=oTENq_g%~v(euH`5~ofIkB&Fp(}bOT*<2z)$6fbRDP_a$D}QYpl^&^`yp Osy`(mU;qFB0000qn*$pF diff --git a/app/src/main/res/drawable-xxhdpi/personal_gif_center.webp b/app/src/main/res/drawable-xxhdpi/personal_gif_center.webp deleted file mode 100644 index cca9559be05a2aec0b083502fac296e59c78b450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1620 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 G0000m-m*Oa diff --git a/app/src/main/res/drawable-xxhdpi/personal_my_game.webp b/app/src/main/res/drawable-xxhdpi/personal_my_game.webp deleted file mode 100644 index d92c6ffae99794ecd2bc645bc441dbbfd238a950..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2086 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 diff --git a/app/src/main/res/drawable-xxhdpi/personal_news_center.webp b/app/src/main/res/drawable-xxhdpi/personal_news_center.webp deleted file mode 100644 index 6c7548d627c0969d5aafdebea986616da2236a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmV;B1aJFNNk&G91ONb6MM6+kP&il$0000G0000}002_}06|PpNS^@!00EE!ZJQf6 zziWEpZnLb@s71{-y}9EQ&C&FpAYJ1UPOseNnGpFOJ5Dcy0Zj48zSKN8s3~;IS>!c^m@a-FfXG zy=SLG^9R5-g~kHNLz4o))6iI^oJ1@xn30wOKu%7FSXOXGSj{r+hH?PgLu}x>sG0?U zFXXrm04bwsNi_=qM!6c=27rXo1v&2zz?aB*ogr03MAMgKyxT%yojk5Hm@i9O>sxnT zzVqCE|N8*Nb@HhUlfS)0ewC?0uE={`T&_u?ir3|A=XFJ5haxR9Qq+A209H^qAi@Fw z01y%YodGIT08{_~001S315Ra$`tRaS%MV)oPyAKtOx~Wx{>J}WA)L)zkVvSO@6GqHp$}>|YB%u>OS4vjcsuWfj+g z?BBCuKPP5l+>RVQm9KaHOnIn3qk}c12mokD;x*DCT(kYF);v1jg6+kRijFibL!bcu z|Nq4lumAp{cWoqWyeTEfqq|0PD8IYc| z8S%|?pC~@>dtHS?#lcyL*q}T`HL>3{C*e zzzgOutQ%{;8a5R<`91&tQRgSWZF9OcegXNzwr$*}^yx}m!xoEwkNc#~NQT2NWhdb| i+z^#W@N_lb8-$baMA>#cW5g=_HA-uL!+ih%0002SCNi-A diff --git a/app/src/main/res/drawable-xxhdpi/personal_package_chean.webp b/app/src/main/res/drawable-xxhdpi/personal_package_chean.webp deleted file mode 100644 index ac48076547f552fdc8e133c22aa66c6cc3fc355f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1508 zcmV;o1%IF9wKknZ#01E{ zjYZ=;1lJU^qi{s}ayA%8;)a<4#*^$#cE;1`H>}RbRqMmGRPNn!ym44yb%#O z^KmHE7+^!DXaayQMMUgCnh8KK(~w$$-?P@K_V5FB&>pUSwC%x!&RV8xI|grM+I1LS zsAc+Qb7;=UAWiMUP`tBq@-HD)P&gpS0{{Tf833IDDpUYe00000C71(HMFsc=;s*={ zQT&hb6ZQlBzejG$_Ivhc`+i`T1AjXFhyNSym-x5ir(g%@$MZkOj?f-pKZ<`P{)hc{ z-NXC`@s6+$xs6<^7xd2f+X9xBXx69|B*=f13U1@(F(c>s|Z+ z{U!T}>@^iR;|JShCu?+_UXBw_pQ9!8kwP>U^uoylcz zuvHH>dA;Qf9nUm9Q2IjR7t`YL>3Z-MR~BNaPnHyGyZ`|H|KD!c3;u5rum<_i5lZ7O ze@v+el%2%!^4?pUPS&UY;tjdT>)xeT+s2d;J%Mod(q*I@Z|4ZQhRcKQ;io{D7LZPq zmbil@IZcn3jFN&pLux)!!>}lIfoB-txs%qV2wfQ{*RPzG!doxhbNwH^kkR7xQH;Mh)1qC9~ZB@*^POaw;8*dQkZK?LKdkjcp%bc81k`RuQmcX$YA|K{bVdLo zI-Rxu{H=pDyp@~ZrCl9xG_@C{W9k~SskWSzjWsCMmkoy;1_ACL&?gSOMgo`exY-CO zVbBh;)d;I>t%2eArxnhjKj#7seHFgP_d^&HQwE>UCth2O3l7q%xA^87p-}v1D=seb zTmzNL!f8h+xD{6&|l}dp^M^ z6hQkUpy1%2In!PFNB#Hz)03qZgotm+Z@RY~oUM`U+a;!~O?_kk(_Hf0LNp&+0@dlT zG}Q!uIq)4v#zrBrN5?OC6%o}rev4JoJDW9P@~SEk3EN6VwGZN|L$Y(m!dXF zYS-wPI0nz+K@u2x`~Cn0X((N{q_dZegRgr3on5gg1yi__{S4JuWN15>+Zs>^ZU!Tq z&EiU1)Ci$#l_PR+{>fvt#Z=nf7z1>9HczUeO{7P+`Tu-sIM2w6|DvH+*?8JWoGvW( zOYpAyl8-W3Fk$^dYHaMjzfE4i41;UrP-? K{l`cE00028Pvpx0 diff --git a/app/src/main/res/drawable-xxhdpi/personal_setting.webp b/app/src/main/res/drawable-xxhdpi/personal_setting.webp deleted file mode 100644 index e1d1cda48795e0691950436f34e244b4379e308f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1740 zcmV;-1~d6mNk&G*1^@t8MM6+kP&il$0000G0000}002_}06|PpNDKo200EFf+qN4w zlb*0CG`;t@AhY!PQ<$iha2geI<$rK`lc{HLw3gs7H|_`vrHOx+r~mGI?ly@C2a+U3 zQ8zB0TLUVGPpIuK_@>Qrku!U971lDR;5^h-eab2Mb6rsR$oi}pFEBakmL42k$95otF$%7+2^MQ9Qv2sYOwe8%(q zB#H=Pn= zCXHcIDInC@&OC%VstLEO6lefq?1f_w&)|r3MGLAt%p%EpL zrak$H_IJXfmr7jeac9=|_sm-TiD1fxyV`jW^Kp8HC9kKAd&+B z0I(GRodGIT08{_~001SJ14q@-`yb;5zXw_TOZ|ZV0nazCoyYx+{?*Q&g}os4H{{=v zAMbzv@PK}Ue{K9|-~sw){Wsfhqyzb1@_$v&>b}4pfFG#-rC-+n&;MWe4gH`0wf{5V zEBW8@pT0go58xC4(IrJO^<^O-sGmFxA{}T#2$Djz)k->04No-Q3t%|l|!E?w-7CTU#E~;Vb1%+l}w%0CS8#JFA&cVf(eE1 zqWvrUWVlV^0t#}<`zfo-wb3#Ygq4&e!SG+>Bdjti!3+Tnj7 z;*BgMm_uBQ3mJJ+is-uA<$wUTNB}DUoe7055}wI@@^N4O_QLXo@EEGDgmrVX6Ctvd zptmKU01jw)BrIZxJJrnp+5=h7x3v=@1mG{-%{QQO>brrf{TA?szwYE$p*O?y|F4&; zAMujg8jXr8!2jY5Ji-=MKq=?;moUx)w8 zx4Nlc(n0i)rFyF-fb83Ux}tC-Blc3E*{I#WK@NL(1(ReXR(tb+pU^hIExTMSFiQ<* zd{^{hz7nQQU(3#w;Q~`2h4AIqDxLlzo4InY?>zY^kw;>Kz?*z1r`w>v|NiHiLc}yT zt{0dJginkb+3T~r8}I}_@J~}67KdBPqBI7U`o+yb19urR{pvY!fz$Jz^@X32vOnkw zIrE(=F9;xE_+H$z@zwAbI$}~U3MxGUF;%_(hUr;>IGza4)GQwAg%}`^OeUHqE_d!N z)<6^T$VKOvNr726)jV?$rT%7>xC97*4)&w}_Mag}^ekPE9483_m-6w-z}i^Y_xl6E zNF{- diff --git a/app/src/main/res/drawable-xxhdpi/personal_share.webp b/app/src/main/res/drawable-xxhdpi/personal_share.webp deleted file mode 100644 index 8bc98dc8c6fb33308f891d6b8cff680a801c7836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2236 zcmV;t2t)T$Nk&Gr2mk?Llg8A_QeXMd zp+n_e+g3UV?_g>VDD1$<)!8ixN)Kc-nVg{gMTp;~kkhDN(MKHUkq!Dbl+(4%0G5~21ZH(Bdpi5fRB zy_trd#%AOE?mFT}cm;6opmHX3<0x3BE3{q`1{vZQK-m=6@Btc78Ozt4pjd{EJNlnB z)fj)clF(W*$Z1skFDK;sFsb_ijv*HStsAaGSrvZ61g%36fjlLi%!w%+NBiy^1FU+8 zqLb0(C`i>(_jDgek>*nY7JMh0RmKRxC-^g!@c|FkH-elBgrkUa#<}HeMb~m0ftUv0 zhMZ&uq3^ol*)!y(ivi9%Vp1u&nZOkrpl6|oz#T_`|0@CR5?m7s&r+qj&nSdoZ9?Hw z;9 zZy6!itPwDGIiZO?Udm#2)k7C_vB%&MP4sC7-2(e%%0aK_hGm<4P^Mmx6T_Tu*Egz4v$D{N z=Dh5YJ9Zl-%+i^(^w6eB>W!BV+Q_W3&rWSx_&%u$6i{R*d`J~s{^$}geD&y+&zf+A zg4s}|aAzX)oe|FEbGpkKa%VsdZ`E-^s&IE8eHV97r8~5gN<3y!BdQ=-du>j{ld18R z&t73ecc<5xoQOl<1=ZT`cB+)F)VhRJL?r=pB9RbN&g6ZQIOIsc+{%v{hAP>JeAW}% z98|iMO}i4^(U(u_2G#2M3p4yC3FGNibyBLHO%%6xMZ7Qaz&0RI2qZr1<* z@9lCJTH>?a23|+LihSIoj05o^W7T5bn*KrD(Yx)$;6?iO%w9dAilu)Fh{u3EtMmKr z#!L=YOp|TLt~${gt<=!H4smNR26S=fVAGPaMK#S0V?v->z%O?X8G@BTC4No&XCrHq zk3x2VKrv4CgstZmvJYca9MxHx)*qlnWh{UH3YZ`N;7RjNzJF3ORxU#{p9aK}zTKFv zX1n`-r@w4p^h6~itX9@l*^y`0Q2B>=dJuJ@g{dewKpIW+e?Aqkt!Ov@{{G{Y5Q;mt zDMb~4uia+P2Ww5z{lDbUd#X+L)cu(+y5KEU48#zVU}!zF?URkASCdrJrw9)sD6kLC z3L`FwIqr{Z_69H&RuqJL4L438!~NQ)C6-#jX3>Ak>1|b!DVQ1ZC!6U88llOL0g&GU zX~-u{^8w~hx6t%?1fVgS6trvIw9;rEAcDG5*W)0?^$6TWJG8{C^w5w^hE?T1p)5Jv zDG^?EIW#*3ZQoZHQPQcS$zm|lb9v&1I;X=gwEsx!|AF9xBbNDbc)J7s2l!c(2ns{w zt0Pr(KPLHd4mRruCB&LcL|h>1T1d={tQ_6r|9!|=bN_L(Cuq=ihtCu#uZbi=83Grm z^r7cXXT!yYMvtaW>I^jn*9~_%V0=Yj_qmi+W>syT|9}u58v6osQ9I?RS6hfs6)+V0 zObQQw5s019lpQ9Hs1V71^h-iP0-OHM>MwDkN@KwCgZ@ zgL!epSW_Z+ZyvUheC_SYn9ts&JEHk&r*Sq%(4@h0z-o%Ps_X~w^^%loiLx{K5iW1N z;gStN*k`tX4lxlo7sl~bxSnHv5 zs^>2U0~*--1gW)D`;~8iz5COjf-{$x(K}a=$KvP}m>3*#uBSarc)|&&tCEE5YQg1B zF5_|M1u6S#cUy~%F-z%T29KfW8d7`2NwuPvJDY@H^H48NfXsxe4!ch9D>K&7_69(J(&nQ!ZSAi6YBrS?~*gu!1m+ z9moj{J3tAfO4AqdFXxuZ|6i`-KVN@$|NlyJg4~xP_UN?lTS)T%|DVrZl!|V}%15FW KFdH*+RYk)0DvT3W1u5H`4t>g9o z-*eZjv)AdpFP|d%&&X{gMP&_~mZ9eh{BJ5A*J{T_A_T`HbnHGI6CpSrp_)I=8WDoy z5po6*g5%NoPBM2}Z8(WW^>&Unj8&XeWsF#}bthJzCC-?r60I8dkfrO&9Q6uIc9(k{B$0*g8*|)8Wn(Q*B3f7wp z+Zn3=v$Gx{JL@A*uh;%50aj2rAWQ=Q0Pq+9odGIH07w8nF%*eIA|W9Zc_siL0|c~y z3iChWABdl7zLNhS{5`RY`FG<7<%i`Bk>AY!7e6gH!l=i159uG0KgB;&eL%le`~c<< z{$=?0>R0^FkOTOa_TR?;bZ^4PS)O_0!v1wT6(-_$xgN6Q{gM#ZO*I(T~g6 zboe!1aJ!4ix?{{9b0gD<1k;MH=&PaHvX?}p7B1Jf>`xqo5@j*+nC^FJbV3pNL=&D~ zIAp2#B2X=6&O_+!Qo9(zE;GycSclDK2VMarObrnyEL1X!!bZS}cMM!#`hC#JlE?r2 zuH;_CyH;DxGC#|#Me!g8=H{aqzyIt+m~DN}4?OpMPewawwz0H;Hu~0(;gm^%UzXip z=44pUo=Xvd|K~gZBt?{ec`gG{}$w)b2v znPa(-7P7pE6yl)SLv10{2Kn<%+O!HQZtv)udZR1?q z*3tU^zqzyaS*Q2De3})}e+Oxgy zdN^SD5HSKcVEOR)PBPxOZ5aywwlR)AsGS%pz6Mvu-V7N(1~+Q-S=Bo}JTW2Q;lj8H z1*act2%+|35z6=>zt|QE4LEQsgchNyoc-1dg2cdVr@UJ9q?6at~8X;gI^pA0_= zrH3H|!ppAEScmGgykcAw5ezT6YvHksg{~0TPooFKujS{Xk==ALf_5bLMM>IO)BUScz?Vl1>P&gnE1ONaq9sr#IDo6lG06sAk zi9@0xArhJfNFW0Qv4Bc}q7}$KP&vX(pZ9OH4dG9?4dma_z7P-TKiRs#JpeqSztww# z{?7i!d;orq=74_>{4o1w@`?Cw&;#pUO81ujHvUj*75;bl<&s1Bm*g+x2d!`EKZbn7 z-^)K5{XjpN_=9!_s0Z;+>EDlk<$egiX8dyYEAzkke{etHpTvK(|3UuO{^$Ik|Nr{m zU>=}9Ks|szLChOm#dFLEs&t776e=`~r+!AsqR3givfe(zcL@Nj)>mS{1Y^A?d-il{ z)m_hN(E@*TCo^UH1Ry5t{r%5YFL$(akM*8CiUm5pkFA zk>bH%QKw!Vnl$=Xz1uwz`ZSBc*^(ODZW^AY$Z~&(e=9!R9JD^j7Oa|`#3qpRL{j>R zom4Jo6XI?I89)@QNS(5biI8&zO9V!~x>$ZcH%H+Fbd#f7;`c%c0B`pp|1Td`b?l^jRCbhtDE+MzT4vKVH*cViN#X1Q&^tdZDF%i(krG zs95ehXojCU-d4HlhfD+z*x^6{`c2yN_0F62DsF_AT<225$~bEqdbX&0o9cyx%1J&%}dfPhk%%NJbfe0b?v-ozT@!Gky_3c4;hk;{jhnn3=5bA3%4e>Fi(scNX9J zQ8;Za{e|oQ)Eqzgtg6A!n!4@tx}nhN!oeLpm;dtTb`MtKZN14gWz?~!Vk7aJ1XEBO z=D+cbUhy)bb5UcRaLsJUub2 zT>lCUFLaCceq%=2wh~0qX4tb{9O&2P{!^_%mroU-oY*%%=*Pfk%uVm4I&>@nkNWyhmwYZMqq5l#_MvjQOnx6%- z_)?gpHq|tgfL;+N9!>n71uaHFp)z%gvrkZM;Rvg!5{0A?c@6pGAS|AdFzbi zC51B?<6F-Ul6FzXYqQQkiR#HbOqvz zC)v2)nK_>O)V8ZX_%p>n#J_upzKHYAtXIx7ibEc$I{aFqV?MVe8wd;Y$sB2ytMTu2 q@8{S6+EB6!7g(UKf1Ye)ra9<)`9fZjS8EhB8(#d)4G-u50002{Bm4yb diff --git a/app/src/main/res/drawable-xxhdpi/personal_simulator_game.webp b/app/src/main/res/drawable-xxhdpi/personal_simulator_game.webp deleted file mode 100644 index 7f3cfbeb5c9308d1e0b23b4bab030264d2513180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2126 zcmV-U2(kB4Nk&FS2mkz5Yqpg& z@$3Ef@9^gb1Z~LLO4y{3=O177`qOp^ipuS**%p4je#z^THf5V_+EpZopq{^d!OOEv zJ|8W)OrfBjFXw(_voE^J$+8ANj=d5T^2tO>i0s>WJN525iI5hOZCOK*=&w`%ppBrC zT;}sZwjVEN-mGnuZMKmvy4u&$+nGNrQStFU=9qJgImaAxj5+2QbIviwoMX;0=HE}U zmi~KYmQ?urGtUgyn{km)K0mLtj5Cv# zx{)=y6Q!%Vm}iDHTx46;q^wzYYtr}%VVR-Db?)yX>!I03UF3F(cA>G0qIt+#><}U$ zYYMv9hC@Tvw2Y87NRhH_E^XFvW+HMGlx?mrZ0uv68Meg^g@TZjx)pM4R>W?~nr+DK zu0k1yWKGMUSQiW6U|`81r(hbB;OY9CN;Zkd~a9ghUELvSu5(UAFU3_PNg5CWwl<$i8EU zaxgb@J2yKtNY;qbSJ9P2Gy4kJwyY^3v|MBgwYNHnC8_ zJTsPUq^PXB2uZmNl5uAGZ1yQ-n}{3RFi*9q-Tff3Y}>W0hX!ODb&-9xNwN1 zX2|K5tRXkEpJxVwj@(Qt3E9W^f~YvcXY8%iX(nSD?sm2&-h>hVLaa~ag~$-*Z5^*H|W zL{vn}bx1cZvp!$WJzk&ISQ4rmD5a8Q`~Tk_U-|ko`((|H5JZqQKVKhT{Kpe5-M{@; z_HM8b=fA)`8@-#o0>4eY7=NmNnfQkNK=c)fi@F)22K!vN(oX|f`5P{gLBl5b?oR`( zl-@rpI62unKSo}gGJm)6msfca=9!&d&+R@!yM9SPW_4>e-O0F}5gn4YVJ1=ROMN}A z2FCQ3)9KI&bogy&DXlmcnulaS$d=Wn-=Go&jv)8T$+p9Y{b<)!H;4Im$^$V&+})4> z0RI2~#S(`9|Mh#2V;a5l%0k0Fp@?CUJ-b3kaguQX-Vl=(d@uk1|DTi$!U%T+`;HmR z6SIicV1H?03={+ALu6Of$4sT8sV)wHpa1=-#-@(WufKXE-_+v);2jmHR0)TD*J&R9 zx;g??0~6*_Mp!o22QVK69V`#3a_c<7J%03>z0(7UDK z*5lAH0Cq+uMH)pXOE^$RH3~72fXu4~r|)!l&Kr$RroxIT4IM7Fzn5Tz=rvJ1C=k9##Uy*J zaWWYtAF6kY;Qxxb9i~|Wp$N7%&if>Fmx#4#ZOG&u%q2kC@9DYBQH4W0A8oK%AU}+4 z@p&o4-WNl+cQUQ%Z_Pd_xj4S(dETbmBIm{Boa!5>yo-@I^X523q$rF0{7`G(ed`j$ zK+0w21fmOC7^S-iW6u_@eQJ&UTizg$JSp0&Ls#K|y26~?Uvc6NRA9HDBu*JrdtaHX z?G`DK2o_AX7w=SWP-8mHwazg2(&;gH>&S&pwjg zuF0N(AO(kv7I z{tVp<`5j$Fyn^BhX`~^v6E^nwm0zZmYL+iyvc)_||Nq+WkDIBlT8;6s|MkIe00000 E0B?gI+yDRo diff --git a/app/src/main/res/drawable-xxhdpi/personal_teenager_mode.webp b/app/src/main/res/drawable-xxhdpi/personal_teenager_mode.webp deleted file mode 100644 index 7dba41d4fa40afefe5b506e81453ada1e5936ad4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2142 zcmV-k2%+~QYM(xqn9J6pRtO8=X&e*4?sN*it>!hs`6 zPSbO~0EQdFC7$5@u}eh30ryY<$~hiDPZylz!7q*rK_gMBU?xi&fddDLAejN9W|BZu zdZW`B;A-?ibvdw-3M$X3WOSgX(KMsYl>S6TgLrCbq%wPII8#tqL${ zB(yDiZa$Zq{D!_kJt&cWJ*Qh;dhEG0sQv}8`b%S!m1C%{i`_L!ItQ+8Cen=@dM=ro z#vv1B{4)H6^vAyHrsON^mKG8y7!%Z18~JTqV@YR=bsMLpt)@#k;0+WE=(U~a-s`;c z))XQu4$RQ`rS~M0?*PyZH52G%o;hGSFaczq2Ky%gsj0c>p!eN&n>t{BM2^EJy&k(w z2T-c_bH{96voAP&(b_WF#I9J0&dMxb}w#l9T4~t}!ejewg zwOT0PdYcxB0%|(4UX~zyiayIEpf8f%W?5s0N&*gP!2!%3SqgraXdXVdZ3y(NOG~v{ zsU&9>YvgU)EXz`hr~wU|H8U|PGtXkz=<-k!#hAAz)7pfzlTCk?nIYTmo=W&!>@ZL8 z$cA>M65c{j`)%f+&nsbs^~Zpkf3KI75VBfZR3IwcBYjrqJy1~6cxpB13|Mf}N$xqx zBj*qgf`R7Sy3cs@BX65LKOy#G1+{MIv_jHwvjaRo^;Q=&eW^1sD{pAW=UhK;O@5eg z^rPKuwtsN_IN{t@_4xoj6)kH?`skWG_xQHe~iIx=!prNyJ1%T{F z7kYo|p8=d!uNaJqJwoq<#XlJQQ~QVV zui~HHzr6qd`&Ie@(gFGz{oDC>@DK8T*S-KhfO(brfc*gfH~a(tzqkkR4zLg8f5JaQ z|Ns0Re|GBt{wMtJ&~N;2_z!_U(y#je;64GrkbfTkdHLu67w7}11NaB;XFvtI`{IZ@ zyglfM`4Ri?UVohpk2g(#!5wIRc;e;E8MoVVg6 zpcEV5O2H%GTn@G96{tC0M}nq0X--N4!KHml>rBrK-~j&r-)`9N|L^WR6$7Knl#i%^ z2f|_jfb&eog$G-mA<#||M+8U~z_(i-=Eva<(K}4yeO&b9-rUyY+e2h-F%ihKy;dU1 zcDB_OQP%=v9JW1_g2xxmaY@OlYB6aHaUJTI$*rT6$fwLK-b53B6eG^;jmrr|F1lBS zH#oIlrKyMi;x*RPDDWm9|KU@q7EpZ;0ubbMn!dPfbD}vDqInbQHN3Nn@(>!9$<8Uq zC#~>^0tql(kv~7a-Zv`c*V9p7|4lE)*m!5Fzxdhz{1A#dYM(4%mJ-DMce(CfG@tfd z_bru-JXQ-MY_A*G>iRlwBfMxY^ZE3-m<^t=gtBT$a{3W?eb(wBNP!74Fd{Xb%Y6o0 z164KOi3_U>NQxE=}C&}+C(l~A!IFX zqn~;D2=M`AD-Obj^#b-Lzfe{rtHM6j$-a??u}qlpUD?J1i`)d1oh-C@&HK2J-O7&} z8KVFAamT!>w*)JAGmkoSx{qbkLoMlhLSL73yN$xn&X_!Chhjj*fXSv!X#4*C!k{?B z81EB)D*@H1y{`ueKRV8i82-CK@#wd59-m=7VGF{$KT*U1s6Z=$R{-;dD|if;xoUw4sHVay@})OsP7=vqJyNV3-TAIgz# ze2OO0V}dmhpM z=#>B8CPe?`c8K|u7tBJmHWa2~5HU%bvGWq!-ZVgvjc6DcYfi+2oL4!_J6C@_~I04s| zIC#}gasvxW+8XeX_kPB>)7Nc3@Yt*OV^AW_Kvl$J1Eaha`^J}{Dm^q4J+T~0YISZp U#s71kZXC`d{yt~G00000029U_W&i*H diff --git a/app/src/main/res/drawable-xxhdpi/personal_tools.webp b/app/src/main/res/drawable-xxhdpi/personal_tools.webp deleted file mode 100644 index d0372fe5d521858b03dbd7d79705c55567b96a60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcmV;H1!?+HNk&GF1pok7MM6+kP&il$0000G0000}002_}06|PpNZ?L?cH?XxTC-qGqIH%M}{le72vKgkqgIgH#g7bDB&Di&CCEmLrKQ~ zVDh@lj-@f|ZeDYY60^CVm@4XtbIvoDn0e=%s|%e*I|yxbf>{WD7OjEkCQ^;z6_@$S z5Sl2n;Qp?n>{a0z?ncm_jTMPhW45Zo8UUD(*a-m4g?Rv8%TcQUR)dZKKtsdR$Ij>f z766Wg+-7EIkCj-lB4m!y;0`NthRr3oBEzP#e>vP>D>R<`UpqJ03XMmDR_NcRQC-HE zsVh-S0A7TRI^cz*763kmyyyY+l0GqX_4iaQcqggs7|<Bgd70eW^_tI4FHaU4O>0NwqMC_)UzUt9007|B_i5>Ft-;y z08A*NUIq8{ZDY*!I}fXDmzH~QuVc`$RVH`!7{xv2CHZ3%TaV>5iW2Ivm*AfpO07)p z#}xfL2v$%yAczA10B{%podGIT08{_~001SR14*@C_y^$z%okq#K>c$5tJANi-HZKB z%30uV;h&6O@IU|jK>h*v0rCIT1N0mCkK@j3^6{I}4b`%mx>-~XiV&=1&ufN$cT!@m4~;PQt50PHRGoJcH9_*T6oAAVElzG1nf z7Qetk`+_r}KM~iD|I^Ll zt`J6A2tPPs0-D87*~wvS9HR#5uE=U|eO8bay*dDZ%g~*9zs1$kBHhY^`r-)qb)ffX zDOjEBhq~@`-1agfkH4vVmac@6U5avY8<@h%xeXwwp4}5C^NK4H`J`Aa^6eV217rM6 zX{AEI*{`>qbN~0sie>-*f@VxytDb4BXIyZ>vcN-E1q~z&f6r^-Hn_&Ea?MS;`X}N% zt|$D;7PYvx->Sn;UWIw6p0A% zneoMH$|Q`X`0Ya66o6nAlD0zht&L5UrkVhPn3EkyCXJ%~9sub(#Q*=p?rre-HztON zV}0B&qjFyLS9Ed?SJ<$bqhv1pJ{KYbiE>dsdN%G9F6-yH#P=i8~^#&Fx2*SvMck2v!IhaZ5a kmX+COzx(73!zLh<`bzx&!zz~UrEoZsC;gSW0000002(OBmH+?% diff --git a/app/src/main/res/drawable-xxhdpi/personal_verified.webp b/app/src/main/res/drawable-xxhdpi/personal_verified.webp deleted file mode 100644 index aa97814c7ce998044c8fa1dadfd382b789d00a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmV-S1+)56Nk&FQ1pok7MM6+kP&il$0000G0000}002_}06|PpNK*m;00E#f?VsDa zT59GGkfQWnXphs|rm#aj`T&ZlP)-q-C$QX`sza}huVxGn%#65?@S?QkFZfHlwpQq% zh?oF%;D7X~{z;fWKD}Pmo1X+-k5>^b2!0WHMKwKGM;^nP#>I3q$mybidgzuT|BF>y4Ank)vWV$gGWgqMVm2Ry7(+2=W+YF#DW^F}Z7@%safMp;250Exx0A+VJ($?57 z6?R9YR_t`9!12A8u8>tRuaHJ}#<*C&*ot-=cgMOIzm3vuZ=*XOTz0);gQtl*qvN!7 zL;J=CZxeTBjTO?okF`#6BdCJQk#pU;D|jE85xd%PSJ=QZfKof}0iK8P+~f zY0nBUVFAp1W`ONTR(R%4g--#{jTzpvKEU7h!M>kq+6Qu<3^3hDjL$M@N{pRr?>Wn) z8v!2>7>lC~_d-gLLCdI0QlrG61)}abSMQf za#2&kr${NK4&4hO-a}56^RO1M$Tv4PH{X3JIzF#xtcPwYsv82YBjp<{!dpaYh2uJ` zpA)s>*Pnj`^0WRlQV0G409H^qAj$#&0I(JSodGIT08{_~001SB15icd`mf{$#NTiH z0R1Tc71bL6KTGidzESxZ{a4rn@B^p=_y^-(01we`;hxkVpdDZzpdY|JReHcbfPXLa z7ye7`ZTbQJOZf-Dck$2SAEw{AAHV#d9;~s#KHb?U`saU5Wsp8!hSXsLF>yPZ;pCEAD^BB zP74~aOg5DyZCpH4Ri2!TR|LhSKmc=&cV4-t1DmUYU+4tzF603(Z=}JK ziF>B9fz$S%?XZ_~ql62bd=n#|@dN4X=X{V!T>XZAw@^hkHy{&sH1RrgB(HA^li)~w z!YYDY@tBT|v}I&o>orf-_X8-(7r&fOWoVrIt&sDj2qsIt7|J25++G0SxuPOAp|O-p zb1AuaorAEJ4gi@b04pcL~(3X#ScbkwVB)?MV?Y|oKSl+2ey zUl_RMr~0594xnei4Zjh@2{7EHB@XEYXwsZhdM}oCJ?Ly&`N<>2Em9_sRDumqHWuzn;j>$ z?KVwq+qS*`|38BBa(3O05z+q%z;FFnX8rtyMSgcQ*&Iy!DV?sB1u*bRw`X-`?XPrv zSYi}ArRxc!41GVA*sMEapUt_q37Z#hb9q&?lxCy%#e7Ded7l;&nIXxCaw&;bX6;f^ zvcv2>Ldp-Qr{MyCM`IdS*@2MyKLOqvn6jb>C3Y$BM7GtxDfRQ&v=)PBkh6_cg z+*gF;k|Ko0v$aYA`kzQ1#l@g;>wLKyYV!R!-Fut1Iq^1TGvlqzro-7~)CRl024P%# z?P(=sg{CV%8!6aVExh@-844rN+Tr=_z2e^8nCea87d8M^P&go-1ONcA8vvaFDpUYe z06sAmi9;eGArZ<3d>{h^u>fiYD5c}%xb^uPzWGM|59DXnABm4lk1!vuU+TT3dO$y- zf4B6G_6+m@{c`le|AFpf`z!ll?E#pL_(44v_z%dh$PFyBPTH5h)p}9?vF01)e_$`< zU(Wx~esK3d{Z;lW{aP;Hz>h`*m;+6Q;xzm7Csi7&FT<%#`#Rcp-gE);S655bM@tda zc!FJ@)-)$g!ZuiX3l~R?ohqw}AQ0ceV`hP=Yi$breN z`vtVo6*#9t_r44<0092~lZ4^^1^@o6FXQ|4zlIL~4os?*o3%Mq7-knnzCumM=-JrY z%H*wzv>DVBV4i&ws_w;_UbFsq>ttQI5H4{t+c~+{-~NZH`;1bdyCm#)#*U=c1Q*To zyZ^B3{Hg|6ZyxWesj6&|)%@~LJfI@5SwXb>~0>gEEig8}Ub)cUK*0}yFfSdTC1oza?n%NGK zfY~yP8AtWZ{d*eNnFB9SaJoPW6kYPW-I_j7F~^;Sm}*Bjv0 zhf?y;L3wJb{|Nfe39}bxUL7cY# g{~d*=j>zBT000000LbG4X8-^I diff --git a/app/src/main/res/drawable-xxhdpi/personal_wechat_remind.webp b/app/src/main/res/drawable-xxhdpi/personal_wechat_remind.webp deleted file mode 100644 index d3f8fb6d708df9f2eba9ee7905a57d636854c912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2384 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 C&Y+tB diff --git a/app/src/main/res/drawable-xxxhdpi/bg_personal_info.webp b/app/src/main/res/drawable-xxxhdpi/bg_personal_info.webp deleted file mode 100644 index 2b3d94b5b1588fb24bde94be4224dbbeadfa6172..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13156 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 O2f_Lj7x`_wAOHaCGl&iV diff --git a/app/src/main/res/drawable-xxxhdpi/personal_teenager_mode.webp b/app/src/main/res/drawable-xxxhdpi/personal_teenager_mode.webp deleted file mode 100644 index 836ee7ca8c6801bcce85c2741439f8fc5e55d2ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2626 zcmV-I3cdAGNk&FG3IG6CMM6+kP&il$0000G0001Q003_Q06|PpNYVoU00E$SZGYQJ z^7Oe()BB93_p-h3YI_q1GxhNwkTng;G%n+53CYsTkNSx{qvVW;HHb(UdWq;ShK4JdA^a<(MgD}pUOK&1zrl*Dm3h<%oC)r zpi-mP_q$=}Zi&cU*Hjwx`pa&RPj~EkC_SDztis+taG#Sh1(ntj3(3)$&)Z2L-HZn` zDs-9sHVu~U*a#{45IDrkGZGiZVYZ zEliA;f0yDB=}a7h+r8uM-tj^2_@Z}w+ap*tSs82Fo#kvqTsodDH*JVr`O|IRE>*?= zd+E7ZjL?+rHq5SEtu3s@CX{~#a0Izj$`e{KE&_yPa_|NrJk@?YQ`U?10ifPR2}|Nj8`H~uO571{y( zPx(infA_E8AH3hke#ZYmKV$v^zngy)`{@1u`vCm^?IZpH*#Y)J`T_OyoA_Ea0#+As z|HE&RNXodBf50suYtxAmH#J2Ua*m0^mrFvD4o$*_IcA_erEzPO0zm#^xGUgIFI&Ry zxfM)J3C^z71S%$CYigt5Zt*X(jBA4KB2~D~C3~e95Pimsvs3U)csDavhU; zUN8EcHe9dI84LUJpFMai+ult?*977K0RI2qZq#}I-zP&bqd3godw)!)PbUm~>5td( znPC9CsmNf{vY}BoIQjQ*^H|UK+*k5;zC@R+m-5}z4m$Dl;e{$B;2S5xD&wv)sblI= zzMEHQwDtNPB@0Gx*R<6By@o|T@!D)?S-buWP_N02kD7_fQ)y*Dsy*gRAL~Fk((yTe z_*FE-&{ZuiM)-@i$do`X*{a`*IRHx;I^yAY)6Jp{X^KT7x)JEe*`DeF3=yQFxk z^>PsK%BwRp6k@~Vvq|vhuuSBDchj$4{SbpSCX#1Cdz#60^662v-#%6Rr~m(Yx@Qei z2d{SA@@qrh*8hBhZ?XmH1fakF_OGQMnssffXvxS-CglC(fu`EF59P(!J5_go%=SCj-A8EI*7u%ThP@x_|twC@L9+XrNM0Mv{Uz z$sfK>Pi-i2JcV5Y&h3oxgFp|dB`AkB*m7pO55!+!C?^T(8t2FW>p+$#T{Hy3-9YnZ zV3`z|Vk5YyEH=Qj$%Tz`s-9;6zjpcM;>N`%=ez88EYVy2?;X;I?rhK2c|ocb1FcCh z6e}Cqv)S=4qRcoXIA9-f=of-6euSCv$65QK%WiUs{D&4BNp&%`5R%e;USvk9f((s6 zTYD$sc*NF#mT-%`wejcC+?dop|JeDz)Bq#A1?RYH!?l7S0%ULyo*bKH;wAHmd7UG- zR%hyt_kOEtOA;Umh!8`b3_wpBxOy#=bNilF3(a|AGY`w@xS`W%VT>KDDBRmKApu+e zVT9;ahY11T;!O)qy8j(g(yM%}2qjTJ#gByovXg7C|LZ{zRQ>m>h=kXSThW7j_bWGq zCM}p=nB8!rFKe)x0KfmPet-Y}rfSa(R-z<~{&&xGW$IHk{c5pS9dVUQA3C`@aOun{Jm^M@R%Fbmg z70whSVoiVE_OC0I+f>>;M1& diff --git a/app/src/main/res/drawable-xxxhdpi/personal_top_bg.webp b/app/src/main/res/drawable-xxxhdpi/personal_top_bg.webp deleted file mode 100644 index 7f6634a9bf2ac4272349c81077775ebfa9a347fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmV-c1gZN{Nk&Fa1ONb6MM6+kP&il$0000G0002b0svQ>BC&!>oSSceoHD_yVQ4J>VaJ89s~puDIU-6W9m7**On= zvT`2#WaK^e$;f-{laTk@Cn4{(ammPg?W7Q_7E_|}am_KMfP3wekoVgsA-xbA`%m?^ zs&_f{ojWP(y`?*+2|X3O^j7oIdQzf*^rn$SYzZS`HM&-M&rLG`_(LiF)B1YEp-$=F zwDz9TozsM#D76C~v(WyHIEaU%ON&;|9o+FIfR0qJOGs%ADL`d51d_NJl%#WiMx0K8&eD_yQ(&;>9O+G@G=`M|w3L9EJej2^3Bfn2 zhajiBGMe2hgM6>$Kj-|fkMsV6)|~2X{Tg%T;b3!prMMtcDnexckCijzmohjlIOkyY}1mMbS2_*xaDWxQ{m-U?IQi#_1Ve9>G zu@E6kck-L`R?p}+r*us*h@hL*LyuJMqAhTm-5fD6>x9Zq)7n$Icl{c3>%^MfD?Mi^ z|105BOkyY|^*8_k{ux{$QFr19_f$%Y>hqzTrN?Kz{mImDlJ9iGzEh zs5V*lKU{OL%~o?D&_P(8#Y$YRD0iPVD%>6Pi$=BTbrQcgDX^`ur8h^|UqYM=8vdt- zydIseT@@{nbLpGxI9bzGkC|gqRy*Xw`WY|rFU3PAuE#71pV>RK$8;i;xm^%bcco}| zrNtO0;?kLPKK(DQB58ZVb~$*S%5^|mpXN2dzwC>ty}5r)|I~3V?y>x7q)ZNY1o;~2 zRhTMRT-iB)2^DaZ20hwana=UC1-?SpU~Vr#e?PQNlkKDX;y_zU_ff{hdTF>Jre*EI z`HpYFE%&i5F@eL4NBY1@$x3ZHR8%Rp^&0FD7^NKHGdr)xyR5QF?8AdO_00!ICdu)~ z3X|Z*^|!sCX0xG>PIZ!T|L}UU3j1#_r#rNh*x86BjdNniX{yXJO+>Ascly?Vs@_I* z;K3PxZB2`UWjovAnI+2tuHKz@>P0#s_4})5H}G)nnfu3r1wzt3uDY8#8Z;&2J~VY%0J20AP - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_invite_bind.xml b/app/src/main/res/layout/dialog_invite_bind.xml deleted file mode 100644 index 6feb87adf9..0000000000 --- a/app/src/main/res/layout/dialog_invite_bind.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_sign_rule.xml b/app/src/main/res/layout/dialog_sign_rule.xml deleted file mode 100644 index 4a9c1b8a7c..0000000000 --- a/app/src/main/res/layout/dialog_sign_rule.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_new_personal.xml b/app/src/main/res/layout/fragment_new_personal.xml deleted file mode 100644 index c1766e8960..0000000000 --- a/app/src/main/res/layout/fragment_new_personal.xml +++ /dev/null @@ -1,480 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_new_personal_stub.xml b/app/src/main/res/layout/fragment_new_personal_stub.xml deleted file mode 100644 index 391830aec6..0000000000 --- a/app/src/main/res/layout/fragment_new_personal_stub.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/app/src/main/res/layout/fragment_personal.xml b/app/src/main/res/layout/fragment_personal.xml deleted file mode 100644 index 665acce507..0000000000 --- a/app/src/main/res/layout/fragment_personal.xml +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_new_personal_fun_group.xml b/app/src/main/res/layout/item_new_personal_fun_group.xml deleted file mode 100644 index fb566200f9..0000000000 --- a/app/src/main/res/layout/item_new_personal_fun_group.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_personal_fun_group.xml b/app/src/main/res/layout/item_personal_fun_group.xml deleted file mode 100644 index 7a9b336a41..0000000000 --- a/app/src/main/res/layout/item_personal_fun_group.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_personal_func.xml b/app/src/main/res/layout/item_personal_func.xml deleted file mode 100644 index dbede339de..0000000000 --- a/app/src/main/res/layout/item_personal_func.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - \ No newline at end of file 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 a767b13ac2..8d6e38be11 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 @@ -154,10 +154,14 @@ public class ShareUtils { EventBus.getDefault().post(new EBShare(ShareUtils.shareEntrance)); LogUtils.uploadShareResult(shareType, ShareUtils.shareEntrance.getName(), "success", ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId); - energyTaskProvider.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); - if (ShareUtils.shareEntrance == ShareEntrance.inviteFriends) { - energyTaskProvider.logInviteResult("成功", mShareType.getName()); + + if (energyTaskProvider != null) { + energyTaskProvider.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); + if (ShareUtils.shareEntrance == ShareEntrance.inviteFriends) { + energyTaskProvider.logInviteResult("成功", mShareType.getName()); + } } + if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal || ShareUtils.shareEntrance == ShareEntrance.communityArticle || ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video) { @@ -185,7 +189,9 @@ public class ShareUtils { ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId); if (ShareUtils.shareEntrance == ShareEntrance.inviteFriends) { IEnergyTaskProvider energyTaskProvider = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); - energyTaskProvider.logInviteResult("失败", mShareType.getName()); + if (energyTaskProvider != null) { + energyTaskProvider.logInviteResult("失败", mShareType.getName()); + } } if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal || ShareUtils.shareEntrance == ShareEntrance.communityArticle || @@ -201,7 +207,9 @@ public class ShareUtils { ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId); if (ShareUtils.shareEntrance == ShareEntrance.inviteFriends) { IEnergyTaskProvider energyTaskProvider = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); - energyTaskProvider.logInviteResult("取消", mShareType.getName()); + if (energyTaskProvider != null) { + energyTaskProvider.logInviteResult("取消", mShareType.getName()); + } } if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal || ShareUtils.shareEntrance == ShareEntrance.communityArticle || diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IEnergyTaskProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IEnergyTaskProvider.kt index 1aa863ddf9..d70a1364b7 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IEnergyTaskProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IEnergyTaskProvider.kt @@ -1,5 +1,7 @@ package com.gh.gamecenter.core.provider +import android.content.Context +import android.content.Intent import com.alibaba.android.arouter.facade.template.IProvider interface IEnergyTaskProvider : IProvider { @@ -11,4 +13,17 @@ interface IEnergyTaskProvider : IProvider { fun postEnergyTask(action: String) fun postInviteCodeTask(code: String, from: String, callback: (() -> Unit)?) + + fun postEnergyTask(action: String, id: String) + + fun postEnergyTask(action: String, id: String, packageName: String) + + fun postEnergyTask(action: String, id: String? = null, packageName: String? = null, url: String? = null) + + fun getEnergyCenterIntent(context: Context?): Intent? + + fun getEnergyCenterIntent(context: Context?, initTabIndex: Int): Intent? + + fun getEnergyHouseIntent(context: Context?, categoryId: String? = null): Intent? + } \ No newline at end of file diff --git a/module_energy/src/main/java/com/gh/gamecenter/energy/provider/EnergyTaskProviderImpl.kt b/module_energy/src/main/java/com/gh/gamecenter/energy/provider/EnergyTaskProviderImpl.kt index 3d6301ba27..ef5841523b 100644 --- a/module_energy/src/main/java/com/gh/gamecenter/energy/provider/EnergyTaskProviderImpl.kt +++ b/module_energy/src/main/java/com/gh/gamecenter/energy/provider/EnergyTaskProviderImpl.kt @@ -1,11 +1,14 @@ package com.gh.gamecenter.energy.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.IEnergyTaskProvider import com.gh.gamecenter.energy.utils.EnergyTaskHelper import com.gh.gamecenter.energy.utils.IntegralLogHelper +import com.gh.gamecenter.energy.view.EnergyCenterActivity +import com.gh.gamecenter.energy.view.EnergyHouseActivity @Route(path = RouteConsts.provider.energyTask, name = "EnergyTask暴露服务") class EnergyTaskProviderImpl : IEnergyTaskProvider { @@ -25,6 +28,30 @@ class EnergyTaskProviderImpl : IEnergyTaskProvider { EnergyTaskHelper.postInviteCodeTask(code, from, callback) } + override fun getEnergyCenterIntent(context: Context?): Intent? { + return EnergyCenterActivity.getIntent(context) + } + + override fun getEnergyCenterIntent(context: Context?, initTabIndex: Int): Intent? { + return EnergyCenterActivity.getIntent(context, initTabIndex) + } + + override fun getEnergyHouseIntent(context: Context?, categoryId: String?): Intent? { + return EnergyHouseActivity.getIntent(context, categoryId) + } + + override fun postEnergyTask(action: String, id: String) { + EnergyTaskHelper.postEnergyTask(action, id) + } + + override fun postEnergyTask(action: String, id: String, packageName: String) { + EnergyTaskHelper.postEnergyTask(action, id, packageName) + } + + override fun postEnergyTask(action: String, id: String?, packageName: String?, url: String?) { + EnergyTaskHelper.postEnergyTask(action, id, packageName, url) + } + override fun init(context: Context?) { } 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 9587e92c30..7fd0a84eb5 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 @@ -344,7 +344,9 @@ public class UserRepository { break; case UserViewModel.TYPE_ID_CARD: IEnergyTaskProvider energyTaskHelper = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); - energyTaskHelper.postEnergyTask("authentication"); + if (energyTaskHelper != null) { + energyTaskHelper.postEnergyTask("authentication"); + } mCacheUserInfoEntity.setIdCard(GsonUtils.fromJson(content, IdCardEntity.class)); break; case UserViewModel.TYPE_INTRODUCE: @@ -536,6 +538,9 @@ public class UserRepository { if (UserManager.getInstance().getLoginTokenEntity() != null) { IEnergyTaskProvider energyTaskHelper = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); + + if (energyTaskHelper == null) return; + if (UserManager.getInstance().getLoginTokenEntity().isFirstLogin()) { energyTaskHelper.postEnergyTask("register"); } else { 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 104f939d76..2550b0ce95 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 @@ -405,7 +405,9 @@ public class LoginFragment if (!TextUtils.isEmpty(inviteCode)) { SPUtils.setBoolean(Constants.SP_HAS_COMPLETE_INVITE_CODE, true); IEnergyTaskProvider energyTaskHelper = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); - energyTaskHelper.postInviteCodeTask(inviteCode, "mobile_login", null); + if(energyTaskHelper != null) { + energyTaskHelper.postInviteCodeTask(inviteCode, "mobile_login", null); + } } String loginType = loginTokenEntity.getLoginType(); 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 703dc01c1c..5b2da6560b 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 @@ -79,7 +79,9 @@ public class WXEntryActivity extends Activity implements IWXAPIEventHandler, WeC com.gh.gamecenter.common.utils.LogUtils.uploadShareResult(ShareUtils.shareType, ShareUtils.shareEntrance.getName(), "success", ShareUtils.shareEntity.getShareUrl(), ShareUtils.shareEntity.getShareTitle(), ShareUtils.shareEntity.getSummary(), ShareUtils.resourceId); IEnergyTaskProvider energyTaskProvider = (IEnergyTaskProvider) ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation(); - energyTaskProvider.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); + if (energyTaskProvider != null) { + energyTaskProvider.postEnergyTaskForShare(ShareUtils.shareEntrance.getName(), ShareUtils.resourceId, ShareUtils.shareEntity.getShareUrl()); + } if (ShareUtils.shareEntrance == ShareUtils.ShareEntrance.askNormal || ShareUtils.shareEntrance == ShareUtils.ShareEntrance.communityArticle || ShareUtils.shareEntrance == ShareUtils.ShareEntrance.video) {