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 ea8dbde7c1..0000000000
Binary files a/app/src/main/res/drawable-hdpi/ic_id.webp and /dev/null differ
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 a080fdc0b1..0000000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_id.webp and /dev/null differ
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 2e8e90dcf1..0000000000
Binary files a/app/src/main/res/drawable-xxhdpi/ic_id.webp and /dev/null differ
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'