diff --git a/app/src/main/java/com/gh/common/util/CommentUtils.java b/app/src/main/java/com/gh/common/util/CommentUtils.java index 9df01b3fc4..265c31feb3 100644 --- a/app/src/main/java/com/gh/common/util/CommentUtils.java +++ b/app/src/main/java/com/gh/common/util/CommentUtils.java @@ -1,6 +1,7 @@ package com.gh.common.util; import android.app.Dialog; +import android.content.ClipboardManager; import android.content.Context; import android.graphics.Color; import android.support.v4.content.ContextCompat; @@ -123,7 +124,7 @@ public class CommentUtils { }); break; case "复制": - LibaoUtils.copyLink(commentEntity.getContent(), context); + copyText(commentEntity.getContent(), context); break; case "举报": CheckLoginUtils.checkLogin(context, () -> showReportTypeDialog(commentEntity, context)); @@ -194,7 +195,7 @@ public class CommentUtils { }); break; case "复制": - LibaoUtils.copyLink(commentEntity.getContent(), context); + copyText(commentEntity.getContent(), context); break; case "举报": CheckLoginUtils.checkLogin(context, () -> showAnswerReportDialog(answerId, commentEntity, context)); @@ -470,6 +471,15 @@ public class CommentUtils { } } + //复制文字 + public static void copyText(String copyContent, Context context) { + ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + cmb.setText(copyContent); + + Utils.toast(context, "复制成功"); + } + + public interface OnVoteListener { void onVote(); } diff --git a/app/src/main/java/com/gh/common/util/LoginUtils.java b/app/src/main/java/com/gh/common/util/LoginUtils.java index 3954da531e..05df84a792 100644 --- a/app/src/main/java/com/gh/common/util/LoginUtils.java +++ b/app/src/main/java/com/gh/common/util/LoginUtils.java @@ -147,7 +147,7 @@ public class LoginUtils { }); } - public static boolean userPostErrorToast(Throwable throwable, Context context) { + public static boolean userPostErrorToast(Throwable throwable, Context context, boolean isComment) { if (throwable instanceof HttpException) { HttpException exception = (HttpException) throwable; if (exception.code() == 403) { @@ -156,7 +156,11 @@ public class LoginUtils { int errorCode = errorJson.getInt("code"); switch (errorCode) { case 403019: - Utils.toast(context, R.string.comment_failed_userblocked); + if (isComment) { + Utils.toast(context, R.string.comment_failed_userblocked); + } else { + Utils.toast(context, R.string.comment_failed_userbanned); + } break; case 403020: Utils.toast(context, R.string.comment_failed_toofrequent); diff --git a/app/src/main/java/com/gh/common/util/TimestampUtils.java b/app/src/main/java/com/gh/common/util/TimestampUtils.java index 4a19e51b8b..09a9c4db57 100644 --- a/app/src/main/java/com/gh/common/util/TimestampUtils.java +++ b/app/src/main/java/com/gh/common/util/TimestampUtils.java @@ -3,7 +3,6 @@ package com.gh.common.util; import android.support.v4.util.ArrayMap; import android.text.TextUtils; -import com.gh.common.constant.Config; import com.gh.common.constant.Constants; import java.util.regex.Pattern; @@ -23,78 +22,18 @@ public class TimestampUtils { private static void initIntervalMap() { intervalMap = new ArrayMap<>(); - intervalMap.put("^" + Config.API_HOST + "index/slides" + "$", 5); - intervalMap.put("^" + Config.API_HOST + "game/chajian" + "$", 10); - intervalMap.put("^" + Config.API_HOST + "game/tuijian" + "$", 15); - intervalMap.put("^" + Config.API_HOST + "game/.+/detail" + "$", 20); - intervalMap.put("^" + Config.API_HOST + "game/.+/digest" + "$", 25); - intervalMap.put("^" + Config.API_HOST + "game/remenkapai" + "$", 30); - intervalMap.put("^" + Config.API_HOST + "game/.+/news_digest" + "$", 35); - intervalMap.put("^" + Config.API_HOST + "game/column/.+\\?page=.+" + "$", 40); - intervalMap.put("^" + Config.API_HOST + "support/package/.+/game/digest" + "$", 45); - intervalMap.put("^" + Config.API_HOST + "game/danjiyouxi\\?limit=20\\&offset=.+" + "$", 50); - intervalMap.put("^" + Config.API_HOST + "news/.+/digest" + "$", 55); - intervalMap.put("^" + Config.API_HOST + "news/.+/detail" + "$", 60); - intervalMap.put("^" + Config.API_HOST + "news/.+/suggestion" + "$", 65); - intervalMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=3" + "$", 70); - intervalMap.put("^" + Config.API_HOST + "zixun/zixun\\?limit=20\\&offset=.+" + "$", 75); - intervalMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=20\\&offset=.+" + "$", 80); - intervalMap.put("^" + Config.API_HOST + "zixun/yuanchuang\\?limit=20\\&offset=.+" + "$", 85); - intervalMap.put("^" + Config.API_HOST + "news\\?type_group=.+\\&offset=.+\\&limit=20" + "$", 90); - intervalMap.put("^" + Config.API_HOST + "zixun/guanzhu\\?key=.+\\&limit=20\\&offset=.+" + "$", 95); - intervalMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=20\\&offset=.+\\&type=.+" + "$", 100); - intervalMap.put("^" + Config.API_HOST + "zixun/guanzhu\\?game_id=.+\\&limit=20\\&offset=.+" + "$", 105); - intervalMap.put("^" + Config.API_HOST + "search/news\\?game_id=.+\\&keyword=.+\\&page=.+\\&limit=20" + "$", 110); - intervalMap.put("^" + Config.API_HOST + "search/game\\?keyword=.+" + "$", 115); - intervalMap.put("^" + Config.API_HOST + "support/setting/platform" + "$", 120); - intervalMap.put("^" + Config.API_HOST + "update/package/.+" + "$", 125); - intervalMap.put("^" + Config.API_HOST + "update/game/.+/package/.+" + "$", 130); - intervalMap.put("^" + Config.COMMENT_HOST + "article/.+/comment\\?limit=10\\&offset=.+" + "$", 135); - intervalMap.put("^" + Config.COMMENT_HOST + "article/.+/comment\\?order=hot\\&limit=10\\&offset=.+" + "$", 140); + intervalMap.put(".*index.*", 5); + intervalMap.put(".*columns.*", 10); + intervalMap.put(".*games.*", 15); + intervalMap.put(".*articles.*", 20); } private static void initCDMap() { cdMap = new ArrayMap<>(); - cdMap.put("^" + Config.API_HOST + "index/slides" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/chajian" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/tuijian" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/detail" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/digest" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/remenkapai" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/news_digest" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/column/.+\\?page=.+" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "support/package/.+/game/digest" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "game/danjiyouxi\\?limit=20\\&offset=.+" + "$", Constants.GAME_CD); - cdMap.put("^" + Config.API_HOST + "news/.+/digest" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "news/.+/detail" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "news/.+/suggestion" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=3" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "zixun/zixun\\?limit=20\\&offset=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=20\\&offset=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "zixun/yuanchuang\\?limit=10\\&offset=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "news\\?type_group=.+\\&offset=.+\\&limit=20" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "zixun/guanzhu\\?key=.+\\&limit=20\\&offset=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "game/.+/news\\?limit=20\\&offset=.+\\&type=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "zixun/guanzhu\\?game_id=.+\\&limit=20\\&offset=.+" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "search/news\\?game_id=.+\\&keyword=.+\\&page=.+\\&limit=20" + "$", Constants.NEWS_CD); - cdMap.put("^" + Config.API_HOST + "search/game\\?keyword=.+" + "$", Constants.SEARCH_CD); - cdMap.put("^" + Config.API_HOST + "support/setting/platform" + "$", Constants.PLATFORM_CD); - cdMap.put("^" + Config.API_HOST + "update/package/.+" + "$", Constants.UPDATE_CD); - cdMap.put("^" + Config.API_HOST + "update/game/.+/package/.+" + "$", Constants.UPDATE_CD); - cdMap.put("^" + Config.COMMENT_HOST + "article/.+/comment\\?limit=10\\&offset=.+" + "$", Constants.COMMENT_CD); - cdMap.put("^" + Config.COMMENT_HOST + "article/.+/comment\\?order=hot\\&limit=10\\&offset=.+" + "$", Constants.COMMENT_CD); - cdMap.put("^" + Config.API_HOST + "device/.+/concern" + "$", 0); - cdMap.put("^" + Config.API_HOST + "device/.+/concern/.+" + "$", 0); - cdMap.put("^" + Config.API_HOST + "stat/download" + "$", 0); - cdMap.put("^" + Config.API_HOST + "disclaimer" + "$", 0); - cdMap.put("^" + Config.API_HOST + "search/game/default" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/upgrade\\?version=.+\\&channel=.+" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/time/current" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/setting/ui" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/download_status\\?version=.+\\&channel=.+" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/suggestion" + "$", 0); - cdMap.put("^" + Config.API_HOST + "game/.+/serverInfo" + "$", 0); - cdMap.put("^" + Config.API_HOST + "support/package/unused\\?skip=.+" + "$", 0); + intervalMap.put(".*index.*", Constants.GAME_CD); + intervalMap.put(".*columns.*", Constants.GAME_CD); + intervalMap.put(".*games.*", Constants.GAME_CD); + intervalMap.put(".*articles.*", Constants.NEWS_CD); } /* diff --git a/app/src/main/java/com/gh/common/view/DownloadProgressBar.java b/app/src/main/java/com/gh/common/view/DownloadProgressBar.java index 7d4e967f9d..5d5f473662 100644 --- a/app/src/main/java/com/gh/common/view/DownloadProgressBar.java +++ b/app/src/main/java/com/gh/common/view/DownloadProgressBar.java @@ -113,11 +113,12 @@ public class DownloadProgressBar extends ProgressBar { mDefaultColor = ContextCompat.getColor(getContext(), R.color.hint); break; case LAUNCH_OR_OPEN: - setProgressDrawable(getResources().getDrawable(R.drawable.detail_downloading_normal_style)); // todo 背景是否需要与下载中区分 + // todo bug 和列表用相同的drawable会复用 + setProgressDrawable(getResources().getDrawable(R.drawable.detail_downloading_normal_style2)); // todo 背景是否需要与下载中区分 mDefaultColor = ContextCompat.getColor(getContext(), R.color.theme); break; case DOWNLOADING_NORMAL: - setProgressDrawable(getResources().getDrawable(R.drawable.detail_downloading_normal_style)); + setProgressDrawable(getResources().getDrawable(R.drawable.detail_downloading_normal_style2)); mDefaultColor = ContextCompat.getColor(getContext(), R.color.theme); break; case DOWNLOADING_PLUGIN: diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 4a4b22b15b..9a04824c87 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -244,6 +244,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener, super.onCreate(savedInstanceState); setNavigationTitle(""); + mNoneDataTv.setText("页面不见咯"); // 增加actionBar Button RelativeLayout reuse_actionbar = findViewById(R.id.reuse_actionbar); @@ -252,7 +253,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener, RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mNewsShare.getLayoutParams(); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.CENTER_VERTICAL); - params.setMargins(0,0,DisplayUtils.dip2px(this, 4),0); + params.setMargins(0, 0, DisplayUtils.dip2px(this, 4), 0); reuse_actionbar.addView(mNewsShare, params); mNewsCollection = (ImageView) LayoutInflater.from(this).inflate(R.layout.menu_action_collection, reuse_actionbar, false); @@ -428,11 +429,16 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener, mReuseLoading.setVisibility(View.GONE); mDetailBottomLl.setVisibility(View.GONE); mNoConn.setVisibility(View.VISIBLE); + mNoneData.setVisibility(View.GONE); } @Override public void loadEmpty() { - + mDetailRv.setVisibility(View.GONE); + mReuseLoading.setVisibility(View.GONE); + mDetailBottomLl.setVisibility(View.GONE); + mNoConn.setVisibility(View.GONE); + mNoneData.setVisibility(View.VISIBLE); } private void getNewsDigest(final String newsId) { 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 9c13fe4b01..4dbfe12c4f 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/MessageDetailAdapter.java @@ -23,6 +23,7 @@ import com.gh.common.util.StringUtils; import com.gh.common.util.TimestampUtils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; +import com.gh.gamecenter.ShareCardActivity; import com.gh.gamecenter.ShareCardPicActivity; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.CommentHeadViewHolder; @@ -289,7 +290,17 @@ public class MessageDetailAdapter extends BaseRecyclerAdapter { viewHolder.share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - ShareCardPicActivity.startShareCardPicActivity(mContext, mConcernEntity, mEntrance); + if (mConcernEntity.getImg() != null && mConcernEntity.getImg().size() > 0) { + ShareCardPicActivity.startShareCardPicActivity(mContext, mConcernEntity, mEntrance); + } else { + String shareContent; + if (mConcernEntity.getBrief() != null) { + shareContent = mConcernEntity.getBrief(); + } else { + shareContent = mConcernEntity.getContent(); + } + mContext.startActivity(ShareCardActivity.getIntent(mContext, mConcernEntity, shareContent)); + } } }); diff --git a/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java b/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java index 396e89a10e..bbac93c49a 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AnswerCommentFragment.java @@ -99,6 +99,9 @@ public class AnswerCommentFragment extends ListFragment= 35) { - mBaseHandler.sendEmptyMessageDelayed(1, 1000); + mBaseHandler.sendEmptyMessageDelayed(1, 2000); return; } ViewGroup.LayoutParams layoutParams = mRefreshHint.getLayoutParams(); diff --git a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsViewModel.java b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsViewModel.java index df7c98c18f..dbec44424e 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsRecommendsViewModel.java @@ -93,7 +93,7 @@ public class AskQuestionsRecommendsViewModel extends ListViewModel>() { @Override public void onResponse(Call> call, retrofit2.Response> response) { - if (TextUtils.isEmpty(response.headers().get("Feed-Clean"))) { + if (!TextUtils.isEmpty(response.headers().get("Feed-Clean"))) { deleteDB(); } diff --git a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java index 315706b517..5f6fea4a4c 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/QuestionsEditFragment.java @@ -401,7 +401,7 @@ public class QuestionsEditFragment extends NormalFragment { public void onFailure(HttpException e) { super.onFailure(e); mPostDialog.dismissAllowingStateLoss(); - if (LoginUtils.userPostErrorToast(e, getContext())) return; + if (LoginUtils.userPostErrorToast(e, getContext(), false)) return; toast("提交失败"); AskErrorResponseUtils.errorResponseControl(getContext(), e); } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java index d3826bd96a..fb09ad3713 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/AnswerEditFragment.java @@ -306,7 +306,7 @@ public class AnswerEditFragment extends NormalFragment { public void onFailure(HttpException e) { super.onFailure(e); if (postDialog != null) postDialog.dismissAllowingStateLoss(); - if (LoginUtils.userPostErrorToast(e, getContext())) return; + if (LoginUtils.userPostErrorToast(e, getContext(), false)) return; toast("提交失败"); AskErrorResponseUtils.errorResponseControl(getContext(), e); } diff --git a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java index 53854d9d7a..6b046e34be 100644 --- a/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/ask/questionsdetail/QuestionsDetailFragment.java @@ -372,7 +372,9 @@ public class QuestionsDetailFragment extends ListFragment { mResultLiveData.addSource(mListLiveData, list -> { if (list == null) return; mResultLiveData.postValue(NewsEntity.Companion.deepCopy(list)); - if (list.size() == 0) return; StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.size(); i++) { NewsEntity newsEntity = list.get(i); @@ -38,10 +37,12 @@ public class ArticleViewModel extends ListViewModel { builder.append("-"); } } - builder.deleteCharAt(builder.length() - 1); - String ids = builder.toString(); - mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + if (builder.length() > 0) { + builder.deleteCharAt(builder.length() - 1); + String ids = builder.toString(); + mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + } }); LiveData> listLiveData = mNewsViewsRepository.asLiveData(); diff --git a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java index 48945794e3..fcb1901bfd 100644 --- a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java @@ -543,15 +543,15 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou startActivityForResult(intent, NEWS_MESSAGE_ARTICLE_REQUEST); break; case R.id.news_digest_share: - String shareContent; - if (concernEntity.getBrief() != null) { - shareContent = concernEntity.getBrief(); - } else { - shareContent = concernEntity.getContent(); - } if (concernEntity.getImg() != null && concernEntity.getImg().size() > 0) { ShareCardPicActivity.startShareCardPicActivity(getContext(), concernEntity, entrance); } else { + String shareContent; + if (concernEntity.getBrief() != null) { + shareContent = concernEntity.getBrief(); + } else { + shareContent = concernEntity.getContent(); + } startActivity(ShareCardActivity.getIntent(getContext(), concernEntity, shareContent)); } break; diff --git a/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java b/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java index c1f4dd2fec..d012deae70 100644 --- a/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/info/InfoViewModel.java @@ -26,7 +26,6 @@ public class InfoViewModel extends ListViewModel { mResultLiveData.addSource(mListLiveData, list -> { if (list == null) return; mResultLiveData.postValue(NewsEntity.Companion.deepCopy(list)); - if (list.size() == 0) return; StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.size(); i++) { NewsEntity newsEntity = list.get(i); @@ -35,10 +34,11 @@ public class InfoViewModel extends ListViewModel { builder.append("-"); } } - builder.deleteCharAt(builder.length() - 1); - String ids = builder.toString(); - - mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + if (builder.length() > 0) { + builder.deleteCharAt(builder.length() - 1); + String ids = builder.toString(); + mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + } }); LiveData> listLiveData = mNewsViewsRepository.asLiveData(); diff --git a/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java b/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java index fbdcabe342..5e9b049dd3 100644 --- a/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java +++ b/app/src/main/java/com/gh/gamecenter/info/OriginalViewModel.java @@ -26,7 +26,6 @@ public class OriginalViewModel extends ListViewModel { mResultLiveData.addSource(mListLiveData, list -> { if (list == null) return; mResultLiveData.postValue(NewsEntity.Companion.deepCopy(list)); - if (list.size() == 0) return; StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.size(); i++) { NewsEntity newsEntity = list.get(i); @@ -35,10 +34,11 @@ public class OriginalViewModel extends ListViewModel { builder.append("-"); } } - builder.deleteCharAt(builder.length() - 1); - String ids = builder.toString(); - - mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + if (builder.length() > 0) { + builder.deleteCharAt(builder.length() - 1); + String ids = builder.toString(); + mNewsViewsRepository.getNewsViews(RetrofitManager.getInstance(getApplication()).getData().getNewsViews(ids)); + } }); LiveData> listLiveData = mNewsViewsRepository.asLiveData(); 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 81e850d901..b7364769f7 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageDetailFragment.java @@ -376,7 +376,7 @@ public class MessageDetailFragment extends NormalFragment implements OnCommentCa cacheObject.put("time", System.currentTimeMillis() / 1000); cacheObject.put("vote", 0); cacheObject.put("user", cacheUser); - cacheObject.put("user_data", userData); + cacheObject.put("me", userData); if (mCommentEntity != null) { JSONObject cacheParent = new JSONObject(); @@ -416,7 +416,7 @@ public class MessageDetailFragment extends NormalFragment implements OnCommentCa @Override public void postFailed(Throwable e) { mSendingDialog.dismiss(); - if (LoginUtils.userPostErrorToast(e, getContext())) return; + if (LoginUtils.userPostErrorToast(e, getContext(), true)) return; toast(R.string.post_failure_hint); } }); diff --git a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java index 1c13ec1dce..8ecbeb7235 100644 --- a/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/message/MessageItemViewHolder.java @@ -65,7 +65,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageContent.setText(messageEntity.getAnswer().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "reply_answer_comment": @@ -75,7 +75,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageContent.setText(messageEntity.getDialogue().getFrom().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "answer_comment": @@ -85,29 +85,29 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageContent.setText(messageEntity.getComment().getContent()); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "answer_vote": - mBinding.messageCommand.setText("赞同了你的回答"); + mBinding.messageCommand.setText("赞同你的回答"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "comment_vote": - mBinding.messageCommand.setText("赞了你"); + mBinding.messageCommand.setText("赞了你的评论"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getArticle().getTitle()); mBinding.messageOriginalIcon.setImageURI(messageEntity.getArticle().getThumb()); break; case "answer_comment_vote": - mBinding.messageCommand.setText("赞了你"); + mBinding.messageCommand.setText("赞了你的评论"); mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getAnswer().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "invited": @@ -115,7 +115,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getQuestion().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; case "system_invited": @@ -123,7 +123,7 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder mBinding.messageContent.setVisibility(View.GONE); mBinding.messageOriginalTitle.setText(messageEntity.getQuestion().getTitle()); images = messageEntity.getQuestion().getImages(); - if (images.size() > 0) + if (images != null && images.size() > 0) mBinding.messageOriginalIcon.setImageURI(images.get(0)); break; } 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 feea1289d0..02aa7da9b8 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -117,7 +117,12 @@ public class NewsDetailAdapter extends BaseRecyclerAdapter { @Override public void onFailure(HttpException e) { - mListener.loadError(); + if (e != null && e.code() == 404) { + mListener.loadEmpty(); + } else { + mListener.loadError(); + } + } }); } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java b/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java index 3fa5bf36a3..a1f29f9199 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/OkHttpCacheInterceptor.java @@ -120,7 +120,7 @@ class OkHttpCacheInterceptor implements Interceptor { response = chain.proceed(request); Utils.log("Authorization::" + str + "\n" + url + "\n" + signature + "\n" + encode + "\n" + Config.USERSEA_APP_SECRET); - } else if ((url.contains("/index/column") || url.contains("/index/slides") || url.contains("/index/recommend")) + } else if ((url.contains("/index/columns") || url.contains("/index/slides") || url.contains("/index/recommends")) && TextUtils.isEmpty(request.header("tag"))) { // 对应首页-游戏特殊的缓存策略 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 62c45253a7..58edd1f765 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 @@ -439,20 +439,20 @@ public interface ApiService { */ @Headers({"Content-Type: application/json", "Accept: application/json"}) @POST("users/{user_id}/packages/{package_name}") - Observable postPackage(@Path("user_id") String user_id, @Path("package_name") String package_name); // todo + Observable postPackage(@Path("user_id") String user_id, @Path("package_name") String package_name); /** * 删除已安装游戏 */ @DELETE("users/{user_id}/packages/{package_name}") - Observable deletePackage(@Path("user_id") String user_id, @Path("package_name") String package_name); // todo + Observable deletePackage(@Path("user_id") String user_id, @Path("package_name") String package_name); /** * 整体更新设备已安装游戏 */ @Headers({"Content-Type: application/json", "Accept: application/json"}) @PUT("users/{user_id}/packages") - Observable putPackage(@Path("user_id") String user_id, @Body RequestBody body); // todo + Observable putPackage(@Path("user_id") String user_id, @Body RequestBody body); /*********** CommentService ************/ @@ -486,15 +486,15 @@ public interface ApiService { /** * 获取新闻评论 */ - @GET("article/{news_id}/comment?order=hot") - Observable> getHotComment(@Path("news_id") String news_id, @Query("limit") int limit, + @GET("articles/{article_id}/comments?filter=order:hot") + Observable> getHotComment(@Path("article_id") String articleId, @Query("limit") int limit, @Query("page") int page); /** * 获取新闻评论 */ @GET("articles/{article_id}/comments") - Observable> getComment(@Path("article_id") String article_id, @Query("limit") int limit, + Observable> getComment(@Path("article_id") String articleId, @Query("limit") int limit, @Query("page") int page); /** 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 e7a3cf7382..5163793cd9 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 @@ -191,7 +191,7 @@ public class CommentDetailFragment extends NormalFragment implements OnCommentCa @Override public void postFailed(Throwable e) { mSendingDialog.dismiss(); - if (LoginUtils.userPostErrorToast(e, getContext())) return; + if (LoginUtils.userPostErrorToast(e, getContext(), true)) return; toast(R.string.post_failure_hint); } }); diff --git a/app/src/main/res/drawable-xhdpi/ic_edit_comment.png b/app/src/main/res/drawable-xhdpi/ic_edit_comment.png new file mode 100644 index 0000000000..5d5df072f0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_edit_comment.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_bar_back.png b/app/src/main/res/drawable-xxhdpi/ic_bar_back.png index fc2bb0af2c..4c2d4dadd1 100644 Binary files a/app/src/main/res/drawable-xxhdpi/ic_bar_back.png and b/app/src/main/res/drawable-xxhdpi/ic_bar_back.png differ diff --git a/app/src/main/res/drawable/detail_downloading_normal_style2.xml b/app/src/main/res/drawable/detail_downloading_normal_style2.xml new file mode 100644 index 0000000000..b2596c8fb5 --- /dev/null +++ b/app/src/main/res/drawable/detail_downloading_normal_style2.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/ask_recommends_subject_item.xml b/app/src/main/res/layout/ask_recommends_subject_item.xml index 402747a251..30b1e5ea45 100644 --- a/app/src/main/res/layout/ask_recommends_subject_item.xml +++ b/app/src/main/res/layout/ask_recommends_subject_item.xml @@ -48,7 +48,7 @@ android:layout_width = "wrap_content" android:layout_height = "20dp" android:layout_marginLeft = "12dp" - android:background = "@drawable/button_normal_style" + android:background = "@drawable/textview_concern_red_up" android:gravity = "center" android:paddingLeft = "12dp" android:paddingRight = "12dp" diff --git a/app/src/main/res/layout/fragment_answer_detail.xml b/app/src/main/res/layout/fragment_answer_detail.xml index 62e1ab880a..680f1812aa 100644 --- a/app/src/main/res/layout/fragment_answer_detail.xml +++ b/app/src/main/res/layout/fragment_answer_detail.xml @@ -75,16 +75,13 @@ + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/fragment_message_detail.xml b/app/src/main/res/layout/fragment_message_detail.xml index b1813ef926..3718c06576 100644 --- a/app/src/main/res/layout/fragment_message_detail.xml +++ b/app/src/main/res/layout/fragment_message_detail.xml @@ -124,7 +124,7 @@ android:layout_marginRight = "10dp" android:paddingBottom = "14dp" android:paddingTop = "13dp" - android:src = "@drawable/ic_edit" /> + android:src = "@drawable/ic_edit_comment" /> 别话痨哦~休息一会再来评论吧~ 账号状态异常,暂时无法发表评论 账号异常,暂时无法发表内容 + 内容可能已被删除 文章异常,无法发表评论 评论内容可能包括敏感信息,请修改后再发表 评论失败,未知原因