From f9c6bb1e564ee93bac249a662f0ad791109dab8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Mon, 24 Jul 2023 17:49:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=84=E4=BB=B6=E5=8C=96=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E5=BF=83=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=20https://jira.shanqu.cc/browse/GHZS-2972?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 16 - .../provider/BindingAdaptersProviderImpl.kt | 4 + .../provider/CommentDetailProviderImpl.kt | 22 + .../provider/CommentUtilsProviderImpl.kt | 19 + .../gh/common/provider/DirectProviderImpl.kt | 46 ++ .../GameCollectionDetailProviderImpl.kt | 24 + .../common/provider/GameDetailProviderImpl.kt | 24 + .../provider/LinkDirectUtilsProviderImpl.kt | 11 + .../provider/MessageDetailProviderImpl.kt | 26 + .../MessageUnreadRepositoryProviderImpl.kt | 8 +- .../provider/NewCommentDetailProviderImpl.kt | 83 ++++ .../SimpleAnswerDetailProviderImpl.kt | 20 + .../gh/common/provider/SubjectProviderImpl.kt | 24 + .../gh/gamecenter/CommentDetailActivity.java | 2 +- .../com/gh/gamecenter/ImageViewerActivity.kt | 13 +- .../com/gh/gamecenter/MessageActivity.java | 35 -- .../gh/gamecenter/MessageInviteActivity.java | 37 -- .../gh/gamecenter/MessageKeFuActivity.java | 40 -- .../gh/gamecenter/MessageVoteActivity.java | 37 -- .../com/gh/gamecenter/NewsDetailActivity.java | 3 + .../fragment/SearchToolbarFragment.java | 30 +- .../gamedetail/rating/RatingReplyActivity.kt | 6 +- .../gh/gamecenter/message/KeFuFragment.java | 65 --- .../gh/gamecenter/message/MessageAdapter.java | 151 ------ .../gamecenter/message/MessageFragment.java | 127 ----- .../message/MessageTopViewHolder.java | 21 - .../message/MessageUnreadRepository.kt | 1 + .../message/MessageUnreadViewModel.java | 2 +- .../personal/HaloPersonalFragment.kt | 12 +- .../personalhome/UserHomeFragment.kt | 2 +- .../article/detail/ArticleDetailActivity.kt | 3 + .../newdetail/NewQuestionDetailActivity.kt | 3 + .../video/detail/ForumVideoDetailActivity.kt | 3 + .../gamecenter/retrofit/RetrofitManager.java | 2 + .../retrofit/service/ApiService.java | 32 +- .../comment/CommentDetailFragment.java | 2 +- app/src/main/res/drawable-hdpi/ic_id.webp | Bin 638 -> 0 bytes app/src/main/res/drawable-xhdpi/ic_id.webp | Bin 804 -> 0 bytes app/src/main/res/drawable-xxhdpi/ic_id.webp | Bin 1146 -> 0 bytes app/src/main/res/values/strings.xml | 4 - .../feedback/provider/AppProviderImpl.kt | 4 + .../feedback/provider/DirectProviderImpl.kt | 46 ++ .../provider/LinkDirectUtilsProviderImpl.kt | 11 + .../pkg/provider/AppProviderImpl.kt | 8 + .../vpn/provider/AppProviderImpl.kt | 4 + .../common/constant/EntranceConsts.java | 2 + .../gamecenter/common/constant/RouteConsts.kt | 16 + .../res/drawable/bg_shape_space_radius_8.xml | 0 .../divider_item_line_space_16_h_1px.xml | 0 .../main/res/drawable/message_unread_hint.xml | 0 .../res/drawable/oval_message_hint_bg.xml | 0 .../core/provider/IDirectProvider.kt | 36 ++ .../IMessageUnreadRepositoryProvider.kt | 9 - .../feature}/entity/MessageEntity.kt | 7 +- .../feature}/entity/MessageUnreadEntity.kt | 3 +- .../provider/IBindingAdaptersProvider.kt | 1 + .../provider/ICommentDetailProvider.kt | 10 + .../feature/provider/ICommentUtilsProvider.kt | 8 + .../provider/IGameCollectionDetailProvider.kt | 19 + .../feature/provider/IGameDetailProvider.kt | 12 + .../provider/ILinkDirectUtilsProvider.kt | 9 + .../provider/IMessageDetailProvider.kt | 15 + .../feature/provider/IMessageProvider.kt | 9 + .../IMessageUnreadRepositoryProvider.kt | 12 + .../provider/INewCommentDetailProvider.kt | 44 ++ .../provider/ISimpleAnswerDetailProvider.kt | 9 + .../feature/provider/ISubjectProvider.kt | 14 + .../feedback/provider/AppProviderImpl.kt | 4 + .../feedback/provider/DirectProviderImpl.kt | 46 ++ .../provider/LinkDirectUtilsProviderImpl.kt | 12 + .../gamecenter/login/user/UserRepository.java | 30 +- .../gh/gamecenter/login/utils/LoginHelper.kt | 14 +- module_message/.gitignore | 1 + module_message/build.gradle | 95 ++++ module_message/proguard-rules.pro | 21 + .../message/ExampleInstrumentedTest.kt | 24 + module_message/src/main/AndroidManifest.xml | 27 ++ .../java/com/gh/gamecenter/message/HaloApp.kt | 43 ++ .../gamecenter/message}/entity/MessageFold.kt | 2 +- .../message}/entity/MessageKeFuEntity.kt | 2 +- .../message}/entity/MessageLinkEntity.kt | 2 +- .../message/provider/MessageProviderImpl.kt | 20 + .../gamecenter/message/retrofit/ApiService.kt | 62 +++ .../message/retrofit/RetrofitManager.kt | 19 + .../gamecenter/message/utils/NewLogUtils.kt | 77 +++ .../gamecenter/message/utils/NewsUtils.java | 52 ++ .../message/view}/AskFollowMoreDialog.kt | 16 +- .../gamecenter/message/view/KeFuFragment.kt | 50 ++ .../message/view}/KeFuFragmentAdapter.java | 182 +++---- .../message/view}/KeFuViewHolder.java | 6 +- .../gamecenter/message/view}/KeFuViewModel.kt | 16 +- .../message/view/MessageActivity.kt | 42 ++ .../gamecenter/message/view/MessageAdapter.kt | 163 +++++++ .../message/view/MessageFragment.kt | 137 ++++++ .../message/view/MessageInviteActivity.kt | 35 ++ .../message/view}/MessageItemViewHolder.java | 453 ++++++++++-------- .../message/view/MessageKeFuActivity.kt | 37 ++ .../message/view}/MessageNormalAdapter.java | 10 +- .../message/view}/MessageNormalFragment.java | 27 +- .../message/view}/MessageNormalViewModel.kt | 19 +- .../message/view/MessageTopViewHolder.kt | 17 + .../message/view/MessageUnreadViewModel.kt | 75 +++ .../message/view/MessageVoteActivity.kt | 35 ++ .../src/main/manifest/AndroidManifest.xml | 64 +++ .../res/drawable-hdpi/message_kefu_icon.webp | Bin .../drawable-xxhdpi/message_invite_icon.webp | Bin .../drawable-xxhdpi/message_service_icon.webp | Bin .../drawable-xxhdpi/message_vote_icon.webp | Bin .../src/main/res/drawable-xxxhdpi/ic_id.webp | Bin .../drawable/shape_message_unread_hint.xml | 0 .../res/layout/dialog_ask_follow_more.xml | 0 .../main/res/layout/item_ask_follow_more.xml | 0 .../src/main/res/layout/message_item.xml | 0 .../src/main/res/layout/message_item_top.xml | 0 .../src/main/res/layout/message_kefu_item.xml | 0 .../src/main/res/values/strings.xml | 7 + .../gamecenter/message/CheckLoginUtils.java | 61 +++ .../gh/gamecenter/message/MessageModuleApp.kt | 101 ++++ .../message/provider/AppProviderImpl.kt | 99 ++++ .../provider/BindingAdaptersProviderImpl.kt | 34 ++ .../message/provider/BuildConfigImpl.kt | 35 ++ .../provider/CheckLoginProviderImpl.kt | 18 + .../provider/CommentDetailProviderImpl.kt | 22 + .../provider/CommentUtilsProviderImpl.kt | 19 + .../message/provider/ConfigProviderImpl.kt | 93 ++++ .../message/provider/DataUtilsProviderImpl.kt | 18 + .../GameCollectionDetailProviderImpl.kt | 26 + .../provider/GameDetailProviderImpl.kt | 52 ++ .../message/provider/LogUtilsProviderImpl.kt | 18 + .../provider/MessageDetailProviderImpl.kt | 27 ++ .../MessageUnreadRepositoryProviderImpl.kt | 26 + .../provider/NewCommentDetailProviderImpl.kt | 65 +++ .../provider/PackageUtilsProviderImpl.kt | 38 ++ .../SimpleAnswerDetailProviderImpl.kt | 21 + .../message/provider/SubjectProviderImpl.kt | 24 + .../message/provider/WebProviderImpl.kt | 40 ++ .../gh/gamecenter/message/ExampleUnitTest.kt | 17 + .../main/res/drawable/message_unread_hint.xml | 9 - .../res/drawable/oval_message_hint_bg.xml | 7 - .../com/gh/gamecenter/setting/DataUtils.java | 2 +- .../setting/provider/AppProviderImpl.kt | 8 + .../setting/provider/ConfigProviderImpl.kt | 12 + .../setting/provider/DirectProviderImpl.kt | 59 +++ .../provider/UpdateManagerProviderImpl.kt | 2 +- .../setting/provider/WebProviderImpl.kt | 10 + .../gamecenter/setting/compose/DataUtils.java | 2 +- .../compose/provider/AppProviderImpl.kt | 4 + .../compose/provider/DirectProviderImpl.kt | 60 +++ settings.gradle | 1 + 150 files changed, 3260 insertions(+), 985 deletions(-) create mode 100644 app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt create mode 100644 app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt delete mode 100644 app/src/main/java/com/gh/gamecenter/MessageActivity.java delete mode 100644 app/src/main/java/com/gh/gamecenter/MessageInviteActivity.java delete mode 100644 app/src/main/java/com/gh/gamecenter/MessageKeFuActivity.java delete mode 100644 app/src/main/java/com/gh/gamecenter/MessageVoteActivity.java delete mode 100644 app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java delete mode 100644 app/src/main/java/com/gh/gamecenter/message/MessageFragment.java delete mode 100644 app/src/main/java/com/gh/gamecenter/message/MessageTopViewHolder.java delete mode 100644 app/src/main/res/drawable-hdpi/ic_id.webp delete mode 100644 app/src/main/res/drawable-xhdpi/ic_id.webp delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_id.webp rename {app => module_common}/src/main/res/drawable/bg_shape_space_radius_8.xml (100%) rename {app => module_common}/src/main/res/drawable/divider_item_line_space_16_h_1px.xml (100%) rename {app => module_common}/src/main/res/drawable/message_unread_hint.xml (100%) rename {app => module_common}/src/main/res/drawable/oval_message_hint_bg.xml (100%) delete mode 100644 module_core/src/main/java/com/gh/gamecenter/core/provider/IMessageUnreadRepositoryProvider.kt rename {app/src/main/java/com/gh/gamecenter => module_core_feature/src/main/java/com/gh/gamecenter/feature}/entity/MessageEntity.kt (96%) rename {app/src/main/java/com/gh/gamecenter => module_core_feature/src/main/java/com/gh/gamecenter/feature}/entity/MessageUnreadEntity.kt (97%) create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt create mode 100644 module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt create mode 100644 module_message/.gitignore create mode 100644 module_message/build.gradle create mode 100644 module_message/proguard-rules.pro create mode 100644 module_message/src/androidTest/java/com/gh/gamecenter/message/ExampleInstrumentedTest.kt create mode 100644 module_message/src/main/AndroidManifest.xml create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/HaloApp.kt rename {app/src/main/java/com/gh/gamecenter => module_message/src/main/java/com/gh/gamecenter/message}/entity/MessageFold.kt (77%) rename {app/src/main/java/com/gh/gamecenter => module_message/src/main/java/com/gh/gamecenter/message}/entity/MessageKeFuEntity.kt (96%) rename {app/src/main/java/com/gh/gamecenter => module_message/src/main/java/com/gh/gamecenter/message}/entity/MessageLinkEntity.kt (92%) create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/provider/MessageProviderImpl.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/retrofit/ApiService.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/retrofit/RetrofitManager.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/utils/NewLogUtils.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/utils/NewsUtils.java rename {app/src/main/java/com/gh/gamecenter/qa/dialog => module_message/src/main/java/com/gh/gamecenter/message/view}/AskFollowMoreDialog.kt (84%) create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragment.kt rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/KeFuFragmentAdapter.java (71%) rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/KeFuViewHolder.java (76%) rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/KeFuViewModel.kt (84%) create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageActivity.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageAdapter.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageFragment.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageInviteActivity.kt rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/MessageItemViewHolder.java (74%) create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageKeFuActivity.kt rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/MessageNormalAdapter.java (95%) rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/MessageNormalFragment.java (90%) rename {app/src/main/java/com/gh/gamecenter/message => module_message/src/main/java/com/gh/gamecenter/message/view}/MessageNormalViewModel.kt (85%) create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageTopViewHolder.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageUnreadViewModel.kt create mode 100644 module_message/src/main/java/com/gh/gamecenter/message/view/MessageVoteActivity.kt create mode 100644 module_message/src/main/manifest/AndroidManifest.xml rename {app => module_message}/src/main/res/drawable-hdpi/message_kefu_icon.webp (100%) rename {app => module_message}/src/main/res/drawable-xxhdpi/message_invite_icon.webp (100%) rename {app => module_message}/src/main/res/drawable-xxhdpi/message_service_icon.webp (100%) rename {app => module_message}/src/main/res/drawable-xxhdpi/message_vote_icon.webp (100%) rename {app => module_message}/src/main/res/drawable-xxxhdpi/ic_id.webp (100%) rename {app => module_message}/src/main/res/drawable/shape_message_unread_hint.xml (100%) rename {app => module_message}/src/main/res/layout/dialog_ask_follow_more.xml (100%) rename {app => module_message}/src/main/res/layout/item_ask_follow_more.xml (100%) rename {app => module_message}/src/main/res/layout/message_item.xml (100%) rename {app => module_message}/src/main/res/layout/message_item_top.xml (100%) rename {app => module_message}/src/main/res/layout/message_kefu_item.xml (100%) create mode 100644 module_message/src/main/res/values/strings.xml create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt create mode 100644 module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt create mode 100644 module_message/src/test/java/com/gh/gamecenter/message/ExampleUnitTest.kt delete mode 100644 module_setting/src/main/res/drawable/message_unread_hint.xml delete mode 100644 module_setting/src/main/res/drawable/oval_message_hint_bg.xml diff --git a/app/build.gradle b/app/build.gradle index 95ed12e156..27b3cf0786 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -336,6 +336,9 @@ dependencies { implementation(project(':module_sensors_data')) { exclude group: 'androidx.swiperefreshlayout' } + implementation(project(':module_message')) { + exclude group: 'androidx.swiperefreshlayout' + } // implementation(project(':feature:vpn')) implementation(project(':feature:pkg')) implementation(project(':feature:oaid')) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 609e51e83a..dce30b4d55 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -297,10 +297,6 @@ android:name="com.gh.gamecenter.CollectionActivity" android:screenOrientation="portrait" /> - - - - - - - - diff --git a/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt b/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt index 08943bc849..85ad003e9e 100644 --- a/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/BindingAdaptersProviderImpl.kt @@ -24,6 +24,10 @@ class BindingAdaptersProviderImpl : IBindingAdaptersProvider { BindingAdapters.setGameTags(layout, gameEntity) } + override fun setMessageUnread(view: TextView, unreadCount: Int) { + BindingAdapters.setMessageUnread(view, unreadCount) + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt new file mode 100644 index 0000000000..33aecc20c7 --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/CommentDetailProviderImpl.kt @@ -0,0 +1,22 @@ +package com.gh.common.provider + +import android.content.Context +import android.content.Intent +import android.os.Parcelable +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.CommentDetailActivity +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.ICommentDetailProvider +import com.gh.gamecenter.feature.entity.MessageEntity + +@Route(path = RouteConsts.provider.commentDetail, name = "CommentDetailActivity暴露服务") +class CommentDetailProviderImpl : ICommentDetailProvider { + + override fun getIntent(context: Context, commentId: String?, message: Parcelable): Intent { + return CommentDetailActivity.getIntent(context, commentId, message as MessageEntity.Article) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt new file mode 100644 index 0000000000..64885f347f --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/CommentUtilsProviderImpl.kt @@ -0,0 +1,19 @@ +package com.gh.common.provider + +import android.content.Context +import android.widget.TextView +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.common.util.CommentUtils +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.ICommentUtilsProvider + +@Route(path = RouteConsts.provider.commentUtils, name = "CommentUtils暴露服务") +class CommentUtilsProviderImpl : ICommentUtilsProvider { + override fun setCommentTime(textView: TextView, time: Long) { + CommentUtils.setCommentTime(textView, time) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt index 6030d1aada..c309f63136 100644 --- a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt @@ -69,6 +69,52 @@ class DirectProviderImpl : IDirectProvider { return DirectUtils.directToQqGroup(context, groupNumber) } + override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { + DirectUtils.directToHomeActivity(context, userId, entrance, path) + } + + override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { + DirectUtils.directToAnswerDetail(context, id, entrance, path) + } + + override fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { + DirectUtils.directToCommunityArticle(context, articleId, communityId, entrance, path) + } + + override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { + DirectUtils.directToVideoDetail(context, videoId, entrance, path) + } + + override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { + DirectUtils.directToAmway(context, fixedTopAmwayCommentId, entrance, path) + } + + override fun directToOrderCenter(context: Context) { + DirectUtils.directToOrderCenter(context) + } + + override fun directToOrderDetail(context: Context, orderId: String) { + DirectUtils.directToOrderDetail(context, orderId) + } + + override fun directToEnergyRecord(context: Context, position: Int) { + DirectUtils.directToEnergyRecord(context, position) + } + + override fun directToMyPrizePage(context: Context) { + DirectUtils.directToMyPrizePage(context) + } + + override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { + DirectUtils.directToWinOrderDetail(context, orderId, activityId) + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt new file mode 100644 index 0000000000..aae3e4fae8 --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt @@ -0,0 +1,24 @@ +package com.gh.common.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider +import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity + +@Route(path = RouteConsts.provider.gameCollectionDetail, name = "GameCollectionDetailActivity暴露服务") +class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { + override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent { + return GameCollectionDetailActivity.getIntent(context, gameCollectionId, isFromSquare) + } + + override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String): Intent { + return GameCollectionDetailActivity.getSpecifiedCommentIntent(context, gameCollectionId, topCommentId) + } + + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt index cfa37956d9..6c6e196a5d 100644 --- a/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/GameDetailProviderImpl.kt @@ -40,6 +40,30 @@ class GameDetailProviderImpl : IGameDetailProvider { ) } + override fun startGameDetailActivity( + context: Context, + gameId: String, + entrance: String?, + defaultTab: Int, + isSkipGameComment: Boolean, + scrollToLibao: Boolean, + openVideoStreaming: Boolean, + openPlatformWindow: Boolean, + traceEvent: ExposureEvent? + ) { + GameDetailActivity.startGameDetailActivity( + context, + gameId, + entrance, + defaultTab, + isSkipGameComment, + scrollToLibao, + openVideoStreaming, + openPlatformWindow, + traceEvent + ) + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt index be5b12f19e..be5dfe1e53 100644 --- a/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/LinkDirectUtilsProviderImpl.kt @@ -4,6 +4,7 @@ import android.content.Context import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.util.DirectUtils import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType @@ -62,6 +63,16 @@ class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { DirectUtils.directToSuggestion(context, type, hiddenHint) } + override fun directToCommunityColumn( + context: Context, + community: CommunityEntity?, + subjectId: String, + entrance: String?, + path: String? + ) { + DirectUtils.directToCommunityColumn(context, community, subjectId, entrance, path) + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt new file mode 100644 index 0000000000..849dc58df8 --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/MessageDetailProviderImpl.kt @@ -0,0 +1,26 @@ +package com.gh.common.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.MessageDetailActivity +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.IMessageDetailProvider + +@Route(path = RouteConsts.provider.messageDetail, name = "MessageDetailActivity暴露服务") +class MessageDetailProviderImpl : IMessageDetailProvider { + + override fun getIntentById( + context: Context, + newsId: String, + commentNum: Int, + openSoftInput: Boolean, + entrance: String + ): Intent { + return MessageDetailActivity.getIntentById(context, newsId, commentNum, openSoftInput, entrance) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt index 46f7bb268b..877d7aa09c 100644 --- a/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/MessageUnreadRepositoryProviderImpl.kt @@ -1,9 +1,11 @@ package com.gh.common.provider import android.content.Context +import androidx.lifecycle.MediatorLiveData import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.constant.RouteConsts -import com.gh.gamecenter.core.provider.IMessageUnreadRepositoryProvider +import com.gh.gamecenter.feature.entity.MessageUnreadEntity +import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider import com.gh.gamecenter.message.MessageUnreadRepository @Route(path = RouteConsts.provider.messageUnreadRepository, name = "MessageUnreadRepository暴露服务") @@ -13,6 +15,10 @@ class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { MessageUnreadRepository.loadMessageUnreadData() } + override fun getUnreadLiveData(): MediatorLiveData { + return MessageUnreadRepository.unreadLiveData + } + override fun init(context: Context?) { // Do nothing } diff --git a/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt new file mode 100644 index 0000000000..9fe547d04f --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/NewCommentDetailProviderImpl.kt @@ -0,0 +1,83 @@ +package com.gh.common.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.INewCommentDetailProvider +import com.gh.gamecenter.qa.comment.NewCommentDetailActivity + +@Route(path = RouteConsts.provider.newCommentDetail, name = "NewCommentDetailActivity暴露服务") +class NewCommentDetailProviderImpl : INewCommentDetailProvider { + + override fun getAnswerCommentIntent( + context: Context, + commentId: String, + questionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent { + return NewCommentDetailActivity.getAnswerCommentIntent( + context, + commentId, + questionId, + topCommentId, + entrance, + path + ) + } + + override fun getArticleCommentIntent( + context: Context, + commentId: String, + communityId: String, + articleId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent { + return NewCommentDetailActivity.getArticleCommentIntent( + context, + commentId, + communityId, + articleId, + topCommentId, + entrance, + path + ) + } + + override fun getVideoCommentIntent( + context: Context, + commentId: String, + videoId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent { + return NewCommentDetailActivity.getVideoCommentIntent(context, commentId, videoId, topCommentId, entrance, path) + } + + override fun getGameCollectionCommentIntent( + context: Context, + commentId: String, + gameCollectionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent { + return NewCommentDetailActivity.getGameCollectionCommentIntent( + context, + commentId, + gameCollectionId, + topCommentId, + entrance, + path + ) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt new file mode 100644 index 0000000000..840b0b043e --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/SimpleAnswerDetailProviderImpl.kt @@ -0,0 +1,20 @@ +package com.gh.common.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.ISimpleAnswerDetailProvider +import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity + +@Route(path = RouteConsts.provider.simpleAnswerDetail, name = "SimpleAnswerDetailActivity暴露服务") +class SimpleAnswerDetailProviderImpl : ISimpleAnswerDetailProvider { + + override fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent { + return SimpleAnswerDetailActivity.getIntent(context, answerId, entrance, path) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt b/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt new file mode 100644 index 0000000000..66f8ba6c05 --- /dev/null +++ b/app/src/main/java/com/gh/common/provider/SubjectProviderImpl.kt @@ -0,0 +1,24 @@ +package com.gh.common.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.ISubjectProvider +import com.gh.gamecenter.subject.SubjectActivity + +@Route(path = RouteConsts.provider.subject, name = "SubjectActivity暴露服务") +class SubjectProviderImpl : ISubjectProvider { + override fun startSubjectActivity( + context: Context, + id: String?, + name: String?, + isOrder: Boolean, + entrance: String? + ) { + SubjectActivity.startSubjectActivity(context, id, name, isOrder, null, entrance) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java index de54c5d21d..a46833d1cf 100644 --- a/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/CommentDetailActivity.java @@ -10,7 +10,7 @@ import com.gh.gamecenter.common.base.activity.ToolBarActivity; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.core.utils.DisplayUtils; import com.gh.gamecenter.common.entity.LinkEntity; -import com.gh.gamecenter.entity.MessageEntity; +import com.gh.gamecenter.feature.entity.MessageEntity; import com.gh.gamecenter.qa.comment.CommentActivity; import com.gh.gamecenter.qa.comment.NewCommentConversationFragment; import com.halo.assistant.fragment.comment.CommentDetailFragment; diff --git a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt index e0f86c1dde..11835c3465 100644 --- a/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/ImageViewerActivity.kt @@ -34,6 +34,7 @@ import androidx.transition.* import androidx.viewpager.widget.PagerAdapter import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.alibaba.android.arouter.facade.annotation.Route import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.imagepipeline.core.ImagePipeline @@ -41,6 +42,7 @@ import com.facebook.imagepipeline.request.ImageRequest import com.gh.common.constant.Config import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.* @@ -71,6 +73,7 @@ import kotlin.math.roundToInt * @author 黄壮华 * */ +@Route(path = RouteConsts.activity.imageViewerActivity) class ImageViewerActivity : BaseActivity(), OnPageChangeListener { private var mScale = 0F @@ -150,8 +153,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { mUrlList = ArrayList() mUrlList?.add(base64Image) } else { - mUrlList = it.getStringArrayList(KEY_URL_LIST) ?: arrayListOf() - mInitialPosition = it.getInt(KEY_CURRENT, 0) + mUrlList = it.getStringArrayList(EntranceConsts.KEY_URL_LIST) ?: arrayListOf() + mInitialPosition = it.getInt(EntranceConsts.KEY_CURRENT, 0) } mShowSaveBtn = it.getBoolean(KEY_SHOW_SAVE) mUseEnterAndExitAnimation = it.getBoolean(KEY_USE_ENTER_AND_EXIT_ANIMATION) @@ -930,8 +933,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { var base64Image: String = "" private const val KEY_BASE64 = "base64" - private const val KEY_URL_LIST = "urls" - private const val KEY_CURRENT = "current" private const val KEY_SHOW_SAVE = "showSave" private const val KEY_USE_ENTER_AND_EXIT_ANIMATION = "use_enter_and_exit_animation" private const val KEY_IS_FROM_IMAGE_CONTAINER_VIEW = "is_from_image_container_view" @@ -995,8 +996,8 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener { isFromICV: Boolean = false ): Intent { val intent = Intent(context, ImageViewerActivity::class.java) - intent.putExtra(KEY_URL_LIST, list) - intent.putExtra(KEY_CURRENT, position) + intent.putExtra(EntranceConsts.KEY_URL_LIST, list) + intent.putExtra(EntranceConsts.KEY_CURRENT, position) intent.putExtra(KEY_SHOW_SAVE, isShowSaveBtn) intent.putExtra(AnswerEntity::class.java.name, answerEntity) intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance) diff --git a/app/src/main/java/com/gh/gamecenter/MessageActivity.java b/app/src/main/java/com/gh/gamecenter/MessageActivity.java deleted file mode 100644 index f5f0e06de4..0000000000 --- a/app/src/main/java/com/gh/gamecenter/MessageActivity.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.gh.gamecenter.common.base.activity.ToolBarActivity; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.message.MessageFragment; - -/** - * Created by khy on 21/07/17. - */ -@Deprecated -public class MessageActivity extends ToolBarActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } - - public static Intent getIntent(Context context, String entrance) { - Bundle bundle = new Bundle(); - bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance); - return getTargetIntent(context, MessageActivity.class, MessageFragment.class, bundle); - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/MessageInviteActivity.java b/app/src/main/java/com/gh/gamecenter/MessageInviteActivity.java deleted file mode 100644 index ea582a896c..0000000000 --- a/app/src/main/java/com/gh/gamecenter/MessageInviteActivity.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.gh.gamecenter.common.base.activity.ToolBarActivity; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.message.MessageNormalFragment; - -/** - * Created by khy on 10/04/18. - */ - -public class MessageInviteActivity extends ToolBarActivity { - - public static Intent getIntent(Context context, String messageType, String outerInfo, String entrance) { - Bundle bundle = new Bundle(); - bundle.putString(EntranceConsts.KEY_MESSAGE_TYPE, messageType); - bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance); - bundle.putString(EntranceConsts.KEY_OUTER_INFO, outerInfo); - return getTargetIntent(context, MessageInviteActivity.class, MessageNormalFragment.class, bundle); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/MessageKeFuActivity.java b/app/src/main/java/com/gh/gamecenter/MessageKeFuActivity.java deleted file mode 100644 index 02a706cc6b..0000000000 --- a/app/src/main/java/com/gh/gamecenter/MessageKeFuActivity.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.gh.gamecenter.common.base.activity.ToolBarActivity; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.message.KeFuFragment; - -/** - * Created by khy on 10/04/18. - */ - -public class MessageKeFuActivity extends ToolBarActivity { - - @Override - protected Intent provideNormalIntent() { - return getTargetIntent(this, MessageKeFuActivity.class, KeFuFragment.class); - } - - public static Intent getIntent(Context context, String entrance) { - Bundle bundle = new Bundle(); - bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance); - return getTargetIntent(context, MessageKeFuActivity.class, KeFuFragment.class, bundle); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/MessageVoteActivity.java b/app/src/main/java/com/gh/gamecenter/MessageVoteActivity.java deleted file mode 100644 index 7a6ac55b9e..0000000000 --- a/app/src/main/java/com/gh/gamecenter/MessageVoteActivity.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.gh.gamecenter.common.base.activity.ToolBarActivity; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.message.MessageNormalFragment; - -/** - * Created by khy on 10/04/18. - */ - -public class MessageVoteActivity extends ToolBarActivity { - - public static Intent getIntent(Context context, String messageType, String outerInfo, String entrance) { - Bundle bundle = new Bundle(); - bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance); - bundle.putString(EntranceConsts.KEY_MESSAGE_TYPE, messageType); - bundle.putString(EntranceConsts.KEY_OUTER_INFO, outerInfo); - return getTargetIntent(context, MessageVoteActivity.class, MessageNormalFragment.class, bundle); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } - - @Override - protected void onDarkModeChanged() { - super.onDarkModeChanged(); - ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white); - } -} diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 89efbabe14..fee66b1ed1 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -25,6 +25,7 @@ import androidx.core.content.ContextCompat; import androidx.core.view.MotionEventCompat; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.android.arouter.facade.annotation.Route; import com.ethanhua.skeleton.Skeleton; import com.ethanhua.skeleton.ViewSkeletonScreen; import com.gh.base.DownloadToolbarActivity; @@ -40,6 +41,7 @@ import com.gh.gamecenter.adapter.viewholder.DetailViewHolder; import com.gh.gamecenter.common.callback.OnRequestCallBackListener; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; +import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.eventbus.EBNetworkState; import com.gh.gamecenter.common.eventbus.EBReuse; import com.gh.gamecenter.common.retrofit.Response; @@ -83,6 +85,7 @@ import retrofit2.HttpException; * * @author 黄壮华 */ +@Route(path = RouteConsts.activity.newsDetailActivity) public class NewsDetailActivity extends DownloadToolbarActivity implements OnClickListener, OnRequestCallBackListener { RecyclerView mDetailRv; 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 b24eb9c1f1..8df81ec582 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -20,29 +20,29 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.lifecycle.ViewModelProviders; -import com.gh.common.util.NewLogUtils; -import com.gh.gamecenter.core.iinterface.SearchBarHint; -import com.gh.gamecenter.common.base.fragment.BaseLazyFragment; +import com.alibaba.android.arouter.launcher.ARouter; import com.gh.common.constant.Config; -import com.gh.gamecenter.common.constant.Constants; import com.gh.common.databind.BindingAdapters; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DataCollectionUtils; -import com.gh.gamecenter.core.utils.DisplayUtils; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.PackageFlavorHelper; -import com.gh.common.util.IntegralLogHelper; import com.gh.common.util.LogUtils; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.core.utils.SPUtils; +import com.gh.common.util.NewLogUtils; import com.gh.download.DownloadManager; import com.gh.gamecenter.DownloadManagerActivity; -import com.gh.gamecenter.MessageActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SearchActivity; +import com.gh.gamecenter.common.base.fragment.BaseLazyFragment; +import com.gh.gamecenter.common.constant.Constants; +import com.gh.gamecenter.common.constant.EntranceConsts; +import com.gh.gamecenter.common.constant.RouteConsts; +import com.gh.gamecenter.common.eventbus.EBReuse; +import com.gh.gamecenter.core.iinterface.SearchBarHint; +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.entity.GameUpdateEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; -import com.gh.gamecenter.common.eventbus.EBReuse; +import com.gh.gamecenter.feature.provider.IMessageProvider; import com.gh.gamecenter.message.MessageUnreadViewModel; import com.gh.gamecenter.packagehelper.PackageViewModel; import com.gh.gamecenter.teenagermode.TeenagerModeActivity; @@ -291,8 +291,10 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl CheckLoginUtils.checkLogin(requireContext(), "(工具栏)", () -> { NewLogUtils.logMessageInformBellClick(mMessageUnread.getVisibility() == View.VISIBLE, mLocation); - Intent i = MessageActivity.getIntent(requireContext(), "(工具栏)"); - startActivityForResult(i, REQUEST_MESSAGE); + IMessageProvider messageProvider = (IMessageProvider) ARouter.getInstance().build(RouteConsts.provider.message).navigation(); + if (messageProvider != null) { + startActivityForResult(messageProvider.getIntent(requireContext(), "(工具栏)"), REQUEST_MESSAGE); + } }); } else if (id == R.id.actionbar_teenager_model) { startActivity(TeenagerModeActivity.getIntent(requireContext())); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt index dfe51ea7f1..9f60d7c351 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt @@ -11,6 +11,7 @@ import androidx.core.content.ContextCompat import androidx.core.widget.doOnTextChanged import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView +import com.alibaba.android.arouter.facade.annotation.Route import com.gh.common.exposure.ExposureManager import com.gh.common.util.NewFlatLogUtils import com.gh.common.util.NewLogUtils @@ -20,6 +21,7 @@ import com.gh.gamecenter.R import com.gh.gamecenter.common.base.fragment.WaitingDialogFragment import com.gh.gamecenter.common.baselist.ListActivity import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.common.view.CustomDividerItemDecoration import com.gh.gamecenter.core.utils.DisplayUtils @@ -29,21 +31,21 @@ import com.gh.gamecenter.core.utils.PageSwitchDataHelper import com.gh.gamecenter.databinding.ActivityRatingReplyBinding import com.gh.gamecenter.databinding.PieceArticleInputContainerBinding import com.gh.gamecenter.databinding.PieceCommentTypingContainerBinding -import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.entity.RatingComment import com.gh.gamecenter.entity.RatingReplyEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.eventbus.EBPackage +import com.gh.gamecenter.feature.entity.GameEntity import com.gh.gamecenter.feature.exposure.ExposureSource import com.lightgame.download.DataWatcher import com.lightgame.download.DownloadEntity -import com.lightgame.download.DownloadStatus import com.lightgame.utils.Util_System_Keyboard import com.lightgame.utils.Utils import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import kotlin.math.abs +@Route(path = RouteConsts.activity.ratingReplyActivity) class RatingReplyActivity : ListActivity(), KeyboardHeightObserver { diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java deleted file mode 100644 index abb5043193..0000000000 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gh.gamecenter.message; - -import androidx.lifecycle.ViewModelProviders; - -import android.os.Bundle; - -import androidx.annotation.Nullable; - -import android.view.View; - -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.R; -import com.gh.gamecenter.common.baselist.ListAdapter; -import com.gh.gamecenter.common.baselist.ListFragment; -import com.gh.gamecenter.entity.MessageKeFuEntity; -import com.halo.assistant.HaloApp; - -/** - * Created by khy on 2017/4/5. - * 消息-客服 - */ -public class KeFuFragment extends ListFragment { - - private KeFuFragmentAdapter mAdapter; - private MessageUnreadViewModel mUnreadViewModel; - - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setNavigationTitle("系统"); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mUnreadViewModel = ViewModelProviders.of(this, new MessageUnreadViewModel.Factory(HaloApp.getInstance().getApplication())) - .get(MessageUnreadViewModel.class); - } - - @Override - public void onLoadDone() { - super.onLoadDone(); - mUnreadViewModel.markRead(MessageUnreadViewModel.ReadType.SERVICE); - } - - @Override - protected ListAdapter provideListAdapter() { - return mAdapter == null ? mAdapter = new KeFuFragmentAdapter(getContext(), - this, - mListViewModel, - mEntrance) : mAdapter; - } - - @Override - public void onListClick(View view, int position, Object data) { - if (view.getId() == R.id.message_kaifu_item) { - MtaHelper.onEvent("消息中心", "系统_二级列表", "点击卡片"); - MessageKeFuEntity keFuEntity = (MessageKeFuEntity) data; - if (!keFuEntity.isRead()) { - mListViewModel.postMessageRead(keFuEntity.getId()); - mAdapter.notifyDataSetChanged(); - } - } - } -} diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java b/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java deleted file mode 100644 index 91e6346f21..0000000000 --- a/app/src/main/java/com/gh/gamecenter/message/MessageAdapter.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.gh.gamecenter.message; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.RecyclerView; - -import com.gh.gamecenter.common.callback.OnListClickListener; -import com.gh.gamecenter.common.constant.ItemViewType; -import com.gh.common.databind.BindingAdapters; -import com.gh.gamecenter.common.utils.DialogHelper; -import com.gh.gamecenter.R; -import com.gh.gamecenter.common.viewholder.FooterViewHolder; -import com.gh.gamecenter.common.baselist.ListAdapter; -import com.gh.gamecenter.databinding.MessageItemBinding; -import com.gh.gamecenter.databinding.MessageItemTopBinding; -import com.gh.gamecenter.entity.MessageEntity; -import com.gh.gamecenter.entity.MessageUnreadEntity; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by khy on 23/03/18. - */ - -public class MessageAdapter extends ListAdapter { - - private OnListClickListener mClickListener; - - private MessageUnreadEntity mUnreadEntity; - - private MessageNormalViewModel mViewModel; - - private String mEntrance; - - public MessageAdapter(Context context, - OnListClickListener clickListener, - String entrance, - MessageNormalViewModel viewModel) { - super(context); - mClickListener = clickListener; - mEntrance = entrance; - mViewModel = viewModel; - } - - @Override - protected void setListData(List updateData) { - int oldSize = TOP_ITEM_COUNT; - if (mEntityList != null && mEntityList.size() > 0) { - oldSize += mEntityList.size(); - } - mEntityList = new ArrayList<>(updateData); - if (oldSize == TOP_ITEM_COUNT || oldSize > updateData.size()) { - notifyDataSetChanged(); - } else { - notifyItemRangeInserted(oldSize, updateData.size() + TOP_ITEM_COUNT - oldSize); - } - } - - void setMessageUnreadData(MessageUnreadEntity unreadEntity) { - mUnreadEntity = unreadEntity; - notifyItemChanged(0); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - switch (viewType) { - case ItemViewType.ITEM_HEADER: - MessageItemTopBinding topBinding = MessageItemTopBinding.inflate(mLayoutInflater, parent, false); - return new MessageTopViewHolder(topBinding, mClickListener); - case ItemViewType.ITEM_FOOTER: - View view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false); - return new FooterViewHolder(view, mClickListener); - case ItemViewType.ITEM_BODY: - MessageItemBinding binding = MessageItemBinding.inflate(mLayoutInflater, parent, false); - return new MessageItemViewHolder(binding, mClickListener, "消息_一级列表"); - default: - return null; - } - } - - @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { - switch (getItemViewType(position)) { - case ItemViewType.ITEM_HEADER: - MessageTopViewHolder topViewHolder = (MessageTopViewHolder) holder; - topViewHolder.mBinding.messageInviteName.setTextColor(ContextCompat.getColor(mContext, R.color.text_title)); - topViewHolder.mBinding.messageVoteName.setTextColor(ContextCompat.getColor(mContext, R.color.text_title)); - topViewHolder.mBinding.messageServiceName.setTextColor(ContextCompat.getColor(mContext, R.color.text_title)); - topViewHolder.mBinding.messageVote.setBackground(ContextCompat.getDrawable(mContext, R.drawable.reuse_listview_item_style)); - topViewHolder.mBinding.messageService.setBackground(ContextCompat.getDrawable(mContext, R.drawable.reuse_listview_item_style)); - topViewHolder.mBinding.messageInvite.setBackground(ContextCompat.getDrawable(mContext, R.drawable.reuse_listview_item_style)); - - if (mUnreadEntity != null) { - BindingAdapters.setMessageUnread(topViewHolder.mBinding.unreadVote, mUnreadEntity.getVoteCount()); - BindingAdapters.showHide(topViewHolder.mBinding.unreadVote, mUnreadEntity.getVoteCount() != 0); - - BindingAdapters.setMessageUnread(topViewHolder.mBinding.unreadInvite, mUnreadEntity.getInvited() + mUnreadEntity.getSystemInvited()); - BindingAdapters.showHide(topViewHolder.mBinding.unreadInvite, mUnreadEntity.getInvited() + mUnreadEntity.getSystemInvited() != 0); - - BindingAdapters.setMessageUnread(topViewHolder.mBinding.unreadService, mUnreadEntity.getService()); - BindingAdapters.showHide(topViewHolder.mBinding.unreadService, mUnreadEntity.getService() != 0); - } - break; - case ItemViewType.ITEM_BODY: - MessageItemViewHolder viewHolder = (MessageItemViewHolder) holder; - MessageEntity entity = mEntityList.get(position - TOP_ITEM_COUNT); - viewHolder.setMessageItem(entity, mContext, mEntrance); - viewHolder.itemView.setOnLongClickListener(v -> { - DialogHelper.showDialog( - mContext, - "删除消息", - "消息删除将不可恢复,确定删除吗?", - "确定", - "取消", - () -> mViewModel.deleteMessage(entity.getId()), - () -> { - }, - true, - "消息中心", - "消息列表-删除"); - return false; - }); - break; - case ItemViewType.ITEM_FOOTER: - FooterViewHolder footerViewHolder = (FooterViewHolder) holder; - footerViewHolder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver); - footerViewHolder.initItemPadding(); - break; - } - } - - @Override - public int getItemViewType(int position) { - if (position == 0) { - return ItemViewType.ITEM_HEADER; - } else if (position == getItemCount() - 1) { - return ItemViewType.ITEM_FOOTER; - } else { - return ItemViewType.ITEM_BODY; - } - } - - @Override - public int getItemCount() { - return mEntityList == null || mEntityList.isEmpty() ? TOP_ITEM_COUNT : mEntityList.size() + FOOTER_ITEM_COUNT + TOP_ITEM_COUNT; - } -} diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java b/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java deleted file mode 100644 index 0a01cea837..0000000000 --- a/app/src/main/java/com/gh/gamecenter/message/MessageFragment.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.gh.gamecenter.message; - -import android.os.Bundle; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; -import androidx.recyclerview.widget.RecyclerView; - -import com.gh.common.util.NewLogUtils; -import com.gh.gamecenter.common.view.CustomDividerItemDecoration; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.MessageInviteActivity; -import com.gh.gamecenter.MessageKeFuActivity; -import com.gh.gamecenter.MessageVoteActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.common.baselist.ListFragment; -import com.gh.gamecenter.common.baselist.LoadStatus; -import com.gh.gamecenter.common.baselist.LoadType; -import com.gh.gamecenter.entity.MessageEntity; -import com.gh.gamecenter.entity.MessageUnreadEntity; -import com.halo.assistant.HaloApp; - -/** - * Created by khy on 23/03/18. - */ - -public class MessageFragment extends ListFragment { - - private MessageAdapter mAdapter; - - private MessageUnreadViewModel mUnreadViewModel; - - private MessageUnreadEntity mUnreadEntity; - - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setNavigationTitle(getString(R.string.title_message_center)); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mUnreadViewModel = ViewModelProviders.of(this, new MessageUnreadViewModel.Factory(HaloApp.getInstance().getApplication())) - .get(MessageUnreadViewModel.class); - if (savedInstanceState != null) { - mUnreadViewModel.retry(); - } - mUnreadViewModel.getLiveData().observe(this, - messageUnread -> { - mUnreadEntity = messageUnread; - provideListAdapter().setMessageUnreadData(messageUnread); - }); - } - - @Override - protected MessageNormalViewModel provideListViewModel() { - MessageNormalViewModel.Factory factory = new MessageNormalViewModel.Factory(HaloApp.getInstance().getApplication(), "default"); - return ViewModelProviders.of(this, factory).get(MessageNormalViewModel.class); - } - - @Override - protected MessageAdapter provideListAdapter() { - return mAdapter == null ? mAdapter = new MessageAdapter( - getContext(), - this, - mEntrance, - mListViewModel) : mAdapter; - } - - @Override - protected RecyclerView.ItemDecoration getItemDecoration() { - CustomDividerItemDecoration decoration = new CustomDividerItemDecoration(requireContext(), false, true, false, false); - decoration.setDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.divider_item_line_space_16_h_1px)); - mItemDecoration = decoration; - return mItemDecoration; - } - - @Override - public void onLoadEmpty() { - super.onLoadDone(); - mAdapter.loadChange(LoadStatus.LIST_OVER); - mReuseNoData.setVisibility(View.VISIBLE); - mReuseNoData.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent)); - } - - @Override - public void onLoadError() { - super.onLoadDone(); - mAdapter.loadChange(LoadStatus.LIST_FAILED); - } - - @Override - public void onListClick(View view, int position, Object data) { - switch (view.getId()) { - case R.id.footerview_item: - if (mAdapter.isNetworkError()) { - mListViewModel.load(LoadType.RETRY); - } - return; - case R.id.message_vote: - MtaHelper.onEvent("消息中心", "二级入口", "赞同"); - NewLogUtils.logMessageInformTopIconClick(mUnreadEntity.getVoteCount() != 0, "赞同"); - startActivity(MessageVoteActivity.getIntent(getContext(), MessageNormalFragment.MESSAGE_TYPE_VOTE, "赞同_二级列表", mEntrance)); - return; - case R.id.message_invite: - MtaHelper.onEvent("消息中心", "二级入口", "邀请"); - NewLogUtils.logMessageInformTopIconClick(mUnreadEntity.getInvited() + mUnreadEntity.getSystemInvited() != 0, "邀请"); - startActivity(MessageInviteActivity.getIntent(getContext(), MessageNormalFragment.MESSAGE_TYPE_INVITE, "邀请_二级列表", mEntrance)); - return; - case R.id.message_service: - MtaHelper.onEvent("消息中心", "二级入口", "系统"); - NewLogUtils.logMessageInformTopIconClick(mUnreadEntity.getService() != 0, "系统"); - startActivity(MessageKeFuActivity.getIntent(getContext(), mEntrance)); - return; - } - - MessageEntity entity = (MessageEntity) data; - String path = "我的光环-消息中心-列表"; - MessageItemViewHolder.messageItemClickSkip(view, entity, mEntrance, "消息_一级列表", path); - if (!entity.getRead()) { - mListViewModel.postMessageRead(entity.getId(), entity.getType()); - } - } -} diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageTopViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/MessageTopViewHolder.java deleted file mode 100644 index e7c7958996..0000000000 --- a/app/src/main/java/com/gh/gamecenter/message/MessageTopViewHolder.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gh.gamecenter.message; - -import com.gh.gamecenter.common.base.BaseRecyclerViewHolder; -import com.gh.gamecenter.common.callback.OnListClickListener; -import com.gh.gamecenter.databinding.MessageItemTopBinding; - -/** - * Created by khy on 24/03/18. - */ - -public class MessageTopViewHolder extends BaseRecyclerViewHolder { - MessageItemTopBinding mBinding; - - public MessageTopViewHolder(MessageItemTopBinding binding, OnListClickListener listClickListener) { - super(binding.getRoot(), listClickListener); - mBinding = binding; - mBinding.messageInvite.setOnClickListener(this); - mBinding.messageService.setOnClickListener(this); - mBinding.messageVote.setOnClickListener(this); - } -} 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 974f291a4f..49294bf698 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadRepository.kt @@ -14,6 +14,7 @@ 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.entity.* +import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.retrofit.RetrofitManager import com.gh.gamecenter.retrofit.service.ApiService import com.google.gson.reflect.TypeToken diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java index 7bbb08e8ab..fe54581503 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageUnreadViewModel.java @@ -10,7 +10,7 @@ import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import com.gh.gamecenter.entity.AddonsUnreadEntity; -import com.gh.gamecenter.entity.MessageUnreadEntity; +import com.gh.gamecenter.feature.entity.MessageUnreadEntity; /** 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 364f49f367..b5a7f6f0de 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt @@ -16,6 +16,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 +import com.alibaba.android.arouter.launcher.ARouter import com.gh.common.constant.Config import com.gh.common.databind.BindingAdapters import com.gh.common.util.* @@ -24,6 +25,7 @@ import com.gh.common.util.NewFlatLogUtils import com.gh.common.util.NewLogUtils import com.gh.gamecenter.* import com.gh.gamecenter.common.base.fragment.BaseLazyFragment +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.eventbus.EBNetworkState import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.common.retrofit.ApiResponse @@ -34,9 +36,10 @@ import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.databinding.FragmentHaloPersonalBinding import com.gh.gamecenter.databinding.FragmentPersonalStubBinding import com.gh.gamecenter.entity.BadgeEntity -import com.gh.gamecenter.entity.MessageUnreadEntity +import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.eventbus.EBConcernChanged import com.gh.gamecenter.feature.entity.Badge +import com.gh.gamecenter.feature.provider.IMessageProvider import com.gh.gamecenter.fragment.MainWrapperFragment import com.gh.gamecenter.gamecollection.mine.MyGameCollectionActivity import com.gh.gamecenter.history.HistoryActivity @@ -164,10 +167,9 @@ class HaloPersonalFragment : BaseLazyFragment() { mStubBinding.loginMessageHint.visibility == View.VISIBLE, "我的" ) - startActivityForResult( - MessageActivity.getIntent(context, "(我的光环)+(消息中心)"), - REQUEST_MESSAGE - ) + (ARouter.getInstance().build(RouteConsts.provider.message).navigation() as? IMessageProvider)?.let { + startActivityForResult(it.getIntent(requireContext(), "(我的光环)+(消息中心)"), REQUEST_MESSAGE) + } } else { NewFlatLogUtils.logHaloSelfLogin() CheckLoginUtils.checkLogin(context, "我的光环-消息") {} diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt index 020de0e419..2952ae0e20 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt @@ -32,7 +32,7 @@ import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.databinding.FragmentHomeBinding -import com.gh.gamecenter.entity.MessageUnreadEntity +import com.gh.gamecenter.feature.entity.MessageUnreadEntity import com.gh.gamecenter.feature.entity.Badge import com.gh.gamecenter.feature.entity.PersonalEntity import com.gh.gamecenter.login.user.UserManager diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt index 2c90d2b60b..1ca477b085 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/detail/ArticleDetailActivity.kt @@ -3,13 +3,16 @@ package com.gh.gamecenter.qa.article.detail import android.content.Context import android.content.Intent import android.os.Bundle +import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.R import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.entity.SpecialColumn +@Route(path = RouteConsts.activity.articleDetailActivity) class ArticleDetailActivity : ToolBarActivity() { override fun getLayoutId() = R.layout.activity_amway diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt index 227ba7c5fa..457c098773 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailActivity.kt @@ -3,12 +3,15 @@ package com.gh.gamecenter.qa.questions.newdetail import android.content.Context import android.content.Intent import android.os.Bundle +import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.R import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor import com.gh.gamecenter.common.entity.CommunityEntity +@Route(path = RouteConsts.activity.questionDetailActivity) class NewQuestionDetailActivity : ToolBarActivity() { override fun getLayoutId() = R.layout.activity_amway diff --git a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt index 5d16310420..811757ecf3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/video/detail/ForumVideoDetailActivity.kt @@ -5,13 +5,16 @@ import android.content.Intent import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment +import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.base.activity.BaseActivity import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout.PAGE_INDEX import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.R import com.gh.gamecenter.common.base.fragment.ToolbarFragment +import com.gh.gamecenter.common.constant.RouteConsts +@Route(path = RouteConsts.activity.forumVideoDetailActivity) class ForumVideoDetailActivity : BaseActivity() { var containerFragment: Fragment? = null diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java b/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java index 823efcd917..def7d574a9 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/RetrofitManager.java @@ -3,10 +3,12 @@ package com.gh.gamecenter.retrofit; import android.content.Context; import com.gh.common.constant.Config; +import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.common.retrofit.BaseRetrofitManager; import com.gh.gamecenter.retrofit.service.ApiService; import com.gh.gamecenter.retrofit.service.VApiService; import com.halo.assistant.HaloApp; +import com.lightgame.utils.Utils; import okhttp3.OkHttpClient; 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 fdd8ab28ea..2dd88666f9 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 @@ -56,10 +56,7 @@ import com.gh.gamecenter.entity.InterestedGameEntity; import com.gh.gamecenter.entity.LibaoDetailEntity; import com.gh.gamecenter.entity.LibaoEntity; import com.gh.gamecenter.entity.LibaoStatusEntity; -import com.gh.gamecenter.entity.MessageEntity; -import com.gh.gamecenter.entity.MessageFold; -import com.gh.gamecenter.entity.MessageKeFuEntity; -import com.gh.gamecenter.entity.MessageUnreadEntity; +import com.gh.gamecenter.feature.entity.MessageUnreadEntity; import com.gh.gamecenter.entity.MyVideoEntity; import com.gh.gamecenter.entity.NewApiSettingsEntity; import com.gh.gamecenter.entity.NewSettingsEntity; @@ -619,13 +616,6 @@ public interface ApiService { /***************8 MessageService *******/ - - /** - * 获取消息-客服数据 - */ - @GET("users/{user_id}/private_messages") - Observable> getMessageKeFuData(@Path("user_id") String user_id, @Query("page") int page); - /** * 获取消息未读数据 */ @@ -633,10 +623,6 @@ public interface ApiService { Observable getMessageUnread(@Path("user_id") String user_id); - @GET("users/{user_id}/messages") - Observable> getMessage(@Path("user_id") String user_id, @Query("view") String type, @Query("timestamp") long timestamp, @Query("page") int page); - - /****** 问答(社区相关) *******/ @@ -1018,18 +1004,6 @@ public interface ApiService { @POST("users/{user_id}/messages/{message_id}:read") Observable postMessageRead(@Path("user_id") String userId, @Path("message_id") String messageId, @Body RequestBody body); - /** - * 将消息删除 - */ - @POST("users/{user_id}/messages/{message_id}:inactivate") - Observable deleteMessage(@Path("user_id") String userId, @Path("message_id") String messageId); - - /** - * 将消息删除 - */ - @POST("users/{user_id}/private_messages/{message_id}:inactivate") - Observable deleteKaiFuMessage(@Path("user_id") String userId, @Path("message_id") String messageId); - /** * 在社区发布文章 */ @@ -1323,10 +1297,6 @@ public interface ApiService { @POST("./app:activate") Observable postActivationInfo(); - @GET("users/{user_id}/messages/{resource_id}/fold-list") - Observable> getMessageFoldList(@Path("user_id") String userId, - @Path("resource_id") String resourceId); - /** * 获取首页游戏补充库 */ diff --git a/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java b/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java index b6aaeecaf4..412ab26022 100644 --- a/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/comment/CommentDetailFragment.java @@ -33,7 +33,7 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.CommentDetailAdapter; import com.gh.gamecenter.adapter.OnCommentCallBackListener; import com.gh.gamecenter.entity.CommentEntity; -import com.gh.gamecenter.entity.MessageEntity; +import com.gh.gamecenter.feature.entity.MessageEntity; import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.eventbus.EBAddComment; import com.gh.gamecenter.eventbus.EBDeleteComment; diff --git a/app/src/main/res/drawable-hdpi/ic_id.webp b/app/src/main/res/drawable-hdpi/ic_id.webp deleted file mode 100644 index ea8dbde7c1062ea6e6b71494d4e2993295ca1738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hQfNk&F?0ssJ4MM6+kP&il$0000G0000H000pH06|PpNY4NO00Gazux%v8 zxzEhfGetx!Ag~oU-I3ubDs|G#hO3M^{{Nyp9SE!za2VOP(p=n~I3D)|fBkocmk`l^ z1#a6YW8T3p(4&8SSJnIKV}$0N%G>dHE9q_y*vo$b4*-1d%e~&tUj{~Kyz$upVOg|9_tcARzx*@>r98&Nthn*?}*w?;8g21rUFL+q*hWf!9hnR@1N|6{l+2 ziSphVm;7vJUu1nrKgg}*l!)q!&<`5C3a&fIo^+dssBO3CBz92LZAQU-zDp(|K|RO4g8z! zWhAcR9c$jMTdODKl`#c-xBve)9<}dFpW^LL=n32|kH#HG_}{JjOt5w8jgtHIncDDu YNffW$2~dTspX5r-k5qwbKFlP50QB)ap8x;= diff --git a/app/src/main/res/drawable-xhdpi/ic_id.webp b/app/src/main/res/drawable-xhdpi/ic_id.webp deleted file mode 100644 index a080fdc0b18f4a98290f7995ad70404f8515270c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804 zcmV+<1Ka#kNk&E-0{{S5MM6+kP&il$0000G0000N000*N06|PpNG1UQ00A$;plu{a zpV@xjpFi9O5fQl=khm}*HhcPUAPN3}7|FJ2YrXgXvu)e9 z-}x*5oDT2LAfo>Y+_q81eE16Jm}sw$kH>M{PQZ%s>6Zq6r*R8c?tCxmnLr>@U%Yv* z7~BzDrC?xcMbUx6iVy=>aUg^;<99k(67RBM$`$Y%2Qr01J{wlF;uMMRTXxKzp}9lftXs6qODF8^X7YIx2;yHEZ8lVzaR z@AsP}AE4d;Ki}Ua`q`Y=3_VWOjJMd>=-$_m z4Gl4f#2?+U|NSvv{+O@+qA36M8h_L=L)CuUlIU$W{g8b*%mtJG68l`;_C}v4pT@8M zq38Y~8$b4xXZH5g(+OH*dH?${amo^V|Mp_zlqY}uOn>w{Q(e#eK=2cP1vkvMf0^rf i*ex%87<(C@ff>gC|78~cL(ko)fB$6`|3lB+fB*oLx0Kxg diff --git a/app/src/main/res/drawable-xxhdpi/ic_id.webp b/app/src/main/res/drawable-xxhdpi/ic_id.webp deleted file mode 100644 index 2e8e90dcf1f329c0cf00347dce10cbab01361e0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmV-=1cm!jNk&F;1ONb6MM6+kP&il$0000G0000Z001KZ06|PpNYMcR00Gy+ux;DO z$&>8#{=0~XO~3%cNPx7Cfkgi`JYz^s$->YgU6~3SM?guJXy?p-{6eLY?5O;#1i@$+9i{5>BJSkdqm zZFx1^Zj@fPYU0be(WqFAM&~YLt7ARwt(8-wE>`Du9cBX4ta1Zt8@BIAO}VqhQ$l%c26gXe2q`xiU8tOmpE%(l~tE*Sd~Z zB<(&KK3pGf3_9pA-x-(AVb#i5hDc33+)7zBt8lLBFR^2fO&CxYyzlJn9-MvSzF&*^ ztxmzE{J3>gM2|3J1zf_^KFkF{Juyf219Px{0i$8i2_JTQ6fT}13d9O@ON!v>3yOi5 z1^a~}e0@SG5DPFOsRW<@m~2Czxnjs3tp>;>B{e+<)-tnDTP zeBfnra&l(v74EW<>jNHN+JJro4e~s$NHVdOP|PM1`${H$H$*}-dP&goZ0ssIo z4*;D3DkK0T06r}eheDyD3yYWx0b*J}1XTaHu-?HAv3#^v{j+ z#I|w1FEu{H5&YdxV8VX!e07p_nk(~i$4f0 z1YeW#pq}LjZxj_~1`Lk?(#QF~`7lCDP27A%ClBra$~z$9!-$OmHgb0-C6&L!mvdf6 zkp>G!Pyc^pL;w6tYaJ89A%pwO*|nTp0a0L6_k#sBM#kiM(4K)pa{7h;G+nYJao7Ow zndWsvzb5eqaitXf3SM;N-qt`bpzuL)Q4yh_+i}I9AF0vgoPVc2EV%#Lv{uJqBGQLw zu5~?OB`SK)3@~>hZzfUF2$bVvuYdpm06}jwUH||9 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0912ceeada..994da6fa33 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,7 +20,6 @@ 热门搜索 热门标签 历史搜索 - 消息中心 我关注的游戏 请输入搜索关键字 搜索 @@ -84,7 +83,6 @@ 提示内容 知道了 - 复制ID 网络错误,点击重试! 目前还没有评论 没有更多评论啦 @@ -204,7 +202,6 @@ 热门 %1$d票 - 光环客服 搜索 取消失败,请稍后再试 @@ -275,7 +272,6 @@ 撰写回答 修改回答 - 网络错误 已经点赞了哟~ 不能重复点赞哦 %1$s邀请你回答:%2$s diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt index a72eeec376..18f85579c9 100644 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt @@ -81,6 +81,10 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt index f946707dae..7c365bf6b6 100644 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt +++ b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt @@ -29,6 +29,10 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") } + override fun directToEnergyRecord(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") + } + override fun directToEnergyRulePage(context: Context) { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage") } @@ -70,6 +74,48 @@ class DirectProviderImpl : IDirectProvider { return true } + override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToHomeActivity") + } + + override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAnswerDetail") + } + + override fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->DirectProviderImpl.directToCommunityArticle") + } + + override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToVideoDetail") + } + + override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAmway") + } + + override fun directToOrderCenter(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderCenter") + } + + override fun directToOrderDetail(context: Context, orderId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderDetail") + } + + override fun directToMyPrizePage(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToMyPrizePage") + } + + override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") + } + override fun init(context: Context?) { // Do nothing } diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt index 0659265d1c..ccdae185f9 100644 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt +++ b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.appcompat.app.AppCompatActivity import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType @@ -118,6 +119,16 @@ class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { context.startActivity(intent) } + override fun directToCommunityColumn( + context: Context, + community: CommunityEntity?, + subjectId: String, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToCommunityColumn") + } + override fun init(context: Context?) { // Do nothing diff --git a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt index f4d963a85b..6a96d34281 100644 --- a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt +++ b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt @@ -77,9 +77,17 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } + override fun getIsBrandNewInstall(): Boolean { + return false + } + override fun getFlavor(): String { return "internal" } diff --git a/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt b/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt index 31f43c45d0..12386a51b3 100644 --- a/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt +++ b/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt @@ -77,6 +77,10 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index 31acabc33d..bd611b3914 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -282,4 +282,6 @@ public class EntranceConsts { public static final String KEY_EDIT_HISTORY = "edit_history"; public static final String KEY_TAB = "tab"; public static final String KEY_SHOW_SEARCH_TOOLBAR = "show_search_toolbar"; + public static final String KEY_URL_LIST = "urls"; + public static final String KEY_CURRENT = "current"; } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt index 00bb36d7c4..1c349646b8 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt @@ -6,6 +6,12 @@ object RouteConsts { const val splashActivity = "/app/SplashScreenActivity" const val cleanApkActivity = "/app/cleanApkActivity" const val gameSubmissionActivity = "/app/gameSubmissionActivity" + const val imageViewerActivity = "/app/imageViewerActivity" + const val newsDetailActivity = "/app/newsDetailActivity" + const val ratingReplyActivity = "/app/ratingReplyActivity" + const val questionDetailActivity = "/app/questionDetailActivity" + const val articleDetailActivity = "/app/articleDetailActivity" + const val forumVideoDetailActivity = "/app/forumVideoDetailActivity" const val aboutActivity = "/settings/AboutActivity" const val webActivity = "/setting/WebActivity" @@ -62,6 +68,14 @@ object RouteConsts { const val gameDetail = "/services/gameDetail" const val packagesManager = "/services/packagesManager" const val adHelper = "/services/adHelper" + const val commentUtils = "/services/commentUtils" + const val subject = "/services/subject" + const val messageDetail = "/services/messageDetail" + const val commentDetail = "/services/commentDetail" + const val newCommentDetail = "/services/newCommentDetail" + const val simpleAnswerDetail = "/services/simpleAnswerDetail" + const val gameCollectionDetail = "/services/gameCollectionDetail" + const val downloadButtonClickedHandler = "/downloadbutton/clickedHandler" const val userManager = "/login/userManager" @@ -85,6 +99,8 @@ object RouteConsts { const val adSdk = "/adSdk/adSdk" const val oaid = "/oaid/oaid" + + const val message = "/message/message" } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_shape_space_radius_8.xml b/module_common/src/main/res/drawable/bg_shape_space_radius_8.xml similarity index 100% rename from app/src/main/res/drawable/bg_shape_space_radius_8.xml rename to module_common/src/main/res/drawable/bg_shape_space_radius_8.xml diff --git a/app/src/main/res/drawable/divider_item_line_space_16_h_1px.xml b/module_common/src/main/res/drawable/divider_item_line_space_16_h_1px.xml similarity index 100% rename from app/src/main/res/drawable/divider_item_line_space_16_h_1px.xml rename to module_common/src/main/res/drawable/divider_item_line_space_16_h_1px.xml diff --git a/app/src/main/res/drawable/message_unread_hint.xml b/module_common/src/main/res/drawable/message_unread_hint.xml similarity index 100% rename from app/src/main/res/drawable/message_unread_hint.xml rename to module_common/src/main/res/drawable/message_unread_hint.xml diff --git a/app/src/main/res/drawable/oval_message_hint_bg.xml b/module_common/src/main/res/drawable/oval_message_hint_bg.xml similarity index 100% rename from app/src/main/res/drawable/oval_message_hint_bg.xml rename to module_common/src/main/res/drawable/oval_message_hint_bg.xml diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt index bde6fbb045..54e18e3fbb 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt @@ -33,4 +33,40 @@ interface IDirectProvider : IProvider { fun directToHelpAndFeedback(context: Context, position: Int) fun directToQqGroup(context: Context, groupNumber: String? = null): Boolean + + fun directToHomeActivity(context: Context, userId: String?, entrance: String? = null, path: String? = null) + + fun directToAnswerDetail(context: Context, id: String, entrance: String? = null, path: String? = null) + + fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) + + fun directToVideoDetail( + context: Context, + videoId: String, + entrance: String? = null, + path: String? = "" + ) + + fun directToAmway( + context: Context, + fixedTopAmwayCommentId: String? = null, + entrance: String? = null, + path: String? = "" + ) + + fun directToOrderCenter(context: Context) + + fun directToOrderDetail(context: Context, orderId: String) + + fun directToEnergyRecord(context: Context, position: Int) + + fun directToMyPrizePage(context: Context) + + fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMessageUnreadRepositoryProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMessageUnreadRepositoryProvider.kt deleted file mode 100644 index 22cff43e8c..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMessageUnreadRepositoryProvider.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.gh.gamecenter.core.provider - -import com.alibaba.android.arouter.facade.template.IProvider - -interface IMessageUnreadRepositoryProvider : IProvider { - - fun loadMessageUnreadData() - -} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageEntity.kt similarity index 96% rename from app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt rename to module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageEntity.kt index 7002918020..566e678c9c 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageEntity.kt @@ -1,10 +1,7 @@ -package com.gh.gamecenter.entity +package com.gh.gamecenter.feature.entity import android.os.Parcel import android.os.Parcelable -import com.gh.gamecenter.feature.entity.SimpleGame -import com.gh.gamecenter.feature.entity.SourceEntity -import com.gh.gamecenter.feature.entity.UserEntity import com.google.gson.annotations.SerializedName /** @@ -70,7 +67,7 @@ class MessageEntity { thumb = parcel.readString() communityId = parcel.readString() images = parcel.createStringArrayList() ?: arrayListOf() - parcel.readTypedList(videos, Video.CREATOR) + parcel.readTypedList(videos, Video) } override fun writeToParcel(parcel: Parcel, flags: Int) { diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageUnreadEntity.kt similarity index 97% rename from app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.kt rename to module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageUnreadEntity.kt index 9b3913c138..c300aabb9b 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageUnreadEntity.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/entity/MessageUnreadEntity.kt @@ -1,7 +1,6 @@ -package com.gh.gamecenter.entity +package com.gh.gamecenter.feature.entity import com.gh.gamecenter.common.utils.tryWithDefaultCatch -import com.gh.gamecenter.feature.entity.UserEntity import com.google.gson.annotations.SerializedName import java.util.* diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt index e16cb4e3fc..33d5dfbc21 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IBindingAdaptersProvider.kt @@ -11,4 +11,5 @@ interface IBindingAdaptersProvider : IProvider { fun setGameTags(layout: LinearLayout, gameEntity: GameEntity) + fun setMessageUnread(view: TextView, unreadCount: Int) } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt new file mode 100644 index 0000000000..6257c7e60b --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentDetailProvider.kt @@ -0,0 +1,10 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import android.os.Parcelable +import com.alibaba.android.arouter.facade.template.IProvider + +interface ICommentDetailProvider : IProvider { + fun getIntent(context: Context, commentId: String? = "", message: Parcelable): Intent? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt new file mode 100644 index 0000000000..652b9667c3 --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ICommentUtilsProvider.kt @@ -0,0 +1,8 @@ +package com.gh.gamecenter.feature.provider + +import android.widget.TextView +import com.alibaba.android.arouter.facade.template.IProvider + +interface ICommentUtilsProvider : IProvider { + fun setCommentTime(textView: TextView, time: Long) +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt new file mode 100644 index 0000000000..86312bb59a --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt @@ -0,0 +1,19 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.template.IProvider + +interface IGameCollectionDetailProvider : IProvider { + fun getIntent( + context: Context, + gameCollectionId: String, + isFromSquare: Boolean = false + ): Intent? + + fun getSpecifiedCommentIntent( + context: Context, + gameCollectionId: String, + topCommentId: String + ): Intent? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt index d1d07b0f5d..6557b8d7db 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameDetailProvider.kt @@ -19,4 +19,16 @@ interface IGameDetailProvider : IProvider { scrollToServer: Boolean = false, traceEvent: ExposureEvent? = null ) + + fun startGameDetailActivity( + context: Context, + gameId: String, + entrance: String?, + defaultTab: Int = -1, + isSkipGameComment: Boolean = false, + scrollToLibao: Boolean = false, + openVideoStreaming: Boolean = false, + openPlatformWindow: Boolean = false, + traceEvent: ExposureEvent? = null + ) } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt index 06f7887c27..8c6809e350 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ILinkDirectUtilsProvider.kt @@ -2,6 +2,7 @@ package com.gh.gamecenter.feature.provider import android.content.Context import com.alibaba.android.arouter.facade.template.IProvider +import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType @@ -44,4 +45,12 @@ interface ILinkDirectUtilsProvider : IProvider { ) fun directToSuggestion(context: Context, type: SuggestType, hiddenHint: String) + + fun directToCommunityColumn( + context: Context, + community: CommunityEntity?, + subjectId: String, + entrance: String?, + path: String? + ) } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt new file mode 100644 index 0000000000..4932c81792 --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageDetailProvider.kt @@ -0,0 +1,15 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.template.IProvider + +interface IMessageDetailProvider : IProvider { + fun getIntentById( + context: Context, + newsId: String, + commentNum: Int, + openSoftInput: Boolean, + entrance: String + ): Intent? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt new file mode 100644 index 0000000000..bb4cf3adef --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageProvider.kt @@ -0,0 +1,9 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.template.IProvider + +interface IMessageProvider : IProvider { + fun getIntent(context: Context, entrance: String): Intent +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt new file mode 100644 index 0000000000..a234781d8a --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IMessageUnreadRepositoryProvider.kt @@ -0,0 +1,12 @@ +package com.gh.gamecenter.feature.provider + +import androidx.lifecycle.MediatorLiveData +import com.alibaba.android.arouter.facade.template.IProvider +import com.gh.gamecenter.feature.entity.MessageUnreadEntity + +interface IMessageUnreadRepositoryProvider : IProvider { + + fun loadMessageUnreadData() + + fun getUnreadLiveData(): MediatorLiveData? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt new file mode 100644 index 0000000000..29322db3fa --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/INewCommentDetailProvider.kt @@ -0,0 +1,44 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.template.IProvider + +interface INewCommentDetailProvider : IProvider { + fun getAnswerCommentIntent( + context: Context, + commentId: String, + questionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? + + fun getArticleCommentIntent( + context: Context, + commentId: String, + communityId: String, + articleId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? + + fun getVideoCommentIntent( + context: Context, + commentId: String, + videoId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? + + fun getGameCollectionCommentIntent( + context: Context, + commentId: String, + gameCollectionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt new file mode 100644 index 0000000000..8baaaa64c3 --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISimpleAnswerDetailProvider.kt @@ -0,0 +1,9 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.template.IProvider + +interface ISimpleAnswerDetailProvider : IProvider { + fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent? +} \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt new file mode 100644 index 0000000000..fd7c006b27 --- /dev/null +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/ISubjectProvider.kt @@ -0,0 +1,14 @@ +package com.gh.gamecenter.feature.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.template.IProvider + +interface ISubjectProvider : IProvider { + fun startSubjectActivity( + context: Context, + id: String?, + name: String?, + isOrder: Boolean, + entrance: String? + ) +} \ No newline at end of file diff --git a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt index 4091683e74..b2404aec38 100644 --- a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt @@ -81,6 +81,10 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } diff --git a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt index f946707dae..7c365bf6b6 100644 --- a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt +++ b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/DirectProviderImpl.kt @@ -29,6 +29,10 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") } + override fun directToEnergyRecord(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") + } + override fun directToEnergyRulePage(context: Context) { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage") } @@ -70,6 +74,48 @@ class DirectProviderImpl : IDirectProvider { return true } + override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToHomeActivity") + } + + override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAnswerDetail") + } + + override fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->DirectProviderImpl.directToCommunityArticle") + } + + override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToVideoDetail") + } + + override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAmway") + } + + override fun directToOrderCenter(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderCenter") + } + + override fun directToOrderDetail(context: Context, orderId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderDetail") + } + + override fun directToMyPrizePage(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToMyPrizePage") + } + + override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") + } + override fun init(context: Context?) { // Do nothing } diff --git a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt index 61c0db9f4c..ccdae185f9 100644 --- a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt +++ b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/LinkDirectUtilsProviderImpl.kt @@ -4,11 +4,13 @@ import android.content.Context import androidx.appcompat.app.AppCompatActivity import com.alibaba.android.arouter.facade.annotation.Route import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.entity.SimpleGameEntity import com.gh.gamecenter.common.entity.SuggestType import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.exposure.ExposureEvent import com.gh.gamecenter.feedback.view.suggest.SuggestionActivity @Route(path = RouteConsts.provider.linkDirectUtils, name = "DirectUtils暴露服务,主要是暴露directToLinkPage方法") @@ -117,6 +119,16 @@ class LinkDirectUtilsProviderImpl : ILinkDirectUtilsProvider { context.startActivity(intent) } + override fun directToCommunityColumn( + context: Context, + community: CommunityEntity?, + subjectId: String, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->LinkDirectUtilsProviderImpl.directToCommunityColumn") + } + override fun init(context: Context?) { // Do nothing 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 8d8b6e1247..349f6f3ae8 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 @@ -34,7 +34,7 @@ import com.gh.gamecenter.core.provider.IDataUtilsProvider; import com.gh.gamecenter.core.provider.IDownloadManagerProvider; import com.gh.gamecenter.core.provider.IErrorHelperProvider; import com.gh.gamecenter.core.provider.IGameSubstituteRepositoryProvider; -import com.gh.gamecenter.core.provider.IMessageUnreadRepositoryProvider; +import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider; import com.gh.gamecenter.core.provider.IReservationRepositoryProvider; import com.gh.gamecenter.core.utils.GsonUtils; import com.gh.gamecenter.core.utils.SPUtils; @@ -244,9 +244,13 @@ public class UserRepository { userTokenHandle(response, loginTag); IGameSubstituteRepositoryProvider gameSubstituteRepository = (IGameSubstituteRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.gameSubstituteRepository).navigation(); - gameSubstituteRepository.updateSubstitutableGames(); + if (gameSubstituteRepository != null) { + gameSubstituteRepository.updateSubstitutableGames(); + } IWechatBindHelperProvider wechatBindHelper = (IWechatBindHelperProvider) ARouter.getInstance().build(RouteConsts.provider.wechatHelper).navigation(); - wechatBindHelper.getWechatConfig(null); + if (wechatBindHelper != null) { + wechatBindHelper.getWechatConfig(null); + } if (callback != null) { callback.onFirst(response); @@ -449,14 +453,18 @@ public class UserRepository { // 重启因为实名认证而处于等待中的任务 IDownloadManagerProvider downloadManager = (IDownloadManagerProvider) ARouter.getInstance().build(RouteConsts.provider.downloadManager).navigation(); - downloadManager.resumeAllInvisiblePendingTask(); + if (downloadManager != null) { + downloadManager.resumeAllInvisiblePendingTask(); + } } @Override public void onFailure(@NonNull Exception exception) { mEditObsResponseUserInfo.postValue(null); IErrorHelperProvider errorHelper = (IErrorHelperProvider) ARouter.getInstance().build(RouteConsts.provider.errorHelper).navigation(); - errorHelper.handleLoginError(HaloApp.getInstance(), (HttpException) exception, "", true); + if (errorHelper != null) { + errorHelper.handleLoginError(HaloApp.getInstance(), (HttpException) exception, "", true); + } NewLogUtils.INSTANCE.logCertificationResult(isForcedToCertificate, 0); } }); @@ -502,7 +510,9 @@ public class UserRepository { userInfoHandle(response, false); IReservationRepositoryProvider reservationRepository = (IReservationRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.reservationRepository).navigation(); - reservationRepository.refreshReservations(); + if (reservationRepository != null) { + reservationRepository.refreshReservations(); + } UserManager.getInstance().refreshUserRegulationTestStatus(); @@ -511,7 +521,9 @@ public class UserRepository { EventBus.getDefault().post(new EBReuse(LOGIN_TAG)); IMessageUnreadRepositoryProvider messageUnreadRepository = (IMessageUnreadRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.messageUnreadRepository).navigation(); - messageUnreadRepository.loadMessageUnreadData(); + if (messageUnreadRepository != null) { + messageUnreadRepository.loadMessageUnreadData(); + } } if (UserManager.getInstance().getLoginTokenEntity() != null) { @@ -533,7 +545,9 @@ public class UserRepository { mLoginObsResponseUserInfo.postValue(e); if (loginTag != null) { IErrorHelperProvider errorHelper = (IErrorHelperProvider) ARouter.getInstance().build(RouteConsts.provider.errorHelper).navigation(); - errorHelper.handleLoginError(mContext, e.getHttpException(), loginTag.toChinese(), false); + if (errorHelper != null) { + errorHelper.handleLoginError(mContext, e.getHttpException(), loginTag.toChinese(), false); + } logout(); } diff --git a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt index 98f4b7d50a..97d8a0f179 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt @@ -35,7 +35,7 @@ object LoginHelper { + "friendships_groups_read,friendships_groups_write,statuses_to_me_read," + "follow_app_official_microblog," + "invitation_write") // weiboCode - private var mTencent: Tencent // QQ + private var mTencent: Tencent? // QQ private var mIWXAPI: IWXAPI // 微信 private lateinit var mWBAPI: IWBAPI // 微博 @@ -59,8 +59,8 @@ object LoginHelper { val s = o.toString() Utils.log("QQLoginComplete::$s") try { - mTencent.openId = o.getString("openid") - mTencent.setAccessToken( + mTencent?.openId = o.getString("openid") + mTencent?.setAccessToken( o.getString("access_token"), o.getString("expires_in") ) @@ -140,16 +140,16 @@ object LoginHelper { @JvmStatic fun loginWithQQ(loginCallback: LoginCallback, activity: Activity) { mLoginCallback = loginCallback - if (!mTencent.isSessionValid) { + if (mTencent?.isSessionValid == false) { Utils.log("QQLogin") - mTencent.login(activity, "all", mQqLoginListener) + mTencent?.login(activity, "all", mQqLoginListener) } } @JvmStatic fun logoutWithQQ() { - if (mTencent.isSessionValid) { - mTencent.logout(HaloApp.getInstance().applicationContext) + if (mTencent?.isSessionValid == true) { + mTencent?.logout(HaloApp.getInstance().applicationContext) } } diff --git a/module_message/.gitignore b/module_message/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/module_message/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/module_message/build.gradle b/module_message/build.gradle new file mode 100644 index 0000000000..7d0ca4bf87 --- /dev/null +++ b/module_message/build.gradle @@ -0,0 +1,95 @@ +if (isRelease.toBoolean()) { + apply plugin: 'com.android.library' +} else { + apply plugin: 'com.android.application' +} +apply plugin: 'org.jetbrains.kotlin.android' +apply plugin: 'kotlin-kapt' +apply plugin: 'kotlin-parcelize' + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + if (!isRelease.toBoolean()) { + applicationId "com.gh.message" + multiDexEnabled true + + buildConfigField "String", "API_HOST", "\"${API_HOST}\"" + buildConfigField "String", "NEW_API_HOST", "\"${NEW_API_HOST}\"" + } + + minSdk rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode rootProject.ext.versionCode + versionName rootProject.ext.versionName + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + sourceSets { + main { + if (isRelease.toBoolean()) { + manifest.srcFile 'src/main/AndroidManifest.xml' + java { + exclude 'manifest/**' + } + } else { + java { + srcDirs = ['src/main/java', "src/message/java"] + } + manifest.srcFile 'src/main/manifest/AndroidManifest.xml' + } + } + } + + buildFeatures { + viewBinding true + } + + kapt { + arguments { + arg("AROUTER_MODULE_NAME", project.name) + } + } + + buildTypes { + debug { + if (!isRelease.toBoolean()) { + buildConfigField "String", "DEV_API_HOST", "\"${DEV_API_HOST}\"" + buildConfigField "String", "NEW_DEV_API_HOST", "\"${NEW_DEV_API_HOST}\"" + } + } + + release { + consumerProguardFiles 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') + kapt "com.alibaba:arouter-compiler:$arouterVersion" + if (!isRelease.toBoolean()) { + implementation "androidx.multidex:multidex:${multiDex}" + } + implementation(project(path: ":module_common")) { + exclude group: 'androidx.swiperefreshlayout' + } + implementation(project(path: ":module_login")) { + exclude group: 'androidx.swiperefreshlayout' + } + implementation(project(':module_core_feature')) { + exclude group: 'androidx.swiperefreshlayout' + } + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' +} \ No newline at end of file diff --git a/module_message/proguard-rules.pro b/module_message/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/module_message/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/module_message/src/androidTest/java/com/gh/gamecenter/message/ExampleInstrumentedTest.kt b/module_message/src/androidTest/java/com/gh/gamecenter/message/ExampleInstrumentedTest.kt new file mode 100644 index 0000000000..13596f095d --- /dev/null +++ b/module_message/src/androidTest/java/com/gh/gamecenter/message/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.gh.gamecenter.message + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.gh.gamecenter.message", appContext.packageName) + } +} \ No newline at end of file diff --git a/module_message/src/main/AndroidManifest.xml b/module_message/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..6722674a67 --- /dev/null +++ b/module_message/src/main/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/HaloApp.kt b/module_message/src/main/java/com/gh/gamecenter/message/HaloApp.kt new file mode 100644 index 0000000000..c5b2d4887d --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/HaloApp.kt @@ -0,0 +1,43 @@ +package com.gh.gamecenter.message + +import android.app.Application +import android.content.res.Configuration +import com.gh.gamecenter.core.iinterface.IApplication +import com.google.auto.service.AutoService + +@AutoService(IApplication::class) +class HaloApp : IApplication { + + override fun attachBaseContext() { + // Do nothing + } + + override fun onCreate(application: Application) { + mApp = application + } + + override fun onLowMemory() { + // Do nothing + } + + override fun onTerminate() { + // Do nothing + } + + override fun onTrimMemory(level: Int) { + // Do nothing + } + + override fun onConfigurationChanged(newConfig: Configuration) { + // Do nothing + } + + companion object { + private lateinit var mApp: Application + + @JvmStatic + fun getInstance(): Application { + return mApp + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageFold.kt similarity index 77% rename from app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt rename to module_message/src/main/java/com/gh/gamecenter/message/entity/MessageFold.kt index 73e33db260..ebf67042c5 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageFold.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageFold.kt @@ -1,4 +1,4 @@ -package com.gh.gamecenter.entity +package com.gh.gamecenter.message.entity import com.gh.gamecenter.feature.entity.UserEntity diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageKeFuEntity.kt similarity index 96% rename from app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt rename to module_message/src/main/java/com/gh/gamecenter/message/entity/MessageKeFuEntity.kt index ad8b5cd387..9e76d55938 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageKeFuEntity.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageKeFuEntity.kt @@ -1,4 +1,4 @@ -package com.gh.gamecenter.entity +package com.gh.gamecenter.message.entity import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.feature.entity.Auth diff --git a/app/src/main/java/com/gh/gamecenter/entity/MessageLinkEntity.kt b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageLinkEntity.kt similarity index 92% rename from app/src/main/java/com/gh/gamecenter/entity/MessageLinkEntity.kt rename to module_message/src/main/java/com/gh/gamecenter/message/entity/MessageLinkEntity.kt index b912ee4e8a..6f05c38438 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/MessageLinkEntity.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/entity/MessageLinkEntity.kt @@ -1,4 +1,4 @@ -package com.gh.gamecenter.entity +package com.gh.gamecenter.message.entity import com.gh.gamecenter.common.entity.CommunityEntity import com.google.gson.annotations.SerializedName diff --git a/module_message/src/main/java/com/gh/gamecenter/message/provider/MessageProviderImpl.kt b/module_message/src/main/java/com/gh/gamecenter/message/provider/MessageProviderImpl.kt new file mode 100644 index 0000000000..e3c5fb5183 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/provider/MessageProviderImpl.kt @@ -0,0 +1,20 @@ +package com.gh.gamecenter.message.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.feature.provider.IMessageProvider +import com.gh.gamecenter.message.view.MessageActivity + +@Route(path = RouteConsts.provider.message, name = "MessageActivity暴露服务") +class MessageProviderImpl : IMessageProvider { + + override fun getIntent(context: Context, entrance: String): Intent { + return MessageActivity.getIntent(context, entrance) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/retrofit/ApiService.kt b/module_message/src/main/java/com/gh/gamecenter/message/retrofit/ApiService.kt new file mode 100644 index 0000000000..f4386a5386 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/retrofit/ApiService.kt @@ -0,0 +1,62 @@ +package com.gh.gamecenter.message.retrofit + +import com.gh.gamecenter.feature.entity.MessageEntity +import com.gh.gamecenter.message.entity.* +import io.reactivex.Observable +import okhttp3.RequestBody +import okhttp3.ResponseBody +import retrofit2.http.* + +interface ApiService { + + @GET("users/{user_id}/messages") + fun getMessage( + @Path("user_id") user_id: String, + @Query("view") type: String, + @Query("timestamp") timestamp: Long, + @Query("page") page: Int + ): Observable> + + /** + * 将消息删除 + */ + @POST("users/{user_id}/messages/{message_id}:inactivate") + fun deleteMessage( + @Path("user_id") userId: String, + @Path("message_id") messageId: String + ): Observable + + /** + * 将消息标记为已读 + */ + @POST("users/{user_id}/messages/{message_id}:read") + fun postMessageRead( + @Path("user_id") userId: String, + @Path("message_id") messageId: String, + @Body body: RequestBody? + ): Observable + + /** + * 获取消息-客服数据 + */ + @GET("users/{user_id}/private_messages") + fun getMessageKeFuData( + @Path("user_id") user_id: String, + @Query("page") page: Int + ): Observable> + + /** + * 将消息删除 + */ + @POST("users/{user_id}/private_messages/{message_id}:inactivate") + fun deleteKaiFuMessage( + @Path("user_id") userId: String, + @Path("message_id") messageId: String + ): Observable + + @GET("users/{user_id}/messages/{resource_id}/fold-list") + fun getMessageFoldList( + @Path("user_id") userId: String, + @Path("resource_id") resourceId: String + ): Observable> +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/retrofit/RetrofitManager.kt b/module_message/src/main/java/com/gh/gamecenter/message/retrofit/RetrofitManager.kt new file mode 100644 index 0000000000..2b59db7c10 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/retrofit/RetrofitManager.kt @@ -0,0 +1,19 @@ +package com.gh.gamecenter.message.retrofit + +import com.gh.gamecenter.common.retrofit.BaseRetrofitManager +import com.gh.gamecenter.common.utils.EnvHelper.getHost +import com.gh.gamecenter.core.utils.SingletonHolder +import com.gh.gamecenter.message.HaloApp + +class RetrofitManager private constructor() : BaseRetrofitManager() { + + val api: ApiService + + init { + val context = HaloApp.getInstance().applicationContext + val okHttpNormalConfig = getOkHttpConfig(context, 0, 2) + api = provideService(okHttpNormalConfig, getHost(), ApiService::class.java) + } + + companion object : SingletonHolder(::RetrofitManager) +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/utils/NewLogUtils.kt b/module_message/src/main/java/com/gh/gamecenter/message/utils/NewLogUtils.kt new file mode 100644 index 0000000000..db9e21a881 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/utils/NewLogUtils.kt @@ -0,0 +1,77 @@ +package com.gh.gamecenter.message.utils + +import com.gh.gamecenter.common.json.JsonObjectBuilder +import com.gh.gamecenter.common.json.json +import com.gh.gamecenter.common.loghub.LoghubUtils +import com.gh.gamecenter.common.utils.LogUtils +import com.lightgame.utils.Utils +import org.json.JSONObject + +object NewLogUtils { + private const val KEY_EVENT = "event" + private const val KEY_GAME_ID = "game_id" + private const val KEY_CONTENT_ID = "content_id" + + private const val LOG_STORE_EVENT = "event" + + private fun log(jsonObject: JSONObject, logStore: String, uploadImmediately: Boolean = false) { + Utils.log("NewLogUtils", jsonObject.toString(4)) + LoghubUtils.log(jsonObject, logStore, uploadImmediately) + } + + fun parseAndPutMeta(): JsonObjectBuilder.() -> Unit = { + val meta = LogUtils.getMetaObject() + val metaKeys = meta.keys() + while (metaKeys.hasNext()) { + val key: String = metaKeys.next().toString() + val value = meta.getString(key) + key to value + } + } + + //点击消息中心-头部图标/赞同/系统图标 + @JvmStatic + fun logMessageInformTopIconClick( + isInform: Boolean, + displayType: String, + ) { + val json = json { + KEY_EVENT to "message_inform_top_icon_click" + "is_inform" to isInform + "display_type" to displayType + parseAndPutMeta().invoke(this) + } + log(json, LOG_STORE_EVENT) + } + + //点击消息通知 + @JvmStatic + fun logMessageInformClick( + contentId: String, + newsId: String, + gameId: String, + gameCollectionId: String, + messageType: String + ) { + val json = json { + KEY_EVENT to "message_inform_click" + KEY_CONTENT_ID to contentId + "news_id" to newsId + KEY_GAME_ID to gameId + "game_collect_id" to gameCollectionId + "message_type" to messageType + parseAndPutMeta().invoke(this) + } + log(json, LOG_STORE_EVENT) + } + + //点击消息通知信息用户头像/昵称 + @JvmStatic + fun logMessageInformUserClick(event: String) { + val json = json { + KEY_EVENT to event + parseAndPutMeta().invoke(this) + } + log(json, LOG_STORE_EVENT) + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/utils/NewsUtils.java b/module_message/src/main/java/com/gh/gamecenter/message/utils/NewsUtils.java new file mode 100644 index 0000000000..4563fa5094 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/utils/NewsUtils.java @@ -0,0 +1,52 @@ +package com.gh.gamecenter.message.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +public class NewsUtils { + public static String getFormattedTime(long time) { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault()); + try { + long day = time * 1000; + String year = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); + format.applyPattern("yyyy"); + String currentYear = format.format(day); + format.applyPattern("yyyyMMdd"); + long today = format.parse(format.format(new Date())).getTime(); + if (day >= today && day < today + 86400 * 1000) { + long min = new Date().getTime() / 1000 - day / 1000; + int hour = (int) (min / (60 * 60)); + if (hour == 0) { + if (min < 60) { + return "刚刚"; + } else { + return (String.format(Locale.getDefault(), "%d分钟前", (int) (min / 60))); + } + } else { + return (String.format(Locale.getDefault(), "%d小时前", hour)); + } + } else if (day >= today - 86400 * 1000 && day < today) { + format.applyPattern("HH:mm"); + return ("昨天 "); + } else if (day >= today - 86400 * 1000 * 7 && day < today - 86400 * 1000) { + format.applyPattern("HH:mm"); + long days = (today - day) / 86400000 + 1; + return String.format(Locale.getDefault(), "%d天前 ", days); + } else if (day < today - 86400 * 1000 * 7 && year.equals(currentYear)) { + format.applyPattern("MM-dd"); + return (format.format(day)); + } else { + format.applyPattern("yyyy-MM-dd"); + return (format.format(day)); + } + } catch (ParseException e) { + e.printStackTrace(); + format.applyPattern("yyyy-MM-dd"); + return (format.format(time * 1000)); + } + } + +} diff --git a/app/src/main/java/com/gh/gamecenter/qa/dialog/AskFollowMoreDialog.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/AskFollowMoreDialog.kt similarity index 84% rename from app/src/main/java/com/gh/gamecenter/qa/dialog/AskFollowMoreDialog.kt rename to module_message/src/main/java/com/gh/gamecenter/message/view/AskFollowMoreDialog.kt index 3c3b7509d4..1c633e3fd3 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/dialog/AskFollowMoreDialog.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/AskFollowMoreDialog.kt @@ -1,4 +1,4 @@ -package com.gh.gamecenter.qa.dialog +package com.gh.gamecenter.message.view import android.app.Activity import android.content.Context @@ -9,14 +9,16 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.gh.common.util.DirectUtils -import com.gh.common.util.NewsUtils +import com.alibaba.android.arouter.launcher.ARouter import com.gh.gamecenter.common.base.fragment.BaseDialogFragment +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.ImageUtils import com.gh.gamecenter.common.utils.toBinding -import com.gh.gamecenter.databinding.DialogAskFollowMoreBinding -import com.gh.gamecenter.databinding.ItemAskFollowMoreBinding import com.gh.gamecenter.feature.entity.UserEntity +import com.gh.gamecenter.core.provider.IDirectProvider +import com.gh.gamecenter.message.databinding.DialogAskFollowMoreBinding +import com.gh.gamecenter.message.databinding.ItemAskFollowMoreBinding +import com.gh.gamecenter.message.utils.NewsUtils class AskFollowMoreDialog : BaseDialogFragment() { @@ -77,7 +79,9 @@ class AskFollowMoreDialog : BaseDialogFragment() { binding.tvUsername.text = user.name binding.tvTime.text = NewsUtils.getFormattedTime(user.time ?: 0) binding.root.setOnClickListener { - DirectUtils.directToHomeActivity(context, list[position].id, "问答-关注", path) + val directUtils = + ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider + directUtils?.directToHomeActivity(context, list[position].id, "问答-关注", path) } } } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragment.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragment.kt new file mode 100644 index 0000000000..f6f6b787bc --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragment.kt @@ -0,0 +1,50 @@ +package com.gh.gamecenter.message.view + +import android.os.Bundle +import android.view.View +import com.gh.gamecenter.common.baselist.ListAdapter +import com.gh.gamecenter.common.baselist.ListFragment +import com.gh.gamecenter.common.utils.viewModelProvider +import com.gh.gamecenter.core.utils.MtaHelper.onEvent +import com.gh.gamecenter.message.R +import com.gh.gamecenter.message.entity.MessageKeFuEntity + +class KeFuFragment : ListFragment() { + private var mAdapter: KeFuFragmentAdapter? = null + private var mUnreadViewModel: MessageUnreadViewModel? = null + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + setNavigationTitle("系统") + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mUnreadViewModel = viewModelProvider() + } + + override fun onLoadDone() { + super.onLoadDone() + mUnreadViewModel?.markRead(MessageUnreadViewModel.ReadType.SERVICE) + } + + override fun provideListAdapter(): ListAdapter<*> { + return if (mAdapter == null) KeFuFragmentAdapter( + context, + this, + mListViewModel, + mEntrance + ).also { mAdapter = it } else mAdapter!! + } + + override fun onListClick(view: View?, position: Int, data: Any?) { + if (view?.id == R.id.message_kaifu_item) { + onEvent("消息中心", "系统_二级列表", "点击卡片") + val keFuEntity: MessageKeFuEntity = data as MessageKeFuEntity + if (!keFuEntity.isRead) { + mListViewModel.postMessageRead(keFuEntity.id) + mAdapter?.notifyDataSetChanged() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragmentAdapter.java similarity index 71% rename from app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java rename to module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragmentAdapter.java index 50762c39f4..089e5026d0 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragmentAdapter.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuFragmentAdapter.java @@ -1,8 +1,7 @@ -package com.gh.gamecenter.message; +package com.gh.gamecenter.message.view; import android.app.Activity; import android.content.Context; -import android.content.Intent; import android.text.Html; import android.text.TextUtils; import android.view.View; @@ -13,37 +12,37 @@ import android.widget.TextView; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.android.arouter.launcher.ARouter; import com.facebook.drawee.generic.GenericDraweeHierarchy; import com.facebook.drawee.generic.RoundingParams; import com.facebook.drawee.view.SimpleDraweeView; -import com.gh.common.util.NewLogUtils; +import com.gh.gamecenter.common.base.activity.BaseActivity; +import com.gh.gamecenter.common.baselist.ListAdapter; import com.gh.gamecenter.common.callback.OnListClickListener; import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.constant.ItemViewType; -import com.gh.common.util.CommentUtils; -import com.gh.gamecenter.common.utils.DialogHelper; -import com.gh.common.util.DirectUtils; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.core.utils.DisplayUtils; import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.common.utils.ImageUtils; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.ImageViewerActivity; -import com.gh.gamecenter.NewsDetailActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.common.viewholder.FooterViewHolder; -import com.gh.gamecenter.common.baselist.ListAdapter; -import com.gh.gamecenter.databinding.MessageKefuItemBinding; +import com.gh.gamecenter.common.constant.ItemViewType; +import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.entity.LinkEntity; -import com.gh.gamecenter.entity.MessageKeFuEntity; -import com.gh.gamecenter.entity.MessageLinkEntity; +import com.gh.gamecenter.common.utils.DialogHelper; +import com.gh.gamecenter.common.utils.ExtensionsKt; +import com.gh.gamecenter.common.utils.ImageUtils; +import com.gh.gamecenter.common.viewholder.FooterViewHolder; +import com.gh.gamecenter.feature.provider.ICommentUtilsProvider; +import com.gh.gamecenter.core.provider.IDirectProvider; +import com.gh.gamecenter.feature.provider.ISubjectProvider; +import com.gh.gamecenter.core.utils.DisplayUtils; +import com.gh.gamecenter.core.utils.GsonUtils; +import com.gh.gamecenter.core.utils.MtaHelper; import com.gh.gamecenter.feature.exposure.ExposureSource; -import com.gh.gamecenter.gamedetail.rating.RatingReplyActivity; +import com.gh.gamecenter.feature.provider.IGameDetailProvider; +import com.gh.gamecenter.feature.provider.ILinkDirectUtilsProvider; import com.gh.gamecenter.login.user.UserManager; -import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity; -import com.gh.gamecenter.subject.SubjectActivity; -import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; +import com.gh.gamecenter.message.R; +import com.gh.gamecenter.message.databinding.MessageKefuItemBinding; +import com.gh.gamecenter.message.entity.MessageKeFuEntity; +import com.gh.gamecenter.message.entity.MessageLinkEntity; +import com.gh.gamecenter.message.utils.NewLogUtils; import com.google.android.flexbox.FlexboxLayout; import com.lightgame.utils.Utils; @@ -64,6 +63,12 @@ public class KeFuFragmentAdapter extends ListAdapter { private int mImageSize; + private IDirectProvider mDirectUtils; + + private ILinkDirectUtilsProvider mLinkDirectUtils; + + private IGameDetailProvider mGameDetailProvider; + public KeFuFragmentAdapter(Context context, OnListClickListener listener, KeFuViewModel listViewModel, String entrance) { super(context); mListViewModel = listViewModel; @@ -71,6 +76,10 @@ public class KeFuFragmentAdapter extends ListAdapter { mEntrance = entrance; mImageSize = (mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(36)) / 3; + + mDirectUtils = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); + mLinkDirectUtils = (ILinkDirectUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.linkDirectUtils).navigation(); + mGameDetailProvider = (IGameDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation(); } @Override @@ -135,11 +144,11 @@ public class KeFuFragmentAdapter extends ListAdapter { draweeView.setImageURI(image); int finalI = i; draweeView.setOnClickListener(v -> { - Intent intent = ImageViewerActivity.getIntent(mContext, - (ArrayList) images, - finalI, - "(消息中心-系统)"); - mContext.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.imageViewerActivity) + .withStringArrayList(EntranceConsts.KEY_URL_LIST, (ArrayList) images) + .withInt(EntranceConsts.KEY_CURRENT, finalI) + .withString(EntranceConsts.KEY_ENTRANCE, "(消息中心-系统)") + .navigation(); MtaHelper.onEvent("消息中心", "系统_二级列表", "点击图片"); }); @@ -243,7 +252,10 @@ public class KeFuFragmentAdapter extends ListAdapter { viewHolder.binding.messageUserBadge.setVisibility(View.GONE); } - CommentUtils.setCommentTime(viewHolder.binding.messageKefuTime, keFuEntity.getTime()); + ICommentUtilsProvider commentUtilsProvider = (ICommentUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.commentUtils).navigation(); + if (commentUtilsProvider != null) { + commentUtilsProvider.setCommentTime(viewHolder.binding.messageKefuTime, keFuEntity.getTime()); + } if (!TextUtils.isEmpty(keFuEntity.getSuggestion())) { StringBuffer suggest = new StringBuffer(); @@ -262,15 +274,15 @@ public class KeFuFragmentAdapter extends ListAdapter { } viewHolder.binding.messageKefuIcon.setOnClickListener(v -> { - if (serviceEntity != null) { + if (serviceEntity != null && mDirectUtils != null) { MtaHelper.onEvent("消息中心", "系统_二级列表", "点击头像"); - DirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统"); + mDirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统"); } }); viewHolder.binding.messageKefuName.setOnClickListener(v -> { - if (serviceEntity != null) { + if (serviceEntity != null && mDirectUtils != null) { MtaHelper.onEvent("消息中心", "系统_二级列表", "点击名字"); - DirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统"); + mDirectUtils.directToHomeActivity(mContext, serviceEntity.getId(), mEntrance, "消息中心-系统"); } }); @@ -307,115 +319,119 @@ public class KeFuFragmentAdapter extends ListAdapter { } MtaHelper.onEvent("消息中心", "系统_二级列表", "点击链接"); + if (mDirectUtils == null || mLinkDirectUtils == null || mGameDetailProvider == null) return; switch (type) { case "游戏": if (!TextUtils.isEmpty(data.getId())) { - GameDetailActivity.startGameDetailActivity(mContext, data.getId(), "", null); + mGameDetailProvider.startGameDetailActivity(mContext, data.getId(), "", null); } break; case "QQ号": if (!TextUtils.isEmpty(data.getQq())) { - DirectUtils.directToQqConversation(mContext, data.getQq()); + mDirectUtils.directToQqConversation(mContext, data.getQq()); } break; case "web": if (!TextUtils.isEmpty(data.getUrl())) { - DirectUtils.directToWebView(mContext, data.getUrl(), "(消息-公告)"); + mDirectUtils.directToWebView(mContext, data.getUrl(), "(消息-公告)"); } break; case "QQ群": if (!TextUtils.isEmpty(data.getKey())) { - DirectUtils.directToQqGroup(mContext, data.getKey()); + mDirectUtils.directToQqGroup(mContext, data.getKey()); } break; case "新闻": if (!TextUtils.isEmpty(data.getId())) { - Intent intent2 = new Intent(mContext, NewsDetailActivity.class); - intent2.putExtra(EntranceConsts.KEY_ENTRANCE, "(消息-公告)"); - intent2.putExtra(EntranceConsts.KEY_NEWSID, data.getId()); - mContext.startActivity(intent2); + ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, "(消息-公告)") + .withString(EntranceConsts.KEY_NEWSID, data.getId()) + .navigation(); } break; case "专题": - if (!TextUtils.isEmpty(data.getId())) { - SubjectActivity.startSubjectActivity(mContext, data.getId() - , null, false, null, "(消息-客服)"); + ISubjectProvider subjectProvider = (ISubjectProvider) ARouter.getInstance().build(RouteConsts.provider.subject).navigation(); + if (!TextUtils.isEmpty(data.getId()) && subjectProvider != null) { + subjectProvider.startSubjectActivity(mContext, data.getId(), null, false, "(消息-客服)"); } break; case "7moor": if (mContext instanceof Activity) { // 去掉七陌支持,跳转到企点 // ImManager.startChatActivity((Activity) mContext, null, null); - DirectUtils.directToWebView(mContext, Constants.TENCENT_QIDIAN_ADDRESS, mEntrance); + mDirectUtils.directToWebView(mContext, Constants.TENCENT_QIDIAN_ADDRESS, mEntrance); } break; case "问题": if (!TextUtils.isEmpty(data.getId())) { - mContext.startActivity(NewQuestionDetailActivity.getIntent(mContext, data.getId(), mEntrance, "(消息-客服)")); + ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + .withString(EntranceConsts.KEY_QUESTIONS_ID, data.getId()) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(mEntrance, "(消息-客服)")) + .navigation(); } break; case "回答": if (!TextUtils.isEmpty(data.getId())) { - DirectUtils.directToAnswerDetail(mContext, data.getId(), mEntrance, "(消息-客服)"); + mDirectUtils.directToAnswerDetail(mContext, data.getId(), mEntrance, "(消息-客服)"); } break; case "社区文章": if (!TextUtils.isEmpty(data.getId()) && data.getCommunity() != null) { - DirectUtils.directToCommunityArticle(mContext, data.getId(), data.getCommunity().getId(), mEntrance, "(消息-客服)"); + mDirectUtils.directToCommunityArticle(mContext, data.getId(), data.getCommunity().getId(), mEntrance, "(消息-客服)"); } break; case "社区专题": if (!TextUtils.isEmpty(data.getId()) && data.getCommunity() != null) { - DirectUtils.directToCommunityColumn(mContext, data.getCommunity(), data.getId(), mEntrance, "(消息-客服)"); + mLinkDirectUtils.directToCommunityColumn(mContext, data.getCommunity(), data.getId(), mEntrance, "(消息-客服)"); } break; case "视频": if (!TextUtils.isEmpty(data.getId())) { - DirectUtils.directToVideoDetail(mContext, data.getId(), VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), false, "", mEntrance, "系统_二级列表", ""); + mDirectUtils.directToVideoDetail(mContext, data.getId(), mEntrance, "系统_二级列表"); } break; case "安利墙评论": if (!TextUtils.isEmpty(data.getId())) { MtaHelper.onEvent("安利墙", "进入", "消息中心"); - DirectUtils.directToAmway(mContext, data.getId(), mEntrance, "(消息-客服)"); + mDirectUtils.directToAmway(mContext, data.getId(), mEntrance, "(消息-客服)"); } break; case "个人主页": - DirectUtils.directToHomeActivity(mContext, UserManager.getInstance().getUserId(), mEntrance, "(消息-客服)"); + mDirectUtils.directToHomeActivity(mContext, UserManager.getInstance().getUserId(), mEntrance, "(消息-客服)"); break; case "游戏详情评论": if (!TextUtils.isEmpty(data.getId())) { - GameDetailActivity.startGameDetailActivity(mContext, data.getId(), "", -1, true, false, false, false, null); + mGameDetailProvider.startGameDetailActivity(mContext, data.getId(), "", -1, true, false, false, false, null); } break; case "订单中心": - DirectUtils.directToOrderCenter(mContext); + mDirectUtils.directToOrderCenter(mContext); break; case "订单详情": if (!TextUtils.isEmpty(data.getId())) { - DirectUtils.directToOrderDetail(mContext, data.getId()); + mDirectUtils.directToOrderDetail(mContext, data.getId()); } break; case "光能记录": case "光能记录获取": - DirectUtils.directToEnergyRecord(mContext); + mDirectUtils.directToEnergyRecord(mContext, 0); break; case "光能记录使用": - DirectUtils.directToEnergyRecord(mContext, 1); + mDirectUtils.directToEnergyRecord(mContext, 1); break; case "抽奖中心": - DirectUtils.directToLotteryParadisePage(mContext); + mDirectUtils.directToLotteryParadisePage(mContext); break; case "我的奖品": - DirectUtils.directToMyPrizePage(mContext); + mDirectUtils.directToMyPrizePage(mContext); break; case "兑换商品": - DirectUtils.directToExchangeCommodityPage(mContext); + mDirectUtils.directToExchangeCommodityPage(mContext); break; case "中奖订单详情": if (!TextUtils.isEmpty(data.getId()) && !TextUtils.isEmpty(data.getActivityId())) { - DirectUtils.directToWinOrderDetail(mContext, data.getId(), data.getActivityId()); + mDirectUtils.directToWinOrderDetail(mContext, data.getId(), data.getActivityId()); } break; default: @@ -431,7 +447,7 @@ public class KeFuFragmentAdapter extends ListAdapter { entity.setText(data.getDocument()); } entity.setCommunity(data.getCommunity()); - DirectUtils.directToLinkPage(mContext, entity, mEntrance, "(消息-客服)"); + mLinkDirectUtils.directToLinkPage(mContext, entity, mEntrance, "(消息-客服)"); break; } } @@ -444,54 +460,58 @@ public class KeFuFragmentAdapter extends ListAdapter { } MtaHelper.onEvent("消息中心", "系统_二级列表", "点击链接"); + if (mDirectUtils == null || mLinkDirectUtils == null) return; + switch (type) { case "home": - DirectUtils.directToHomeActivity(mContext, UserManager.getInstance().getUserId(), mEntrance, "(消息-客服)"); + mDirectUtils.directToHomeActivity(mContext, UserManager.getInstance().getUserId(), mEntrance, "(消息-客服)"); break; case "7moor": case "qidian": - DirectUtils.directToWebView(mContext, Constants.TENCENT_QIDIAN_ADDRESS, mEntrance); + mDirectUtils.directToWebView(mContext, Constants.TENCENT_QIDIAN_ADDRESS, mEntrance); break; case "order_center": - DirectUtils.directToOrderCenter(mContext); + mDirectUtils.directToOrderCenter(mContext); break; case "order_detail": if (!TextUtils.isEmpty(data.getLink())) { - DirectUtils.directToOrderDetail(mContext, data.getLink()); + mDirectUtils.directToOrderDetail(mContext, data.getLink()); } break; case "energy_record": case "energy_record_get": - DirectUtils.directToEnergyRecord(mContext); + mDirectUtils.directToEnergyRecord(mContext, 0); break; case "energy_record_cost": - DirectUtils.directToEnergyRecord(mContext, 1); + mDirectUtils.directToEnergyRecord(mContext, 1); break; case "raffle_center": - DirectUtils.directToLotteryParadisePage(mContext); + mDirectUtils.directToLotteryParadisePage(mContext); break; case "raffle_prize": - DirectUtils.directToMyPrizePage(mContext); + mDirectUtils.directToMyPrizePage(mContext); break; case "exchange_commodity": - DirectUtils.directToExchangeCommodityPage(mContext); + mDirectUtils.directToExchangeCommodityPage(mContext); break; case "win_order_detail": if (!TextUtils.isEmpty(data.getLink()) && !TextUtils.isEmpty(data.getActivityId())) { - DirectUtils.directToWinOrderDetail(mContext, data.getLink(), data.getActivityId()); + mDirectUtils.directToWinOrderDetail(mContext, data.getLink(), data.getActivityId()); } break; case "game_comment_detail": - mContext.startActivity(RatingReplyActivity.getSimpleIntent( - mContext, - data.getGameId(), - data.getLink(), - new ExposureSource("消息中心", ""), - "消息中心-系统消息", - "")); + ExposureSource exposureSource = new ExposureSource("消息中心", ""); + ArrayList exposureSourceList = new ArrayList<>(); + exposureSourceList.add(exposureSource); + ARouter.getInstance().build(RouteConsts.activity.ratingReplyActivity) + .withString(EntranceConsts.KEY_GAMEID, data.getGameId()) + .withString(EntranceConsts.KEY_COMMENTID, data.getLink()) + .withString(EntranceConsts.KEY_EXPOSURE_SOURCE, GsonUtils.toJson(exposureSourceList)) + .withString(EntranceConsts.KEY_ENTRANCE, "消息中心-系统消息") + .navigation(); break; default: - DirectUtils.directToLinkPage(mContext, data, mEntrance, "(消息-客服)"); + mLinkDirectUtils.directToLinkPage(mContext, data, mEntrance, "(消息-客服)"); break; } } diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewHolder.java similarity index 76% rename from app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java rename to module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewHolder.java index fefccb557c..7504738a6f 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuViewHolder.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewHolder.java @@ -1,9 +1,9 @@ -package com.gh.gamecenter.message; +package com.gh.gamecenter.message.view; import com.gh.gamecenter.common.base.BaseRecyclerViewHolder; import com.gh.gamecenter.common.callback.OnListClickListener; -import com.gh.gamecenter.databinding.MessageKefuItemBinding; -import com.gh.gamecenter.entity.MessageKeFuEntity; +import com.gh.gamecenter.message.databinding.MessageKefuItemBinding; +import com.gh.gamecenter.message.entity.MessageKeFuEntity; /** * Created by khy on 2017/4/10. diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewModel.kt similarity index 84% rename from app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt rename to module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewModel.kt index 7af8480545..9dc56edf0d 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuViewModel.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/KeFuViewModel.kt @@ -1,11 +1,11 @@ -package com.gh.gamecenter.message +package com.gh.gamecenter.message.view import android.app.Application import com.gh.gamecenter.common.baselist.ListViewModel -import com.gh.gamecenter.entity.MessageKeFuEntity -import com.gh.gamecenter.login.user.UserManager import com.gh.gamecenter.common.retrofit.Response -import com.gh.gamecenter.retrofit.RetrofitManager +import com.gh.gamecenter.login.user.UserManager +import com.gh.gamecenter.message.entity.MessageKeFuEntity +import com.gh.gamecenter.message.retrofit.RetrofitManager import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -15,9 +15,10 @@ import okhttp3.ResponseBody import org.json.JSONObject class KeFuViewModel(application: Application) : ListViewModel(application) { + private val mApi = RetrofitManager.getInstance().api - override fun provideDataObservable(page: Int): Observable>? { - return RetrofitManager.getInstance().api.getMessageKeFuData(UserManager.getInstance().userId, page) + override fun provideDataObservable(page: Int): Observable> { + return mApi.getMessageKeFuData(UserManager.getInstance().userId, page) } override fun mergeResultLiveData() { @@ -50,8 +51,7 @@ class KeFuViewModel(application: Application) : ListViewModel() { diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageActivity.kt new file mode 100644 index 0000000000..ecabb6866d --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageActivity.kt @@ -0,0 +1,42 @@ +package com.gh.gamecenter.message.view + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.gh.gamecenter.message.R + +class MessageActivity : ToolBarActivity() { + override fun provideNormalIntent(): Intent { + return getTargetIntent( + this, + MessageActivity::class.java, + MessageFragment::class.java, + intent?.extras + ) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + override fun onDarkModeChanged() { + super.onDarkModeChanged() + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + companion object { + fun getIntent(context: Context, entrance: String): Intent { + val bundle = Bundle() + bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) + return getTargetIntent( + context, + MessageActivity::class.java, + MessageFragment::class.java, bundle + ) + } + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageAdapter.kt new file mode 100644 index 0000000000..76aa443d1d --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageAdapter.kt @@ -0,0 +1,163 @@ +package com.gh.gamecenter.message.view + +import android.content.Context +import android.view.ViewGroup +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView +import com.alibaba.android.arouter.launcher.ARouter +import com.gh.gamecenter.common.baselist.ListAdapter +import com.gh.gamecenter.common.callback.OnListClickListener +import com.gh.gamecenter.common.constant.ItemViewType +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.utils.DialogHelper.showDialog +import com.gh.gamecenter.common.utils.goneIf +import com.gh.gamecenter.common.utils.toBinding +import com.gh.gamecenter.common.viewholder.FooterViewHolder +import com.gh.gamecenter.feature.entity.MessageEntity +import com.gh.gamecenter.feature.entity.MessageUnreadEntity +import com.gh.gamecenter.feature.provider.IBindingAdaptersProvider +import com.gh.gamecenter.message.R + +class MessageAdapter( + context: Context, + private val mClickListener: OnListClickListener, + private val mEntrance: String, + private val mViewModel: MessageNormalViewModel +) : ListAdapter(context) { + + private var mUnreadEntity: MessageUnreadEntity? = null + + override fun setListData(updateData: List) { + var oldSize = TOP_ITEM_COUNT + if (mEntityList != null && mEntityList.size > 0) { + oldSize += mEntityList.size + } + mEntityList = ArrayList(updateData) + if (oldSize == TOP_ITEM_COUNT || oldSize > updateData.size) { + notifyDataSetChanged() + } else { + notifyItemRangeInserted(oldSize, updateData.size + TOP_ITEM_COUNT - oldSize) + } + } + + fun setMessageUnreadData(unreadEntity: MessageUnreadEntity) { + mUnreadEntity = unreadEntity + notifyItemChanged(0) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return when (viewType) { + ItemViewType.ITEM_HEADER -> MessageTopViewHolder(parent.toBinding(), mClickListener) + + ItemViewType.ITEM_FOOTER -> FooterViewHolder( + mLayoutInflater.inflate( + R.layout.refresh_footerview, + parent, + false + ), mClickListener + ) + + else -> MessageItemViewHolder(parent.toBinding(), mClickListener, "消息_一级列表") + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (getItemViewType(position)) { + ItemViewType.ITEM_HEADER -> { + val topViewHolder: MessageTopViewHolder = + holder as MessageTopViewHolder + topViewHolder.mBinding.messageInviteName.setTextColor( + ContextCompat.getColor( + mContext, + R.color.text_title + ) + ) + topViewHolder.mBinding.messageVoteName.setTextColor( + ContextCompat.getColor( + mContext, + R.color.text_title + ) + ) + topViewHolder.mBinding.messageServiceName.setTextColor( + ContextCompat.getColor( + mContext, + R.color.text_title + ) + ) + topViewHolder.mBinding.messageVote.background = ContextCompat.getDrawable( + mContext, + R.drawable.reuse_listview_item_style + ) + topViewHolder.mBinding.messageService.background = ContextCompat.getDrawable( + mContext, + R.drawable.reuse_listview_item_style + ) + topViewHolder.mBinding.messageInvite.background = ContextCompat.getDrawable( + mContext, + R.drawable.reuse_listview_item_style + ) + if (mUnreadEntity != null) { + val provider = ARouter.getInstance().build(RouteConsts.provider.bindingAdapters) + .navigation() as? IBindingAdaptersProvider + provider?.setMessageUnread(topViewHolder.mBinding.unreadVote, mUnreadEntity!!.getVoteCount()) + topViewHolder.mBinding.unreadVote.goneIf(mUnreadEntity!!.getVoteCount() == 0) + provider?.setMessageUnread( + topViewHolder.mBinding.unreadInvite, + mUnreadEntity!!.invited + mUnreadEntity!!.systemInvited + ) + topViewHolder.mBinding.unreadInvite.goneIf(mUnreadEntity!!.invited + mUnreadEntity!!.systemInvited == 0) + provider?.setMessageUnread(topViewHolder.mBinding.unreadService, mUnreadEntity!!.service) + topViewHolder.mBinding.unreadService.goneIf(mUnreadEntity!!.service == 0) + } + } + + ItemViewType.ITEM_BODY -> { + val viewHolder: MessageItemViewHolder = + holder as MessageItemViewHolder + val entity: MessageEntity = mEntityList[position - TOP_ITEM_COUNT] + viewHolder.setMessageItem(entity, mContext, mEntrance) + viewHolder.itemView.setOnLongClickListener { + showDialog( + mContext, + "删除消息", + "消息删除将不可恢复,确定删除吗?", + "确定", + "取消", + { mViewModel.deleteMessage(entity.id) }, + {}, + true, + "消息中心", + "消息列表-删除" + ) + false + } + } + + ItemViewType.ITEM_FOOTER -> { + val footerViewHolder = holder as FooterViewHolder + footerViewHolder.initFooterViewHolder(mIsLoading, mIsNetworkError, mIsOver) + footerViewHolder.initItemPadding() + } + } + } + + override fun getItemViewType(position: Int): Int { + return when (position) { + 0 -> { + ItemViewType.ITEM_HEADER + } + + itemCount - 1 -> { + ItemViewType.ITEM_FOOTER + } + + else -> { + ItemViewType.ITEM_BODY + } + } + } + + override fun getItemCount(): Int { + return if (mEntityList == null || mEntityList.isEmpty()) TOP_ITEM_COUNT else mEntityList.size + FOOTER_ITEM_COUNT + TOP_ITEM_COUNT + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageFragment.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageFragment.kt new file mode 100644 index 0000000000..a78e55cdb1 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageFragment.kt @@ -0,0 +1,137 @@ +package com.gh.gamecenter.message.view + +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.RecyclerView +import com.gh.gamecenter.common.baselist.ListFragment +import com.gh.gamecenter.common.baselist.LoadStatus +import com.gh.gamecenter.common.baselist.LoadType +import com.gh.gamecenter.common.utils.ifLogin +import com.gh.gamecenter.common.utils.toDrawable +import com.gh.gamecenter.common.utils.viewModelProvider +import com.gh.gamecenter.common.view.CustomDividerItemDecoration +import com.gh.gamecenter.core.utils.MtaHelper.onEvent +import com.gh.gamecenter.feature.entity.MessageEntity +import com.gh.gamecenter.feature.entity.MessageUnreadEntity +import com.gh.gamecenter.message.HaloApp +import com.gh.gamecenter.message.R +import com.gh.gamecenter.message.utils.NewLogUtils + +class MessageFragment : ListFragment() { + private var mAdapter: MessageAdapter? = null + + private var mUnreadViewModel: MessageUnreadViewModel? = null + + private var mUnreadEntity: MessageUnreadEntity? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mUnreadViewModel = viewModelProvider() + if (savedInstanceState != null) { + mUnreadViewModel?.retry() + } + mUnreadViewModel?.unreadLiveData?.observe(this) { messageUnread: MessageUnreadEntity -> + mUnreadEntity = messageUnread + provideListAdapter().setMessageUnreadData(messageUnread) + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setNavigationTitle(getString(R.string.title_message_center)) + + ifLogin("") {} + } + + override fun provideListViewModel(): MessageNormalViewModel { + val factory: MessageNormalViewModel.Factory = MessageNormalViewModel.Factory(HaloApp.getInstance(), "default") + return ViewModelProviders.of(this, factory).get(MessageNormalViewModel::class.java) + } + + override fun provideListAdapter(): MessageAdapter { + return mAdapter ?: MessageAdapter(requireContext(), this, mEntrance, mListViewModel).also { mAdapter = it } + } + + override fun getItemDecoration(): RecyclerView.ItemDecoration? { + val decoration = CustomDividerItemDecoration(requireContext(), false, true, false, false) + R.drawable.divider_item_line_space_16_h_1px.toDrawable(requireContext())?.let { decoration.setDrawable(it) } + mItemDecoration = decoration + return mItemDecoration + } + + override fun onLoadEmpty() { + super.onLoadDone() + mAdapter!!.loadChange(LoadStatus.LIST_OVER) + mReuseNoData!!.visibility = View.VISIBLE + mReuseNoData!!.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent)) + } + + override fun onLoadError() { + super.onLoadDone() + mAdapter!!.loadChange(LoadStatus.LIST_FAILED) + } + + override fun onListClick(view: View?, position: Int, data: Any?) { + when (view?.id) { + R.id.footerview_item -> { + if (mAdapter!!.isNetworkError) { + mListViewModel.load(LoadType.RETRY) + } + return + } + + R.id.message_vote -> { + onEvent("消息中心", "二级入口", "赞同") + NewLogUtils.logMessageInformTopIconClick(mUnreadEntity?.getVoteCount() != 0, "赞同") + startActivity( + MessageVoteActivity.getIntent( + requireContext(), + MessageNormalFragment.MESSAGE_TYPE_VOTE, + "赞同_二级列表", + mEntrance + ) + ) + return + } + + R.id.message_invite -> { + onEvent("消息中心", "二级入口", "邀请") + NewLogUtils.logMessageInformTopIconClick( + (mUnreadEntity?.invited ?: 0) + (mUnreadEntity?.systemInvited ?: 0) != 0, + "邀请" + ) + startActivity( + MessageInviteActivity.getIntent( + requireContext(), + MessageNormalFragment.MESSAGE_TYPE_INVITE, + "邀请_二级列表", + mEntrance + ) + ) + return + } + + R.id.message_service -> { + onEvent("消息中心", "二级入口", "系统") + NewLogUtils.logMessageInformTopIconClick(mUnreadEntity?.service != 0, "系统") + startActivity(MessageKeFuActivity.getIntent(requireContext(), mEntrance)) + return + } + } + val entity: MessageEntity = data as MessageEntity + val path = "我的光环-消息中心-列表" + MessageItemViewHolder.messageItemClickSkip( + view, + entity, + mEntrance, + "消息_一级列表", + path + ) + if (!entity.read) { + mListViewModel.postMessageRead(entity.id, entity.type) + } + } + +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageInviteActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageInviteActivity.kt new file mode 100644 index 0000000000..f38d8a3ee0 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageInviteActivity.kt @@ -0,0 +1,35 @@ +package com.gh.gamecenter.message.view + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.gh.gamecenter.message.R + +class MessageInviteActivity : ToolBarActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + override fun onDarkModeChanged() { + super.onDarkModeChanged() + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + companion object { + fun getIntent(context: Context, messageType: String, outerInfo: String, entrance: String): Intent { + val bundle = Bundle() + bundle.putString(EntranceConsts.KEY_MESSAGE_TYPE, messageType) + bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) + bundle.putString(EntranceConsts.KEY_OUTER_INFO, outerInfo) + return getTargetIntent( + context, + MessageInviteActivity::class.java, + MessageNormalFragment::class.java, bundle + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageItemViewHolder.java similarity index 74% rename from app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java rename to module_message/src/main/java/com/gh/gamecenter/message/view/MessageItemViewHolder.java index 4f40b95d9d..3ee7c5c076 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageItemViewHolder.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.message; +package com.gh.gamecenter.message.view; import android.content.Context; import android.content.Intent; @@ -11,45 +11,42 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import com.gh.common.util.NewLogUtils; -import com.gh.gamecenter.common.base.activity.BaseActivity; -import com.gh.common.databind.BindingAdapters; -import com.gh.gamecenter.common.constant.Constants; -import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.common.utils.TextHelper; -import com.gh.gamecenter.core.utils.ClickUtils; -import com.gh.common.util.DirectUtils; -import com.gh.gamecenter.common.utils.ImageUtils; -import com.gh.gamecenter.core.utils.DisplayUtils; -import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.common.util.NewsUtils; -import com.gh.gamecenter.CommentDetailActivity; -import com.gh.gamecenter.GameDetailActivity; -import com.gh.gamecenter.MessageDetailActivity; -import com.gh.gamecenter.NewsDetailActivity; -import com.gh.gamecenter.R; -import com.gh.gamecenter.WebActivity; +import com.alibaba.android.arouter.launcher.ARouter; import com.gh.gamecenter.common.base.BaseRecyclerViewHolder; +import com.gh.gamecenter.common.base.activity.BaseActivity; +import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout; import com.gh.gamecenter.common.callback.OnListClickListener; -import com.gh.gamecenter.common.retrofit.Response; -import com.gh.gamecenter.databinding.MessageItemBinding; +import com.gh.gamecenter.common.constant.Constants; +import com.gh.gamecenter.common.constant.EntranceConsts; +import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.entity.CommunityEntity; -import com.gh.gamecenter.entity.MessageEntity; -import com.gh.gamecenter.entity.MessageFold; +import com.gh.gamecenter.common.retrofit.Response; +import com.gh.gamecenter.common.utils.ExtensionsKt; +import com.gh.gamecenter.common.utils.ImageUtils; +import com.gh.gamecenter.common.utils.TextHelper; +import com.gh.gamecenter.core.provider.IWebProvider; +import com.gh.gamecenter.core.utils.ClickUtils; +import com.gh.gamecenter.core.utils.DisplayUtils; +import com.gh.gamecenter.core.utils.GsonUtils; +import com.gh.gamecenter.core.utils.MtaHelper; +import com.gh.gamecenter.feature.entity.MessageEntity; +import com.gh.gamecenter.feature.entity.Questions; import com.gh.gamecenter.feature.entity.UserEntity; import com.gh.gamecenter.feature.exposure.ExposureSource; -import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity; -import com.gh.gamecenter.gamedetail.rating.RatingReplyActivity; +import com.gh.gamecenter.feature.provider.ICommentDetailProvider; +import com.gh.gamecenter.core.provider.IDirectProvider; +import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider; +import com.gh.gamecenter.feature.provider.IGameDetailProvider; +import com.gh.gamecenter.feature.provider.IMessageDetailProvider; +import com.gh.gamecenter.feature.provider.INewCommentDetailProvider; +import com.gh.gamecenter.feature.provider.ISimpleAnswerDetailProvider; import com.gh.gamecenter.login.user.UserManager; -import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity; -import com.gh.gamecenter.qa.article.detail.ArticleDetailActivity; -import com.gh.gamecenter.qa.comment.NewCommentDetailActivity; -import com.gh.gamecenter.feature.entity.Questions; -import com.gh.gamecenter.qa.dialog.AskFollowMoreDialog; -import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity; -import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity; -import com.gh.gamecenter.retrofit.RetrofitManager; -import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; +import com.gh.gamecenter.message.R; +import com.gh.gamecenter.message.databinding.MessageItemBinding; +import com.gh.gamecenter.message.entity.MessageFold; +import com.gh.gamecenter.message.retrofit.RetrofitManager; +import com.gh.gamecenter.message.utils.NewLogUtils; +import com.gh.gamecenter.message.utils.NewsUtils; import com.lightgame.utils.Utils; import java.util.ArrayList; @@ -61,8 +58,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; -import static com.gh.gamecenter.gamedetail.rating.edit.RatingEditActivity.LABEL_REGEX; - /** * Created by khy on 23/03/18. */ @@ -73,6 +68,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder // 外层信息,MTA 用 private String mOuterInfo; + private final static String LABEL_REGEX = "(\\S+)([\\S\\s\n]+)"; + public MessageItemViewHolder(MessageItemBinding binding, OnListClickListener listClickListener, String outerInfo) { @@ -99,7 +96,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder } else { mBinding.messageUserIcon.display(messageEntity.getUserEntity().getBorder(), messageEntity.getUserEntity().getIcon(), null); } - BindingAdapters.showHide(mBinding.messageUnread, !messageEntity.getRead()); + ExtensionsKt.goneIf(mBinding.messageUnread, messageEntity.getRead()); mBinding.messageUserName.setText(messageEntity.getUserEntity().getName()); @@ -554,6 +551,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageOriginal.setLayoutParams(params); }); + IDirectProvider directUtils = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); + mBinding.messageUserMore.setOnClickListener(v -> { MessageEntity.Fold fold = messageEntity.getFold(); if (fold != null && !ClickUtils.isFastDoubleClick(mBinding.messageUserMore.getId(), 1000)) { @@ -563,12 +562,16 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageUserIcon.setOnClickListener(v -> { MtaHelper.onEvent("消息中心", mOuterInfo, "点击头像"); NewLogUtils.logMessageInformUserClick("message_inform_user_icon_click"); - DirectUtils.directToHomeActivity(itemView.getContext(), messageEntity.getUserEntity().getId(), entrance, "消息中心-赞同及邀请"); + if (directUtils != null) { + directUtils.directToHomeActivity(itemView.getContext(), messageEntity.getUserEntity().getId(), entrance, "消息中心-赞同及邀请"); + } }); mBinding.messageUserName.setOnClickListener(v -> { MtaHelper.onEvent("消息中心", mOuterInfo, "点击名字"); NewLogUtils.logMessageInformUserClick("message_inform_user_name_click"); - DirectUtils.directToHomeActivity(itemView.getContext(), messageEntity.getUserEntity().getId(), entrance, "消息中心-邀同及赞请"); + if (directUtils != null) { + directUtils.directToHomeActivity(itemView.getContext(), messageEntity.getUserEntity().getId(), entrance, "消息中心-邀同及赞请"); + } }); } @@ -583,7 +586,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder } private void getFoldList(Context context, String resourceId) { - RetrofitManager + RetrofitManager.Companion .getInstance() .getApi() .getMessageFoldList(UserManager.getInstance().getUserId(), resourceId) @@ -626,6 +629,10 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder Intent intent; String messageType; + + INewCommentDetailProvider newCommentDetailProvider = (INewCommentDetailProvider) ARouter.getInstance().build(RouteConsts.provider.newCommentDetail).navigation(); + IGameCollectionDetailProvider gameCollectionDetailProvider = (IGameCollectionDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameCollectionDetail).navigation(); + switch (entity.getType()) { case "comment_vote": NewLogUtils.logMessageInformClick( @@ -635,12 +642,16 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "赞同" ); if (view.getId() == R.id.message_original) { - intent = NewsDetailActivity.getIntentById(context, entity.getArticle().getId(), BaseActivity.mergeEntranceAndPath(entrance, path)); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + .withString(EntranceConsts.KEY_NEWSID, entity.getArticle().getId()) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .navigation(); } else if (view.getId() == R.id.message_item) { - intent = MessageDetailActivity.getIntentById(context, - entity.getArticle().getId(), -1, false, BaseActivity.mergeEntranceAndPath(entrance, path)); - context.startActivity(intent); + IMessageDetailProvider messageDetailProvider = (IMessageDetailProvider) ARouter.getInstance().build(RouteConsts.provider.messageDetail).navigation(); + if (messageDetailProvider != null) { + context.startActivity(messageDetailProvider.getIntentById(context, + entity.getArticle().getId(), -1, false, BaseActivity.mergeEntranceAndPath(entrance, path))); + } } break; case "reply": @@ -651,11 +662,15 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "普通消息" ); if (view.getId() == R.id.message_original) { - intent = NewsDetailActivity.getIntentById(context, entity.getArticle().getId(), BaseActivity.mergeEntranceAndPath(entrance, path)); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.newsDetailActivity) + .withString(EntranceConsts.KEY_NEWSID, entity.getArticle().getId()) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .navigation(); } else if (view.getId() == R.id.message_item) { - intent = CommentDetailActivity.getIntent(context, entity.getDialogue().getFrom().getId(), entity.getArticle()); - context.startActivity(intent); + ICommentDetailProvider commentDetailProvider = (ICommentDetailProvider) ARouter.getInstance().build(RouteConsts.provider.commentDetail).navigation(); + if (commentDetailProvider != null) { + context.startActivity(commentDetailProvider.getIntent(context, entity.getDialogue().getFrom().getId(), entity.getArticle())); + } } break; case "system_invited": @@ -667,7 +682,11 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ); if (view.getId() == R.id.message_original || view.getId() == R.id.message_item) { MessageEntity.Question question = entity.getQuestion(); - context.startActivity(NewQuestionDetailActivity.getIntent(context, question.getId(), entrance, path)); + ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_QUESTIONS_ID, question.getId()) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); Questions questions = new Questions(); questions.setId(question.getId()); @@ -686,14 +705,13 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", messageType ); - intent = NewQuestionDetailActivity.getSpecifiedCommentIntent( - context, - entity.getQuestion().getId(), - entity.getAnswer().getId(), - entrance, - path - ); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_QUESTIONS_ID, entity.getQuestion().getId()) + .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getAnswer().getId()) + .withBoolean(EntranceConsts.KEY_SCROLL_TO_COMMENT_AREA, true) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); break; case "update-answer": case "follow_question": @@ -704,9 +722,18 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder ); if (view.getId() == R.id.message_original) { MessageEntity.Question question = entity.getQuestion(); - context.startActivity(NewQuestionDetailActivity.getCommentIntent(context, question.getId(), entity.getAnswer().getId(), entrance, path)); + ARouter.getInstance().build(RouteConsts.activity.questionDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_QUESTIONS_ID, question.getId()) + .withString(EntranceConsts.KEY_ANSWER_ID, entity.getAnswer().getId()) + .withBoolean(EntranceConsts.KEY_SCROLL_TO_COMMENT_AREA, true) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); } else if (view.getId() == R.id.message_item) { - context.startActivity(SimpleAnswerDetailActivity.getIntent(context, entity.getAnswer().getId(), entrance, path)); + ISimpleAnswerDetailProvider simpleAnswerDetailProvider = (ISimpleAnswerDetailProvider) ARouter.getInstance().build(RouteConsts.provider.simpleAnswerDetail).navigation(); + if (simpleAnswerDetailProvider != null) { + context.startActivity(simpleAnswerDetailProvider.getIntent(context, entity.getAnswer().getId(), entrance, path)); + } } break; case "reply_answer_comment": @@ -715,15 +742,16 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", "普通消息" ); - intent = NewCommentDetailActivity.Companion.getAnswerCommentIntent( - context, - entity.getAnswer().getId(), - entity.getQuestion().getId(), - entity.getDialogue().getFrom().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getAnswerCommentIntent( + context, + entity.getAnswer().getId(), + entity.getQuestion().getId(), + entity.getDialogue().getFrom().getId(), + entrance, + path + )); + } break; case "answer_comment_vote": case "answer_comment": @@ -737,15 +765,16 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", messageType ); - intent = NewCommentDetailActivity.Companion.getAnswerCommentIntent( - context, - entity.getAnswer().getId(), - entity.getQuestion().getId(), - entity.getComment().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getAnswerCommentIntent( + context, + entity.getAnswer().getId(), + entity.getQuestion().getId(), + entity.getComment().getId(), + entrance, + path + )); + } break; case "community_article_comment_vote": case "community_article_comment": @@ -760,15 +789,13 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder messageType ); community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); - intent = ArticleDetailActivity.getSpecifiedCommentIntent( - context, - community, - entity.getArticle().getId(), - entity.getComment().getId(), - entrance, - path - ); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.articleDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_COMMUNITY_ID, entity.getArticle().getId()) + .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getComment().getId()) + .withParcelable(EntranceConsts.KEY_COMMUNITY_DATA, community) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); break; case "community_article_comment_reply_vote": NewLogUtils.logMessageInformClick( @@ -776,16 +803,17 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", "赞同" ); - intent = NewCommentDetailActivity.Companion.getArticleCommentIntent( - context, - entity.getComment().getTopId(), - entity.getArticle().getCommunityId(), - entity.getArticle().getId(), - entity.getComment().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getArticleCommentIntent( + context, + entity.getComment().getTopId(), + entity.getArticle().getCommunityId(), + entity.getArticle().getId(), + entity.getComment().getId(), + entrance, + path + )); + } break; case "community_article_vote": NewLogUtils.logMessageInformClick( @@ -794,15 +822,12 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "赞同" ); community = new CommunityEntity(entity.getArticle().getCommunityId(), ""); - intent = ArticleDetailActivity.getIntent( - context, - community, - entity.getArticle().getId(), - entrance, - path, - null - ); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.articleDetailActivity) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_COMMUNITY_ARTICLE_ID, entity.getArticle().getId()) + .withParcelable(EntranceConsts.KEY_COMMUNITY_DATA, community) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); break; case "reply_community_article_comment": NewLogUtils.logMessageInformClick( @@ -810,16 +835,17 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", "普通消息" ); - intent = NewCommentDetailActivity.Companion.getArticleCommentIntent( - context, - entity.getDialogue().getTo().getTopId(), - entity.getArticle().getCommunityId(), - entity.getArticle().getId(), - entity.getDialogue().getFrom().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getArticleCommentIntent( + context, + entity.getDialogue().getTo().getTopId(), + entity.getArticle().getCommunityId(), + entity.getArticle().getId(), + entity.getDialogue().getFrom().getId(), + entrance, + path + )); + } break; case "game_comment_vote": NewLogUtils.logMessageInformClick( @@ -828,17 +854,20 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "赞同" ); - GameDetailActivity.startGameDetailActivity( - context, - entity.getGame().getId(), - BaseActivity.mergeEntranceAndPath(entrance, path), - -1, - true, - false, - false, - false, - null - ); + IGameDetailProvider gameDetailProvider = (IGameDetailProvider) ARouter.getInstance().build(RouteConsts.provider.gameDetail).navigation(); + if (gameDetailProvider != null) { + gameDetailProvider.startGameDetailActivity( + context, + entity.getGame().getId(), + BaseActivity.mergeEntranceAndPath(entrance, path), + -1, + true, + false, + false, + false, + null + ); + } break; case "game_comment_reply": case "game_comment_reply_vote": @@ -853,16 +882,17 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", messageType ); - intent = RatingReplyActivity.getSpecifiedCommentIntent( - context, - entity.getGame().getId(), - entity.getReply().getCommentId(), - entity.getReply().getId(), - new ExposureSource("消息中心", ""), - entrance, - path - ); - context.startActivity(intent); + ExposureSource exposureSource = new ExposureSource("消息中心", ""); + ArrayList exposureSourceList = new ArrayList<>(); + exposureSourceList.add(exposureSource); + ARouter.getInstance().build(RouteConsts.activity.ratingReplyActivity) + .withString(EntranceConsts.KEY_GAMEID, entity.getGame().getId()) + .withString(EntranceConsts.KEY_COMMENTID, entity.getGame().getId()) + .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getReply().getId()) + .withString(EntranceConsts.KEY_EXPOSURE_SOURCE, GsonUtils.toJson(exposureSourceList)) + .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(entrance, path)) + .withString(EntranceConsts.KEY_PATH, path) + .navigation(); break; case "video_vote": NewLogUtils.logMessageInformClick( @@ -870,15 +900,12 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", "赞同" ); - DirectUtils.directToVideoDetail( + IDirectProvider directUtils = (IDirectProvider) ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation(); + directUtils.directToVideoDetail( context, entity.getVideo().getId(), - VideoDetailContainerViewModel.Location.SINGLE_VIDEO.getValue(), - false, - "", entrance, - outerInfo, - "" + outerInfo ); break; case "video_comment": @@ -893,12 +920,11 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", messageType ); - intent = ForumVideoDetailActivity.Companion.getSpecifiedCommentIntent( - context, - entity.getVideo().getId(), - entity.getComment().getId() - ); - context.startActivity(intent); + ARouter.getInstance().build(RouteConsts.activity.forumVideoDetailActivity) + .withString(EntranceConsts.KEY_VIDEO_ID, entity.getVideo().getId()) + .withString(EntranceConsts.KEY_TOP_COMMENT_ID, entity.getComment().getId()) + .withInt(BaseFragment_TabLayout.PAGE_INDEX, 1) + .navigation(); break; case "video_comment_reply": NewLogUtils.logMessageInformClick( @@ -912,15 +938,16 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder } else { commentId = entity.getDialogue().getTo().getId(); } - intent = NewCommentDetailActivity.Companion.getVideoCommentIntent( - context, - commentId, - entity.getVideo().getId(), - entity.getDialogue().getFrom().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getVideoCommentIntent( + context, + commentId, + entity.getVideo().getId(), + entity.getDialogue().getFrom().getId(), + entrance, + path + )); + } break; case "video_comment_reply_vote": NewLogUtils.logMessageInformClick( @@ -928,24 +955,28 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder "", "", "", "赞同" ); - intent = NewCommentDetailActivity.Companion.getVideoCommentIntent( - context, - entity.getComment().getTopId(), - entity.getVideo().getId(), - entity.getComment().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getVideoCommentIntent( + context, + entity.getComment().getTopId(), + entity.getVideo().getId(), + entity.getComment().getId(), + entrance, + path + )); + } break; case "reply_activity_comment": case "activity_comment_vote": case "activity_comment_reply_vote": - if (view.getId() == R.id.message_original) { - context.startActivity(WebActivity.getIntent(context, entity.getActivity().getUrl(), true)); - } else if (view.getId() == R.id.message_item) { - context.startActivity(WebActivity.getIntent(context, entity.getActivity().getUrlComment(), true)); + IWebProvider webProvider = (IWebProvider) ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation(); + if (webProvider != null) { + if (view.getId() == R.id.message_original) { + context.startActivity(webProvider.getIntent(context, entity.getActivity().getUrl(), true)); + } else if (view.getId() == R.id.message_item) { + context.startActivity(webProvider.getIntent(context, entity.getActivity().getUrlComment(), true)); + } } break; @@ -955,12 +986,13 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getGameList().getId(), "普通消息" ); - intent = GameCollectionDetailActivity.Companion.getSpecifiedCommentIntent( - context, - entity.getGameList().getId(), - entity.getComment().getId() - ); - context.startActivity(intent); + if (gameCollectionDetailProvider != null) { + context.startActivity(gameCollectionDetailProvider.getSpecifiedCommentIntent( + context, + entity.getGameList().getId(), + entity.getComment().getId() + )); + } break; case "game_list_comment_vote": NewLogUtils.logMessageInformClick( @@ -968,23 +1000,25 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getGameList().getId(), "赞同" ); - if (TextUtils.isEmpty(entity.getComment().getTopId())) { - intent = GameCollectionDetailActivity.Companion.getSpecifiedCommentIntent( - context, - entity.getGameList().getId(), - entity.getComment().getId() - ); - } else { - intent = NewCommentDetailActivity.Companion.getGameCollectionCommentIntent( - context, - entity.getComment().getTopId(), - entity.getGameList().getId(), - entity.getComment().getId(), - entrance, - path - ); + if (gameCollectionDetailProvider != null && newCommentDetailProvider != null) { + if (TextUtils.isEmpty(entity.getComment().getTopId())) { + intent = gameCollectionDetailProvider.getSpecifiedCommentIntent( + context, + entity.getGameList().getId(), + entity.getComment().getId() + ); + } else { + intent = newCommentDetailProvider.getGameCollectionCommentIntent( + context, + entity.getComment().getTopId(), + entity.getGameList().getId(), + entity.getComment().getId(), + entrance, + path + ); + } + context.startActivity(intent); } - context.startActivity(intent); break; case "game_list_comment_reply": NewLogUtils.logMessageInformClick( @@ -992,15 +1026,17 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getGameList().getId(), "普通消息" ); - intent = NewCommentDetailActivity.Companion.getGameCollectionCommentIntent( - context, - entity.getComment().getTopId(), - entity.getGameList().getId(), - entity.getComment().getId(), - entrance, - path - ); - context.startActivity(intent); + if (newCommentDetailProvider != null) { + context.startActivity(newCommentDetailProvider.getGameCollectionCommentIntent( + context, + entity.getComment().getTopId(), + entity.getGameList().getId(), + entity.getComment().getId(), + entrance, + path + )); + } + break; case "game_list_vote": NewLogUtils.logMessageInformClick( @@ -1008,12 +1044,13 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder entity.getGameList().getId(), "赞同" ); - intent = GameCollectionDetailActivity.getIntent( - context, - entity.getGameList().getId(), - false - ); - context.startActivity(intent); + if (gameCollectionDetailProvider != null) { + context.startActivity(gameCollectionDetailProvider.getIntent( + context, + entity.getGameList().getId(), + false + )); + } break; } } diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageKeFuActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageKeFuActivity.kt new file mode 100644 index 0000000000..76f0fb0253 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageKeFuActivity.kt @@ -0,0 +1,37 @@ +package com.gh.gamecenter.message.view + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.gh.gamecenter.message.R + +class MessageKeFuActivity : ToolBarActivity() { + override fun provideNormalIntent(): Intent? { + return getTargetIntent(this, MessageKeFuActivity::class.java, KeFuFragment::class.java) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + override fun onDarkModeChanged() { + super.onDarkModeChanged() + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + companion object { + fun getIntent(context: Context, entrance: String): Intent { + val bundle = Bundle() + bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) + return getTargetIntent( + context, + MessageKeFuActivity::class.java, + KeFuFragment::class.java, bundle + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalAdapter.java similarity index 95% rename from app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java rename to module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalAdapter.java index 96d4a2968c..f1ad02997b 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageNormalAdapter.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalAdapter.java @@ -1,4 +1,4 @@ -package com.gh.gamecenter.message; +package com.gh.gamecenter.message.view; import android.content.Context; import android.view.View; @@ -6,14 +6,14 @@ import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView; +import com.gh.gamecenter.common.baselist.ListAdapter; import com.gh.gamecenter.common.callback.OnListClickListener; import com.gh.gamecenter.common.constant.ItemViewType; import com.gh.gamecenter.common.utils.DialogHelper; -import com.gh.gamecenter.R; import com.gh.gamecenter.common.viewholder.FooterViewHolder; -import com.gh.gamecenter.common.baselist.ListAdapter; -import com.gh.gamecenter.databinding.MessageItemBinding; -import com.gh.gamecenter.entity.MessageEntity; +import com.gh.gamecenter.feature.entity.MessageEntity; +import com.gh.gamecenter.message.R; +import com.gh.gamecenter.message.databinding.MessageItemBinding; /** * Created by khy on 23/03/18. diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalFragment.java similarity index 90% rename from app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java rename to module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalFragment.java index ff27dd6b43..3fa54b9d0b 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageNormalFragment.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageNormalFragment.java @@ -1,23 +1,21 @@ -package com.gh.gamecenter.message; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; +package com.gh.gamecenter.message.view; import android.os.Bundle; - -import androidx.annotation.Nullable; -import androidx.recyclerview.widget.RecyclerView; - import android.view.View; -import com.gh.gamecenter.common.constant.EntranceConsts; -import com.gh.gamecenter.R; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.ViewModelProviders; +import androidx.recyclerview.widget.RecyclerView; + import com.gh.gamecenter.common.baselist.ListAdapter; import com.gh.gamecenter.common.baselist.ListFragment; import com.gh.gamecenter.common.baselist.LoadType; +import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.view.CustomDividerItemDecoration; -import com.gh.gamecenter.entity.MessageEntity; -import com.halo.assistant.HaloApp; +import com.gh.gamecenter.message.HaloApp; +import com.gh.gamecenter.message.R; +import com.gh.gamecenter.feature.entity.MessageEntity; /** * Created by khy on 24/03/18. @@ -44,13 +42,12 @@ public class MessageNormalFragment extends ListFragment(application) { - override fun provideDataObservable(page: Int): Observable>? { - return RetrofitManager.getInstance().api.getMessage( + private val mApi = RetrofitManager.getInstance().api + + override fun provideDataObservable(page: Int): Observable> { + return mApi.getMessage( UserManager.getInstance().userId, messageType, Utils.getTime(getApplication()), @@ -35,10 +37,8 @@ class MessageNormalViewModel( mResultLiveData.addSource>(mListLiveData) { mResultLiveData.postValue(it) } } - fun deleteMessage(messageId: String) { - RetrofitManager.getInstance().api - .deleteMessage(UserManager.getInstance().userId, messageId) + mApi.deleteMessage(UserManager.getInstance().userId, messageId) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response() { @@ -61,7 +61,6 @@ class MessageNormalViewModel( } fun postMessageRead(messageId: String, type: String) { - // 更新本地数据以及页面 val listData = mListLiveData.value if (listData != null) { @@ -78,7 +77,7 @@ class MessageNormalViewModel( val jsonObject = JSONObject() jsonObject.put("type", type) val body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString()) - RetrofitManager.getInstance().api.postMessageRead(UserManager.getInstance().userId, messageId, body) + mApi.postMessageRead(UserManager.getInstance().userId, messageId, body) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response() { diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageTopViewHolder.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageTopViewHolder.kt new file mode 100644 index 0000000000..2224cde792 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageTopViewHolder.kt @@ -0,0 +1,17 @@ +package com.gh.gamecenter.message.view + +import com.gh.gamecenter.common.base.BaseRecyclerViewHolder +import com.gh.gamecenter.common.callback.OnListClickListener +import com.gh.gamecenter.message.databinding.MessageItemTopBinding + +class MessageTopViewHolder(binding: MessageItemTopBinding, listClickListener: OnListClickListener) : + BaseRecyclerViewHolder(binding.root, listClickListener) { + var mBinding: MessageItemTopBinding + + init { + mBinding = binding + mBinding.messageInvite.setOnClickListener(this) + mBinding.messageService.setOnClickListener(this) + mBinding.messageVote.setOnClickListener(this) + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageUnreadViewModel.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageUnreadViewModel.kt new file mode 100644 index 0000000000..03f4570267 --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageUnreadViewModel.kt @@ -0,0 +1,75 @@ +package com.gh.gamecenter.message.view + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MediatorLiveData +import com.alibaba.android.arouter.launcher.ARouter +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider +import com.gh.gamecenter.feature.entity.MessageUnreadEntity + +class MessageUnreadViewModel(application: Application) : AndroidViewModel(application) { + + private val mProvider = ARouter.getInstance().build(RouteConsts.provider.messageUnreadRepository) + .navigation() as? IMessageUnreadRepositoryProvider + val unreadLiveData: MediatorLiveData? = mProvider?.getUnreadLiveData() + + fun retry() { + mProvider?.loadMessageUnreadData() + } + + fun markRead(readType: ReadType?) { + val cacheUnreadData = mProvider?.getUnreadLiveData()?.value ?: return + var isChange = false + when (readType) { + ReadType.SERVICE -> if (cacheUnreadData.service != 0) { + cacheUnreadData.service = 0 + isChange = true + } + + ReadType.VOTE -> if (cacheUnreadData.getVoteCount() != 0) { + cacheUnreadData.resetVote() + isChange = true + } + + ReadType.INVITE -> if (cacheUnreadData.invited + cacheUnreadData.systemInvited != 0) { + cacheUnreadData.invited = 0 + cacheUnreadData.systemInvited = 0 + isChange = true + } + + ReadType.DEFAULT -> if (cacheUnreadData.answer + cacheUnreadData.answerComment + cacheUnreadData.reply + + cacheUnreadData.followQuestion + cacheUnreadData.replyAnswerComment + + cacheUnreadData.communityArticleComment + cacheUnreadData.replyCommunityArticleComment != 0 + ) { + cacheUnreadData.answer = 0 + cacheUnreadData.answerComment = 0 + cacheUnreadData.reply = 0 + cacheUnreadData.followQuestion = 0 + cacheUnreadData.replyAnswerComment = 0 + cacheUnreadData.communityArticleComment = 0 + cacheUnreadData.replyCommunityArticleComment = 0 + isChange = true + } + + ReadType.FANS -> if (cacheUnreadData.fans != 0) { + cacheUnreadData.fans = 0 + isChange = true + } + + else -> {} + } + if (isChange) { + // 重新统计总数 + cacheUnreadData.total = cacheUnreadData.getVoteCount() + + cacheUnreadData.service + cacheUnreadData.answer + cacheUnreadData.reply + + cacheUnreadData.followQuestion + cacheUnreadData.replyAnswerComment + cacheUnreadData.answerComment + + cacheUnreadData.systemInvited + cacheUnreadData.fans + mProvider.getUnreadLiveData()?.postValue(cacheUnreadData) + } + } + + enum class ReadType { + DEFAULT, VOTE, INVITE, SERVICE, FANS + } +} \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/MessageVoteActivity.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageVoteActivity.kt new file mode 100644 index 0000000000..d3237a6b6d --- /dev/null +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/MessageVoteActivity.kt @@ -0,0 +1,35 @@ +package com.gh.gamecenter.message.view + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.gh.gamecenter.message.R + +class MessageVoteActivity : ToolBarActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + override fun onDarkModeChanged() { + super.onDarkModeChanged() + updateStatusBarColor(R.color.background_white, R.color.background_white) + } + + companion object { + fun getIntent(context: Context, messageType: String, outerInfo: String, entrance: String): Intent { + val bundle = Bundle() + bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) + bundle.putString(EntranceConsts.KEY_MESSAGE_TYPE, messageType) + bundle.putString(EntranceConsts.KEY_OUTER_INFO, outerInfo) + return getTargetIntent( + context, + MessageVoteActivity::class.java, + MessageNormalFragment::class.java, bundle + ) + } + } +} \ No newline at end of file diff --git a/module_message/src/main/manifest/AndroidManifest.xml b/module_message/src/main/manifest/AndroidManifest.xml new file mode 100644 index 0000000000..c3aa011649 --- /dev/null +++ b/module_message/src/main/manifest/AndroidManifest.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/message_kefu_icon.webp b/module_message/src/main/res/drawable-hdpi/message_kefu_icon.webp similarity index 100% rename from app/src/main/res/drawable-hdpi/message_kefu_icon.webp rename to module_message/src/main/res/drawable-hdpi/message_kefu_icon.webp diff --git a/app/src/main/res/drawable-xxhdpi/message_invite_icon.webp b/module_message/src/main/res/drawable-xxhdpi/message_invite_icon.webp similarity index 100% rename from app/src/main/res/drawable-xxhdpi/message_invite_icon.webp rename to module_message/src/main/res/drawable-xxhdpi/message_invite_icon.webp diff --git a/app/src/main/res/drawable-xxhdpi/message_service_icon.webp b/module_message/src/main/res/drawable-xxhdpi/message_service_icon.webp similarity index 100% rename from app/src/main/res/drawable-xxhdpi/message_service_icon.webp rename to module_message/src/main/res/drawable-xxhdpi/message_service_icon.webp diff --git a/app/src/main/res/drawable-xxhdpi/message_vote_icon.webp b/module_message/src/main/res/drawable-xxhdpi/message_vote_icon.webp similarity index 100% rename from app/src/main/res/drawable-xxhdpi/message_vote_icon.webp rename to module_message/src/main/res/drawable-xxhdpi/message_vote_icon.webp diff --git a/app/src/main/res/drawable-xxxhdpi/ic_id.webp b/module_message/src/main/res/drawable-xxxhdpi/ic_id.webp similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_id.webp rename to module_message/src/main/res/drawable-xxxhdpi/ic_id.webp diff --git a/app/src/main/res/drawable/shape_message_unread_hint.xml b/module_message/src/main/res/drawable/shape_message_unread_hint.xml similarity index 100% rename from app/src/main/res/drawable/shape_message_unread_hint.xml rename to module_message/src/main/res/drawable/shape_message_unread_hint.xml diff --git a/app/src/main/res/layout/dialog_ask_follow_more.xml b/module_message/src/main/res/layout/dialog_ask_follow_more.xml similarity index 100% rename from app/src/main/res/layout/dialog_ask_follow_more.xml rename to module_message/src/main/res/layout/dialog_ask_follow_more.xml diff --git a/app/src/main/res/layout/item_ask_follow_more.xml b/module_message/src/main/res/layout/item_ask_follow_more.xml similarity index 100% rename from app/src/main/res/layout/item_ask_follow_more.xml rename to module_message/src/main/res/layout/item_ask_follow_more.xml diff --git a/app/src/main/res/layout/message_item.xml b/module_message/src/main/res/layout/message_item.xml similarity index 100% rename from app/src/main/res/layout/message_item.xml rename to module_message/src/main/res/layout/message_item.xml diff --git a/app/src/main/res/layout/message_item_top.xml b/module_message/src/main/res/layout/message_item_top.xml similarity index 100% rename from app/src/main/res/layout/message_item_top.xml rename to module_message/src/main/res/layout/message_item_top.xml diff --git a/app/src/main/res/layout/message_kefu_item.xml b/module_message/src/main/res/layout/message_kefu_item.xml similarity index 100% rename from app/src/main/res/layout/message_kefu_item.xml rename to module_message/src/main/res/layout/message_kefu_item.xml diff --git a/module_message/src/main/res/values/strings.xml b/module_message/src/main/res/values/strings.xml new file mode 100644 index 0000000000..41036eef89 --- /dev/null +++ b/module_message/src/main/res/values/strings.xml @@ -0,0 +1,7 @@ + + 消息中心模块 + 消息中心 + 复制ID + 光环客服 + 网络错误 + \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java b/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java new file mode 100644 index 0000000000..2ef5622d0c --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/CheckLoginUtils.java @@ -0,0 +1,61 @@ +package com.gh.gamecenter.message; + +import android.app.Activity; +import android.content.Context; +import android.text.TextUtils; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.gh.gamecenter.common.constant.Constants; +import com.gh.gamecenter.common.constant.EntranceConsts; +import com.gh.gamecenter.common.constant.RouteConsts; +import com.gh.gamecenter.common.utils.NetworkUtils; +import com.gh.gamecenter.core.utils.CurrentActivityHolder; +import com.gh.gamecenter.core.utils.SPUtils; +import com.gh.gamecenter.login.user.UserManager; +import com.gh.gamecenter.login.utils.QuickLoginHelper; +import com.lightgame.utils.Utils; + + +/** + * Created by khy on 28/06/17. + */ + +public class CheckLoginUtils { + + public static void checkLogin(Context context, String entrance, OnLoginListener listener) { + if (!isLogin()) { + if (listener != null) Utils.toast(context, "需要登录"); + + if (SPUtils.getBoolean(Constants.SP_HAS_GET_PHONE_INFO) || NetworkUtils.isOpenMobileData(context)) { + startQuickLogin(context, entrance); + } else { + ARouter.getInstance().build(RouteConsts.activity.loginActivity) + .withString(EntranceConsts.KEY_ENTRANCE, entrance) + .navigation(); + } + } else { + if (listener != null) { + listener.onLogin(); + } + } + } + + private static void startQuickLogin(Context context, String entrance) { + // 需要确保传入的 context 不为 application + if (!(context instanceof Activity)) { + context = CurrentActivityHolder.getCurrentActivity(); + } + + if (context != null) { + QuickLoginHelper.startLogin(context, entrance); + } + } + + public static boolean isLogin() { + return !TextUtils.isEmpty(UserManager.getInstance().getToken()); + } + + public interface OnLoginListener { + void onLogin(); + } +} diff --git a/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt b/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt new file mode 100644 index 0000000000..eda3f5bb5b --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/MessageModuleApp.kt @@ -0,0 +1,101 @@ +package com.gh.gamecenter.message + +import android.os.Build +import androidx.multidex.MultiDexApplication +import com.alibaba.android.arouter.launcher.ARouter +import com.facebook.animated.giflite.GifDecoder +import com.facebook.common.logging.FLog +import com.facebook.imageformat.DefaultImageFormats +import com.facebook.imagepipeline.core.ImagePipelineConfig +import com.facebook.imagepipeline.core.ImageTranscoderType +import com.facebook.imagepipeline.core.MemoryChunkType +import com.facebook.imagepipeline.decoder.ImageDecoderConfig +import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.image.EmptyDecoder +import com.gh.gamecenter.common.utils.ImageUtils.disableAnimatedImage +import com.gh.gamecenter.common.utils.ImageUtils.isFrescoInitialized +import com.gh.gamecenter.core.iinterface.IApplication +import com.gh.gamecenter.core.utils.SPUtils +import com.github.piasy.biv.BigImageViewer +import com.github.piasy.biv.loader.fresco.FrescoImageLoader +import java.util.* + +class MessageModuleApp : MultiDexApplication() { + + private val mApplicationList = ServiceLoader.load(IApplication::class.java, this.javaClass.classLoader) + + override fun onCreate() { + super.onCreate() + initArouter() + mApp = this + for (application in mApplicationList) { + application.onCreate(this) + } + initFresco() + SPUtils.setBoolean(Constants.SP_IS_DEV_ENV, true) + } + + private fun initArouter() { + if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 + ARouter.openLog() // 打印日志 + ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险) + } + ARouter.init(this) // 尽可能早,推荐在Application中初始化 + } + + fun initFresco() { + // 初始化 Fresco(BigImageViewer 已包含Fresco) + if (!isFrescoInitialized()) { + // 在 5.0 & 5.1 设备上 disable native code,原因是应用附带了 arm64 的 SO 以后在部分 5.0/5.1 设备 + // 会出现找不到 arm64 so 的情况,具体可见 + // https://sentry.ghzs.com/organizations/lightgame/issues/53107/ + // 所以这里尝试在 5.0 & 5.1 设备上关闭 fresco 的 native 解码,应该会让 5.0 & 5.1 的设备 OOM 概率提高,但先试试效果 + // 同时禁用动图 + val pipelineConfigBuilder = ImagePipelineConfig.newBuilder(this) + val decodeConfigBuilder = ImageDecoderConfig.newBuilder() + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP + || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1 + ) { + pipelineConfigBuilder.setMemoryChunkType(MemoryChunkType.BUFFER_MEMORY) + .setImageTranscoderType(ImageTranscoderType.JAVA_TRANSCODER) + decodeConfigBuilder.overrideDecoder(DefaultImageFormats.GIF, GifDecoder()).build() + val manufacture = Build.MANUFACTURER.lowercase(Locale.getDefault()) + + // OPPO 和 VIVO 的 5.1.1 设备还会去加载 WEBP_ANIMATED 的 SO, + // 实测没有发现有地方使用 WEBP_ANIMATED 的图片,这里用空占位图来替换 WEBP 动图 + if ("oppo" == manufacture || "vivo" == manufacture) { + decodeConfigBuilder.overrideDecoder( + DefaultImageFormats.WEBP_ANIMATED, + EmptyDecoder() + ).build() + } + pipelineConfigBuilder + .setImageDecoderConfig(decodeConfigBuilder.build()) + .experiment() + .setNativeCodeDisabled(true) + + // 图片仅加载静态图片 + disableAnimatedImage() + } + try { + BigImageViewer.initialize( + FrescoImageLoader.with( + this, + pipelineConfigBuilder.build() + ) + ) + } catch (e: Throwable) { + e.printStackTrace() + } + FLog.setMinimumLoggingLevel(FLog.VERBOSE) + } + } + + companion object { + private lateinit var mApp: MessageModuleApp + + fun getInstance(): MessageModuleApp { + return mApp + } + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt new file mode 100644 index 0000000000..025fedca88 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/AppProviderImpl.kt @@ -0,0 +1,99 @@ +package com.gh.gamecenter.message.provider + +import android.app.Activity +import android.app.Application +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IAppProvider +import com.gh.gamecenter.core.provider.IFlavorProvider +import com.gh.gamecenter.message.HaloApp +import com.gh.gamecenter.message.R + +@Route(path = RouteConsts.provider.app, name = "Application暴露服务") +class AppProviderImpl : IAppProvider { + override fun init(context: Context?) { + // Do nothing + } + + override fun getAppName(): String { + return HaloApp.getInstance().getString(R.string.app_name) + } + + override fun getGid(): String { + return "" + } + + override fun refreshGid() { + // Do nothing + } + + override fun getOaid(): String { + return "" + } + + override fun getChannel(): String { + return "" + } + + override fun setChannel(channel: String) { + // Do nothing + } + + override fun getUserAgent(): String { + return "" + } + + override fun getServerUserMark(): String { + return "" + } + + override fun getDeviceRamSize(): Long { + return 0L + } + + override fun getTemporaryLocalDeviceId(): String { + return "" + } + + override fun isUserAcceptPrivacyPolicy(context: Context): Boolean { + return true + } + + override fun put(key: String, any: Any) { + // Do nothing + } + + override fun get(key: String, isRemove: Boolean): Any { + return "" + } + + override fun getFlavorProvider(): IFlavorProvider { + return object : IFlavorProvider { + override fun getChannelStr(application: Application): String { + return "" + } + + override fun init(application: Application, activity: Activity, activateRatio: Int) { + // do nothing + } + + override fun logEvent(content: String) { + // do nothing + } + + override fun logCoreEvent() { + // do nothing + } + } + } + + override fun getFlavor(): String { + return "internal" + } + + override fun getIsBrandNewInstall(): Boolean { + return false + } + +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt new file mode 100644 index 0000000000..dc18373c97 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/BindingAdaptersProviderImpl.kt @@ -0,0 +1,34 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import android.widget.LinearLayout +import android.widget.TextView +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.entity.GameEntity +import com.gh.gamecenter.feature.provider.IBindingAdaptersProvider + +@Route(path = RouteConsts.provider.bindingAdapters, name = "BindingAdapters暴露服务") +class BindingAdaptersProviderImpl : IBindingAdaptersProvider { + override fun setGameName( + view: TextView, + game: GameEntity, + isShowPlatform: Boolean, + isShowSuffix: Boolean + ) { + ToastUtils.toast("调用->BindingAdaptersProviderImpl.setGameName") + } + + override fun setGameTags(layout: LinearLayout, gameEntity: GameEntity) { + ToastUtils.toast("调用->BindingAdaptersProviderImpl.setGameTags") + } + + override fun setMessageUnread(view: TextView, unreadCount: Int) { + ToastUtils.toast("调用->BindingAdaptersProviderImpl.setMessageUnread") + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt new file mode 100644 index 0000000000..58e4ff63a5 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/BuildConfigImpl.kt @@ -0,0 +1,35 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IBuildConfigProvider +import com.gh.gamecenter.message.BuildConfig + +@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务") +class BuildConfigImpl : IBuildConfigProvider { + override fun init(context: Context?) { + // Do nothing + } + + override fun getApplicationId(): String = BuildConfig.APPLICATION_ID + + override fun getVersionName(): String = BuildConfig.VERSION_NAME + + override fun getExposureVersion(): String = "" + + override fun isDebug(): Boolean = BuildConfig.DEBUG + + override fun getApiHost(): String = BuildConfig.API_HOST + + override fun getDevApiHost(): String = BuildConfig.DEV_API_HOST + + override fun getNewApiHost(): String = BuildConfig.NEW_API_HOST + + override fun getNewDevApiHost(): String = BuildConfig.NEW_DEV_API_HOST + + override fun getVApiHost() = "" + + override fun getVDevApiHost() = "" + +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt new file mode 100644 index 0000000000..786e412a88 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CheckLoginProviderImpl.kt @@ -0,0 +1,18 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.ICheckLoginProvider +import com.gh.gamecenter.message.CheckLoginUtils + +@Route(path = RouteConsts.provider.checkLogin, name = "CheckLoginUtils暴露服务") +class CheckLoginProviderImpl : ICheckLoginProvider { + override fun checkLogin(context: Context, entrance: String, action: (() -> Unit)?) { + CheckLoginUtils.checkLogin(context, entrance, action) + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt new file mode 100644 index 0000000000..78cdc7e9fc --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentDetailProviderImpl.kt @@ -0,0 +1,22 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import android.content.Intent +import android.os.Parcelable +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.provider.ICommentDetailProvider + +@Route(path = RouteConsts.provider.commentDetail, name = "CommentDetailActivity暴露服务") +class CommentDetailProviderImpl : ICommentDetailProvider { + + override fun getIntent(context: Context, commentId: String?, message: Parcelable): Intent? { + ToastUtils.toast("调用->CommentDetailProviderImpl.getIntent") + return null + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt new file mode 100644 index 0000000000..60e6f4a6f8 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/CommentUtilsProviderImpl.kt @@ -0,0 +1,19 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import android.widget.TextView +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.provider.ICommentUtilsProvider + +@Route(path = RouteConsts.provider.commentUtils, name = "CommentUtils暴露服务") +class CommentUtilsProviderImpl : ICommentUtilsProvider { + override fun setCommentTime(textView: TextView, time: Long) { + ToastUtils.toast("调用->CommentUtilsProviderImpl.setCommentTime") + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt new file mode 100644 index 0000000000..d146d562a2 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/ConfigProviderImpl.kt @@ -0,0 +1,93 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IConfigProvider + +@Route(path = RouteConsts.provider.config, name = "Config暴露服务") +class ConfigProviderImpl : IConfigProvider { + override fun getTencentAppId(): String { + return "" + } + + override fun getWechatAppId(): String { + return "" + } + + override fun getWechatSecret(): String { + return "" + } + + override fun getUploadLimitSize(): Long { + return 0L + } + + override fun getSize(): Int { + return 0 + } + + override fun getRatio(): Int { + return 0 + } + + override fun getQuality(): Int { + return 0 + } + + override fun getGif(): String { + return "" + } + + override fun getJpeg(): String { + return "" + } + + override fun getWebp(): String { + return "" + } + + override fun getGitThumb(): String { + return "" + } + + override fun getGifWaterMark(): String { + return "" + } + + override fun getQQ(): String { + return "" + } + + override fun getQQun(): String { + return "" + } + + override fun getQQunKey(): String { + return "" + } + + override fun getQuickLoginAppId(): String { + return "" + } + + override fun getQuickLoginAppKey(): String { + return "" + } + + override fun getWeiboAppKey(): String { + return "" + } + + override fun getNightModeSetting(): Boolean { + return false + } + + override fun isShowPlugin(gameId: String): Boolean { + return false + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt new file mode 100644 index 0000000000..3489ac542e --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/DataUtilsProviderImpl.kt @@ -0,0 +1,18 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IDataUtilsProvider + +@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务") +class DataUtilsProviderImpl : IDataUtilsProvider { + + override fun getDeviceCertification() { + // Do nothing + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt new file mode 100644 index 0000000000..2885f55519 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt @@ -0,0 +1,26 @@ +package com.gh.gamecenter.message.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.utils.ToastUtils +import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider + +@Route(path = RouteConsts.provider.gameCollectionDetail, name = "GameCollectionDetailActivity暴露服务") +class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { + override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent? { + ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getIntent") + return null + } + + override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String): Intent? { + ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getSpecifiedCommentIntent") + return null + } + + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt new file mode 100644 index 0000000000..684820c0fa --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameDetailProviderImpl.kt @@ -0,0 +1,52 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.entity.GameEntity +import com.gh.gamecenter.feature.exposure.ExposureEvent +import com.gh.gamecenter.feature.provider.IGameDetailProvider + +@Route(path = RouteConsts.provider.gameDetail, name = "GameDetailActivity暴露服务") +class GameDetailProviderImpl : IGameDetailProvider { + override fun startGameDetailActivity( + context: Context, + gameId: String, + entrance: String?, + traceEvent: ExposureEvent? + ) { + ToastUtils.toast("调用->GameDetailProviderImpl.startGameDetailActivity") + } + + override fun startGameDetailActivity( + context: Context, + gameEntity: GameEntity?, + entrance: String, + defaultTab: String, + isSkipGameComment: Boolean, + scrollToLibao: Boolean, + scrollToServer: Boolean, + traceEvent: ExposureEvent? + ) { + ToastUtils.toast("调用->GameDetailProviderImpl.startGameDetailActivity") + } + + override fun startGameDetailActivity( + context: Context, + gameId: String, + entrance: String?, + defaultTab: Int, + isSkipGameComment: Boolean, + scrollToLibao: Boolean, + openVideoStreaming: Boolean, + openPlatformWindow: Boolean, + traceEvent: ExposureEvent? + ) { + ToastUtils.toast("调用->GameDetailProviderImpl.startGameDetailActivity") + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt new file mode 100644 index 0000000000..2b29234eac --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/LogUtilsProviderImpl.kt @@ -0,0 +1,18 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.* + +@Route(path = RouteConsts.provider.logUtils, name = "LogUtils暴露服务") +class LogUtilsProviderImpl : ILogUtilsProvider { + + override fun login(loginStep: String, loginType: String, entrance: String) { + // Do nothing + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt new file mode 100644 index 0000000000..7313fd2081 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageDetailProviderImpl.kt @@ -0,0 +1,27 @@ +package com.gh.gamecenter.message.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.utils.ToastUtils +import com.gh.gamecenter.feature.provider.IMessageDetailProvider + +@Route(path = RouteConsts.provider.messageDetail, name = "MessageDetailActivity暴露服务") +class MessageDetailProviderImpl : IMessageDetailProvider { + + override fun getIntentById( + context: Context, + newsId: String, + commentNum: Int, + openSoftInput: Boolean, + entrance: String + ): Intent? { + ToastUtils.toast("调用->MessageDetailProviderImpl.getIntentById") + return null + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt new file mode 100644 index 0000000000..7b54dac522 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/MessageUnreadRepositoryProviderImpl.kt @@ -0,0 +1,26 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import androidx.lifecycle.MediatorLiveData +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.entity.MessageUnreadEntity +import com.gh.gamecenter.feature.provider.IMessageUnreadRepositoryProvider + +@Route(path = RouteConsts.provider.messageUnreadRepository, name = "MessageUnreadRepository暴露服务") +class MessageUnreadRepositoryProviderImpl : IMessageUnreadRepositoryProvider { + + override fun loadMessageUnreadData() { + ToastUtils.toast("调用->MessageUnreadRepositoryProviderImpl.loadMessageUnreadData") + } + + override fun getUnreadLiveData(): MediatorLiveData? { + ToastUtils.toast("调用->MessageUnreadRepositoryProviderImpl.getUnreadLiveData") + return null + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt new file mode 100644 index 0000000000..034e985605 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/NewCommentDetailProviderImpl.kt @@ -0,0 +1,65 @@ +package com.gh.gamecenter.message.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.utils.ToastUtils +import com.gh.gamecenter.feature.provider.INewCommentDetailProvider + +@Route(path = RouteConsts.provider.newCommentDetail, name = "NewCommentDetailActivity暴露服务") +class NewCommentDetailProviderImpl : INewCommentDetailProvider { + override fun getAnswerCommentIntent( + context: Context, + commentId: String, + questionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? { + ToastUtils.toast("调用->NewCommentDetailProviderImpl.getGameCollectionCommentIntent") + return null + } + + override fun getArticleCommentIntent( + context: Context, + commentId: String, + communityId: String, + articleId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? { + ToastUtils.toast("调用->NewCommentDetailProviderImpl.getGameCollectionCommentIntent") + return null + } + + override fun getVideoCommentIntent( + context: Context, + commentId: String, + videoId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? { + ToastUtils.toast("调用->NewCommentDetailProviderImpl.getVideoCommentIntent") + return null + } + + override fun getGameCollectionCommentIntent( + context: Context, + commentId: String, + gameCollectionId: String, + topCommentId: String, + entrance: String, + path: String + ): Intent? { + ToastUtils.toast("调用->NewCommentDetailProviderImpl.getGameCollectionCommentIntent") + return null + } + + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt new file mode 100644 index 0000000000..1000dbbcef --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/PackageUtilsProviderImpl.kt @@ -0,0 +1,38 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import android.content.pm.PackageInfo +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IPackageUtilsProvider + +@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务") +class PackageUtilsProviderImpl : IPackageUtilsProvider { + override fun obtainProcessName(context: Context): String? { + return "" + } + + override fun getGhVersionName(): String { + return "" + } + + override fun getGhVersionCode(): Int { + return 0 + } + + override fun getInstalledPackages(context: Context, flag: Int): List { + return listOf() + } + + override fun getApkSignatureByPackageName(context: Context, packageName: String): Array { + return arrayOf() + } + + override fun getSideLoadedInfo(): MutableMap? { + return mutableMapOf() + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt new file mode 100644 index 0000000000..6d291c163a --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/SimpleAnswerDetailProviderImpl.kt @@ -0,0 +1,21 @@ +package com.gh.gamecenter.message.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.utils.ToastUtils +import com.gh.gamecenter.feature.provider.ISimpleAnswerDetailProvider + +@Route(path = RouteConsts.provider.simpleAnswerDetail, name = "SimpleAnswerDetailActivity暴露服务") +class SimpleAnswerDetailProviderImpl : ISimpleAnswerDetailProvider { + + override fun getIntent(context: Context, answerId: String, entrance: String, path: String): Intent? { + ToastUtils.toast("调用->SimpleAnswerDetailProviderImpl.getIntent") + return null + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt new file mode 100644 index 0000000000..fad5bb50ef --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/SubjectProviderImpl.kt @@ -0,0 +1,24 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.utils.ToastUtils +import com.gh.gamecenter.feature.provider.ISubjectProvider + +@Route(path = RouteConsts.provider.subject, name = "SubjectActivity暴露服务") +class SubjectProviderImpl : ISubjectProvider { + override fun startSubjectActivity( + context: Context, + id: String?, + name: String?, + isOrder: Boolean, + entrance: String? + ) { + ToastUtils.toast("调用->SubjectProviderImpl.startSubjectActivity") + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt new file mode 100644 index 0000000000..8a5639b2c2 --- /dev/null +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/WebProviderImpl.kt @@ -0,0 +1,40 @@ +package com.gh.gamecenter.message.provider + +import android.content.Context +import android.content.Intent +import com.alibaba.android.arouter.facade.annotation.Route +import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.core.provider.IWebProvider + +@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务") +class WebProviderImpl : IWebProvider { + override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? { + return null + } + + override fun getWebIntent(context: Context, title: String, url: String): Intent? { + return null + } + + override fun getBindWechatIntent(context: Context): Intent? { + return null + } + + override fun getSecurityCertificationIntent(context: Context): Intent? { + return null + } + + override fun getQAIntent( + context: Context?, + url: String?, + title: String?, + isWebPageHandleBackPressed: Boolean, + qaType: Int + ): Intent? { + return null + } + + override fun init(context: Context?) { + // Do nothing + } +} \ No newline at end of file diff --git a/module_message/src/test/java/com/gh/gamecenter/message/ExampleUnitTest.kt b/module_message/src/test/java/com/gh/gamecenter/message/ExampleUnitTest.kt new file mode 100644 index 0000000000..32bd752286 --- /dev/null +++ b/module_message/src/test/java/com/gh/gamecenter/message/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.gh.gamecenter.message + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/module_setting/src/main/res/drawable/message_unread_hint.xml b/module_setting/src/main/res/drawable/message_unread_hint.xml deleted file mode 100644 index e85952fd0f..0000000000 --- a/module_setting/src/main/res/drawable/message_unread_hint.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/module_setting/src/main/res/drawable/oval_message_hint_bg.xml b/module_setting/src/main/res/drawable/oval_message_hint_bg.xml deleted file mode 100644 index e987c9e0f8..0000000000 --- a/module_setting/src/main/res/drawable/oval_message_hint_bg.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java b/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java index e00111bd60..5c1e319cab 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java @@ -42,7 +42,7 @@ public class DataUtils { } options.setDebug(BuildConfig.DEBUG); - options.setEnableSessionTracking(true); + options.setEnableAutoSessionTracking(true); options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22"); options.setBeforeSend((event, hint) -> { diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt index aa25862f80..457eb1c9ec 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt @@ -69,9 +69,17 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } + override fun getFlavor(): String { + return "internal" + } + override fun isUserAcceptPrivacyPolicy(context: Context): Boolean { return true diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt index 3971315de3..a3dbb861bc 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt @@ -59,6 +59,14 @@ class ConfigProviderImpl : IConfigProvider { return "" } + override fun getQQun(): String { + return "" + } + + override fun getQQunKey(): String { + return "" + } + override fun getQuickLoginAppId(): String { return "" } @@ -75,6 +83,10 @@ class ConfigProviderImpl : IConfigProvider { return false } + override fun isShowPlugin(gameId: String): Boolean { + return false + } + override fun init(context: Context?) { // Do nothing } diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt index 9ae13a7eed..8510250dfa 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt @@ -29,6 +29,10 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") } + override fun directToEnergyRecord(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") + } + override fun directToEnergyRulePage(context: Context) { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage") } @@ -57,6 +61,61 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToSuggestionFromDiagnosis") } + override fun directToQa(context: Context, text: String?, id: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToQa") + } + + override fun directToHelpAndFeedback(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToHelpAndFeedback") + } + + override fun directToQqGroup(context: Context, groupNumber: String?): Boolean { + ToastUtils.toast("调用->DirectProviderImpl.directToQqGroup") + return true + } + + override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToHomeActivity") + } + + override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAnswerDetail") + } + + override fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->DirectProviderImpl.directToCommunityArticle") + } + + override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToVideoDetail") + } + + override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAmway") + } + + override fun directToOrderCenter(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderCenter") + } + + override fun directToOrderDetail(context: Context, orderId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderDetail") + } + + override fun directToMyPrizePage(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToMyPrizePage") + } + + override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") + } + override fun init(context: Context?) { // Do nothing } diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt index d7332d0e40..dae1525dee 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt @@ -9,7 +9,7 @@ import com.gh.gamecenter.core.utils.ToastUtils @Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务") class UpdateManagerProviderImpl: IUpdateManagerProvider { - override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler) { + override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler?) { ToastUtils.toast("调用->UpdateManagerProviderImpl.checkUpdate") } diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt index 7c120fd7a5..742477e887 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt @@ -40,6 +40,16 @@ class WebProviderImpl : IWebProvider { } } + override fun getQAIntent( + context: Context?, + url: String?, + title: String?, + isWebPageHandleBackPressed: Boolean, + qaType: Int + ): Intent? { + return null + } + override fun init(context: Context?) { // Do nothing } diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/DataUtils.java b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/DataUtils.java index c253530aff..e557e96e1e 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/DataUtils.java +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/DataUtils.java @@ -42,7 +42,7 @@ public class DataUtils { } options.setDebug(BuildConfig.DEBUG); - options.setEnableSessionTracking(true); + options.setEnableAutoSessionTracking(true); options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22"); options.setBeforeSend((event, hint) -> { diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt index a8da84be95..62ceeb8e22 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt @@ -69,6 +69,10 @@ class AppProviderImpl : IAppProvider { override fun logEvent(content: String) { // do nothing } + + override fun logCoreEvent() { + // do nothing + } } } diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt index 2b753b4269..a67629689c 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/DirectProviderImpl.kt @@ -33,6 +33,10 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage") } + override fun directToEnergyRecord(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord") + } + override fun directToInviteFriends(context: Context) { ToastUtils.toast("调用->DirectProviderImpl.directToInviteFriends") } @@ -57,6 +61,62 @@ class DirectProviderImpl : IDirectProvider { ToastUtils.toast("调用->DirectProviderImpl.directToSuggestionFromDiagnosis") } + + override fun directToQa(context: Context, text: String?, id: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToQa") + } + + override fun directToHelpAndFeedback(context: Context, position: Int) { + ToastUtils.toast("调用->DirectProviderImpl.directToHelpAndFeedback") + } + + override fun directToQqGroup(context: Context, groupNumber: String?): Boolean { + ToastUtils.toast("调用->DirectProviderImpl.directToQqGroup") + return true + } + + override fun directToHomeActivity(context: Context, userId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToHomeActivity") + } + + override fun directToAnswerDetail(context: Context, id: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAnswerDetail") + } + + override fun directToCommunityArticle( + context: Context, + articleId: String?, + communityId: String?, + entrance: String?, + path: String? + ) { + ToastUtils.toast("调用->DirectProviderImpl.directToCommunityArticle") + } + + override fun directToVideoDetail(context: Context, videoId: String, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToVideoDetail") + } + + override fun directToAmway(context: Context, fixedTopAmwayCommentId: String?, entrance: String?, path: String?) { + ToastUtils.toast("调用->DirectProviderImpl.directToAmway") + } + + override fun directToOrderCenter(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderCenter") + } + + override fun directToOrderDetail(context: Context, orderId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToOrderDetail") + } + + override fun directToMyPrizePage(context: Context) { + ToastUtils.toast("调用->DirectProviderImpl.directToMyPrizePage") + } + + override fun directToWinOrderDetail(context: Context, orderId: String, activityId: String) { + ToastUtils.toast("调用->DirectProviderImpl.directToWinOrderDetail") + } + override fun init(context: Context?) { // Do nothing } diff --git a/settings.gradle b/settings.gradle index 5485954992..37276a83e3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,3 +20,4 @@ include ':feature:beizi_startup_ad' include ':feature:oaid_lib' include ':feature:oaid' include ':feature:xapk-installer' +include ':module_message'