From c2168eaf02c163e4b0e64bbd7e829252be96ff1e Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Sat, 29 Sep 2018 16:27:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=E9=9A=90?= =?UTF-8?q?=E8=97=8F=E7=A4=BE=E5=8C=BA=E6=9C=BA=E5=88=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=20https://gitlab.ghzhushou.com/pm/halo-app-issues/issues/347?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/CommunityHelper.kt | 47 +++++++++++++++++++ .../java/com/gh/gamecenter/MainActivity.java | 4 ++ .../adapter/MessageDetailAdapter.java | 3 +- .../gh/gamecenter/info/ConcernAdapter.java | 2 +- .../message/MessageDetailFragment.java | 2 +- .../newsdetail/NewsDetailAdapter.java | 4 +- .../com/gh/gamecenter/qa/AskFragment.java | 30 ++++++++++-- .../article/game/ArticleSelectGameAdapter.kt | 2 +- .../gamecenter/qa/select/OpenedViewModel.kt | 2 +- .../gamecenter/qa/select/VotingViewModel.java | 2 +- .../receiver/NetworkStateReceiver.java | 3 ++ .../retrofit/service/ApiService.java | 6 +-- .../main/java/com/halo/assistant/HaloApp.java | 2 +- .../halo/assistant/fragment/WebFragment.java | 3 +- app/src/main/res/layout/fragment_ask.xml | 5 ++ 15 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/gh/common/util/CommunityHelper.kt diff --git a/app/src/main/java/com/gh/common/util/CommunityHelper.kt b/app/src/main/java/com/gh/common/util/CommunityHelper.kt new file mode 100644 index 0000000000..7d0d751a3b --- /dev/null +++ b/app/src/main/java/com/gh/common/util/CommunityHelper.kt @@ -0,0 +1,47 @@ +package com.gh.common.util + +import com.gh.gamecenter.qa.entity.AskGameSelectEntity +import com.gh.gamecenter.retrofit.Response +import com.gh.gamecenter.retrofit.RetrofitManager +import com.halo.assistant.HaloApp +import io.reactivex.schedulers.Schedulers + +/** + * 用于判断社区跳转前社区是否可用 + */ +object CommunityHelper { + + private var availableCommunityList = listOf() + + @JvmStatic + fun getAvailableCommunityList() { + if (availableCommunityList.isEmpty()) { + RetrofitManager.getInstance(HaloApp.getInstance().application).api + .getAskGameSelect(HaloApp.getInstance().channel + , UrlFilterUtils.getFilterQuery("status", "opened"), 1, 100) + .subscribeOn(Schedulers.io()) + .subscribe(object : Response>() { + override fun onResponse(response: List?) { + if (response != null) { + availableCommunityList = response + } + } + }) + } + } + + @JvmStatic + fun isCommunityAvailable(communityId: String?): Boolean { + communityId?.let { + if (availableCommunityList.isEmpty()) return true + for (entity in availableCommunityList) { + if (communityId == entity.id) { + return true + } + } + } + + return false + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 507a224cc2..240be960c4 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -34,6 +34,7 @@ import com.gh.common.exposure.ExposureUtils; import com.gh.common.exposure.meta.MetaUtil; import com.gh.common.im.ImManager; import com.gh.common.util.ClassUtils; +import com.gh.common.util.CommunityHelper; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataLogUtils; @@ -791,6 +792,9 @@ public class MainActivity extends BaseActivity { handler.postDelayed(ImManager::attachIm, 1000); } + // 获取可用(呈显示在)的社区列表 + CommunityHelper.getAvailableCommunityList(); + // 执行跳转事件 handler.postDelayed(skipRun, 500); } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java index 44e0b01ac6..10721b1f0d 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -39,6 +39,7 @@ import com.gh.gamecenter.retrofit.OkHttpCache; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.lightgame.adapter.BaseRecyclerAdapter; +import com.lightgame.utils.Utils; import org.json.JSONArray; import org.json.JSONException; @@ -138,7 +139,7 @@ public class MessageDetailAdapter extends BaseRecyclerAdapter { return; } isLoading = true; - RetrofitManager.getInstance(mContext).getApi().getComment(mConcernEntity.getId(), 10, mPage) + RetrofitManager.getInstance(mContext).getApi().getComment(mConcernEntity.getId(), 10, mPage, Utils.getTime(mContext)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { diff --git a/app/src/main/java/com/gh/gamecenter/info/ConcernAdapter.java b/app/src/main/java/com/gh/gamecenter/info/ConcernAdapter.java index 4b8e7e8547..bfa87bb8de 100644 --- a/app/src/main/java/com/gh/gamecenter/info/ConcernAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/info/ConcernAdapter.java @@ -278,7 +278,7 @@ class ConcernAdapter extends BaseRecyclerAdapter { @Override public void accept(String ids) throws Exception { RetrofitManager.getInstance(mContext).getApi() - .getNewsCommentnum(ids) + .getNewsCommentnum(ids, Utils.getTime(mContext)) .map(new Function, String>() { @Override public String apply(List list) { diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java b/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java index 57788cbd37..b1e941d503 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java @@ -182,7 +182,7 @@ public class MessageDetailFragment extends NormalFragment implements OnCommentCa public void getCommentNum() { RetrofitManager.getInstance(getContext()).getApi() - .getNewsCommentnum(newsId) + .getNewsCommentnum(newsId, Utils.getTime(getContext())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new com.gh.gamecenter.retrofit.Response>() { diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index 1f5479c370..79627d1396 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -647,7 +647,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { public void getNewsCommentNum() { RetrofitManager.getInstance(mContext).getApi() - .getNewsCommentnum(mNewsDetailEntity.getId()) + .getNewsCommentnum(mNewsDetailEntity.getId(), Utils.getTime(mContext)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { @@ -693,7 +693,7 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { private void getNewsComment() { RetrofitManager.getInstance(mContext).getApi() - .getComment(mId, 3, 1) + .getComment(mId, 3, 1, Utils.getTime(mContext)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java b/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java index 01bfe76a2a..6bac6a9aef 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java +++ b/app/src/main/java/com/gh/gamecenter/qa/AskFragment.java @@ -23,6 +23,7 @@ import android.widget.TextView; import com.gh.base.adapter.FragmentAdapter; import com.gh.base.fragment.BaseFragment; import com.gh.base.onDoubleTapListener; +import com.gh.common.util.CommunityHelper; import com.gh.common.util.DataUtils; import com.gh.gamecenter.MainActivity; import com.gh.gamecenter.R; @@ -79,6 +80,12 @@ public class AskFragment extends BaseFragment { View mCommunitiesSelectLayout; @BindView(R.id.ask_column_line) View mColumnLine; + @BindView(R.id.reuse_nodata_skip) + View mNoAvailableCommunityHint; + @BindView(R.id.reuse_nodata_skip_tv_hint) + TextView mNoAvailableCommunityTv; + @BindView(R.id.reuse_nodata_skip_tv_btn) + TextView mNoAvailableCommunityBtn; public static final int INDEX_HOT = 0; public static final int INDEX_COLUMN = 1; @@ -138,10 +145,25 @@ public class AskFragment extends BaseFragment { super.onActivityResult(requestCode, resultCode, data); if (requestCode == COMMUNITIES_SELECT_REQUEST && resultCode == Activity.RESULT_OK) { showCommunitiesSelectFragment(false); - mAskGamename.setText(UserManager.getInstance().getCommunity().getName()); - List fragments = getChildFragmentManager().getFragments(); - for (Fragment fragment : fragments) { - fragment.onActivityResult(requestCode, resultCode, data); + if (CommunityHelper.isCommunityAvailable(UserManager.getInstance().getCommunity().getId())) { + mAskGamename.setText(UserManager.getInstance().getCommunity().getName()); + mAskSearch.setVisibility(View.VISIBLE); + mAskTabBar.setVisibility(View.VISIBLE); + mNoAvailableCommunityHint.setVisibility(View.GONE); + mAskViewpager.setVisibility(View.VISIBLE); + List fragments = getChildFragmentManager().getFragments(); + for (Fragment fragment : fragments) { + fragment.onActivityResult(requestCode, resultCode, data); + } + } else { + mAskGamename.setText("光环问答"); + mAskTabBar.setVisibility(View.GONE); + mAskViewpager.setVisibility(View.GONE); + mAskSearch.setVisibility(View.INVISIBLE); + mNoAvailableCommunityTv.setText("未发现内容"); + mNoAvailableCommunityBtn.setText("[切换游戏]"); + mNoAvailableCommunityBtn.setOnClickListener(v -> mAskSelectgame.performClick()); + mNoAvailableCommunityHint.setVisibility(View.VISIBLE); } } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/game/ArticleSelectGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/article/game/ArticleSelectGameAdapter.kt index 4714a8ec04..aa4f84456b 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/game/ArticleSelectGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/game/ArticleSelectGameAdapter.kt @@ -26,7 +26,7 @@ class ArticleSelectGameAdapter(context: Context, loading: ProgressBar, // todo 去掉分页 RetrofitManager.getInstance(mContext).api .getAskGameSelect(HaloApp.getInstance().channel - , UrlFilterUtils.getFilterQuery("status", "opened"), 1) + , UrlFilterUtils.getFilterQuery("status", "opened"), 1, 20) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response>() { diff --git a/app/src/main/java/com/gh/gamecenter/qa/select/OpenedViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/select/OpenedViewModel.kt index d4eee84403..777c4c42f0 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/select/OpenedViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/select/OpenedViewModel.kt @@ -15,6 +15,6 @@ class OpenedViewModel(application: Application) : ListViewModel> { return RetrofitManager.getInstance(getApplication()).api.getAskGameSelect(HaloApp.getInstance().channel - , UrlFilterUtils.getFilterQuery("status", "opened"), page) + , UrlFilterUtils.getFilterQuery("status", "opened"), page, 20) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/qa/select/VotingViewModel.java b/app/src/main/java/com/gh/gamecenter/qa/select/VotingViewModel.java index 1d74fcca4a..7e1ad786e8 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/select/VotingViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/qa/select/VotingViewModel.java @@ -31,6 +31,6 @@ public class VotingViewModel extends ListViewModel> provideDataObservable(int page) { return RetrofitManager.getInstance(getApplication()).getApi().getAskGameSelect(HaloApp.getInstance().getChannel() - , UrlFilterUtils.getFilterQuery("status", "voting"), page); + , UrlFilterUtils.getFilterQuery("status", "voting"), page, 20); } } diff --git a/app/src/main/java/com/gh/gamecenter/receiver/NetworkStateReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/NetworkStateReceiver.java index 9c8854953b..46da14b3a6 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/NetworkStateReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/NetworkStateReceiver.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import com.gh.common.exposure.meta.MetaUtil; +import com.gh.common.util.CommunityHelper; import com.gh.common.util.NetworkUtils; import com.gh.gamecenter.eventbus.EBNetworkState; @@ -18,6 +19,8 @@ public class NetworkStateReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { EventBus.getDefault().post(new EBNetworkState(NetworkUtils.isNetworkConnected(context))); MetaUtil.INSTANCE.refreshMeta(); + // 初始化开启的社区列表 + CommunityHelper.getAvailableCommunityList(); } } 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 71df444046..f3e01d8add 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 @@ -455,7 +455,7 @@ public interface ApiService { * 获取新闻评论数 */ @GET("articles/{article_id}/comments:count") - Observable> getNewsCommentnum(@Path("article_id") String article_id); + Observable> getNewsCommentnum(@Path("article_id") String article_id, @Query("timestamp") long timestamp); /** * 提交举报信息 @@ -489,7 +489,7 @@ public interface ApiService { */ @GET("articles/{article_id}/comments") Observable> getComment(@Path("article_id") String articleId, @Query("page_size") int pageSize, - @Query("page") int page); + @Query("page") int page, @Query("timestamp") long timestamp); /** * 发布评论 @@ -621,7 +621,7 @@ public interface ApiService { * 社区列表 */ @GET("communities") - Observable> getAskGameSelect(@Query("channel") String channel, @Query("filter") String filter, @Query("page") int page); + Observable> getAskGameSelect(@Query("channel") String channel, @Query("filter") String filter, @Query("page") int page, @Query("page_size") int pageSize); /** * 社区列表 diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 7d53a3b36a..9c89b3c4d0 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -79,7 +79,7 @@ public class HaloApp extends TinkerAppLike { mChannel = ChannelReaderUtil.getChannel(getApplication()); if (TextUtils.isEmpty(mChannel)) { //默认用Android Studio run时并没有写入channel magic number到apk包里面,所以需要fallback - mChannel = "GH_TEST"; + mChannel = "GH_123"; } Log.e("CHANNEL_ID", mChannel); diff --git a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java index c9a29df415..6ecce45955 100644 --- a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java @@ -31,6 +31,7 @@ import com.gh.gamecenter.message.MessageDetailFragment; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.lightgame.utils.Utils; import java.util.List; @@ -274,7 +275,7 @@ public class WebFragment extends NormalFragment { public void getNewsCommentNum() { RetrofitManager.getInstance(getContext()).getApi() - .getNewsCommentnum(newsId) + .getNewsCommentnum(newsId, Utils.getTime(getContext())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response>() { diff --git a/app/src/main/res/layout/fragment_ask.xml b/app/src/main/res/layout/fragment_ask.xml index f9c5ac4b68..d655f0c7d5 100644 --- a/app/src/main/res/layout/fragment_ask.xml +++ b/app/src/main/res/layout/fragment_ask.xml @@ -51,6 +51,7 @@ android:textColor = "@color/black" android:textSize = "15sp" android:textStyle = "bold" + tools:text = "光环助手" app:layout_constraintBottom_toBottomOf = "@id/ask_selectgame" app:layout_constraintLeft_toRightOf = "@id/ask_selectgame" app:layout_constraintRight_toLeftOf = "@id/ask_search" @@ -120,6 +121,10 @@ + +