630 lines
30 KiB
Java
630 lines
30 KiB
Java
package com.gh.common.util;
|
|
|
|
import android.app.Dialog;
|
|
import android.content.ClipboardManager;
|
|
import android.content.Context;
|
|
import android.graphics.Color;
|
|
import android.support.annotation.Nullable;
|
|
import android.support.v4.content.ContextCompat;
|
|
import android.text.TextUtils;
|
|
import android.view.View;
|
|
import android.view.Window;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
|
|
import com.gh.gamecenter.CommentDetailActivity;
|
|
import com.gh.gamecenter.MessageDetailActivity;
|
|
import com.gh.gamecenter.R;
|
|
import com.gh.gamecenter.adapter.OnCommentCallBackListener;
|
|
import com.gh.gamecenter.adapter.viewholder.CommentViewHolder;
|
|
import com.gh.gamecenter.entity.CommentEntity;
|
|
import com.gh.gamecenter.entity.MeEntity;
|
|
import com.gh.gamecenter.entity.RatingComment;
|
|
import com.gh.gamecenter.entity.UserInfoEntity;
|
|
import com.gh.gamecenter.manager.UserManager;
|
|
import com.gh.gamecenter.retrofit.Response;
|
|
import com.gh.gamecenter.retrofit.RetrofitManager;
|
|
import com.lightgame.utils.Utils;
|
|
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
import io.reactivex.schedulers.Schedulers;
|
|
import okhttp3.MediaType;
|
|
import okhttp3.RequestBody;
|
|
import okhttp3.ResponseBody;
|
|
import retrofit2.HttpException;
|
|
|
|
/**
|
|
* Created by khy on 2017/3/22.
|
|
*/
|
|
public class CommentUtils {
|
|
|
|
public static void setCommentTime(TextView textView, long time) {
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault());
|
|
try {
|
|
long today = format.parse(format.format(new Date())).getTime();
|
|
long day = time * 1000;
|
|
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) {
|
|
textView.setText("刚刚");
|
|
} else {
|
|
textView.setText(String.format(Locale.getDefault(), "%d分钟前", (int) (min / 60)));
|
|
}
|
|
} else {
|
|
textView.setText(String.format(Locale.getDefault(), "%d小时前", hour));
|
|
}
|
|
} else if (day >= today - 86400 * 1000 && day < today) {
|
|
format.applyPattern("HH:mm");
|
|
textView.setText("昨天 ");
|
|
} else {
|
|
format.applyPattern("yyyy-MM-dd");
|
|
textView.setText(format.format(day));
|
|
}
|
|
} catch (ParseException e) {
|
|
e.printStackTrace();
|
|
format.applyPattern("yyyy-MM-dd");
|
|
textView.setText(format.format(time * 1000));
|
|
}
|
|
}
|
|
|
|
public static void showGameCommentOptions(final Context context,
|
|
final RatingComment comment,
|
|
final String gameId,
|
|
final String entrance) {
|
|
|
|
final Dialog dialog = new Dialog(context);
|
|
|
|
LinearLayout container = new LinearLayout(context);
|
|
container.setOrientation(LinearLayout.VERTICAL);
|
|
container.setBackgroundColor(Color.WHITE);
|
|
container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
|
|
List<String> dialogType = new ArrayList<>();
|
|
|
|
dialogType.add("复制");
|
|
dialogType.add("举报");
|
|
|
|
|
|
for (String s : dialogType) {
|
|
final TextView reportTv = new TextView(context);
|
|
reportTv.setText(s);
|
|
reportTv.setTextSize(17);
|
|
reportTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
reportTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
reportTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
0, DisplayUtils.dip2px(context, 12));
|
|
container.addView(reportTv);
|
|
|
|
reportTv.setOnClickListener(v -> {
|
|
dialog.cancel();
|
|
switch (reportTv.getText().toString()) {
|
|
case "复制":
|
|
copyText(comment.getContent(), context);
|
|
break;
|
|
case "举报":
|
|
CheckLoginUtils.checkLogin(context, entrance, () -> showGameCommentReportDialog(gameId, comment, context));
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
|
|
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
dialog.setContentView(container);
|
|
dialog.show();
|
|
}
|
|
|
|
private static void showGameCommentReportDialog(final String gameId, final RatingComment comment, final Context context) {
|
|
final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息",
|
|
"违法有害信息", "其它"};
|
|
int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
|
|
final Dialog reportTypeDialog = new Dialog(context);
|
|
LinearLayout container = new LinearLayout(context);
|
|
container.setOrientation(LinearLayout.VERTICAL);
|
|
container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
container.setBackgroundColor(Color.WHITE);
|
|
|
|
for (final String s : arrReportType) {
|
|
TextView reportTypeTv = new TextView(context);
|
|
reportTypeTv.setText(s);
|
|
reportTypeTv.setTextSize(17);
|
|
reportTypeTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
reportTypeTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
reportTypeTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
0, DisplayUtils.dip2px(context, 12));
|
|
container.addView(reportTypeTv);
|
|
|
|
reportTypeTv.setOnClickListener(v -> {
|
|
JSONObject jsonObject = new JSONObject();
|
|
try {
|
|
jsonObject.put("reason", s);
|
|
} catch (JSONException e) {
|
|
e.printStackTrace();
|
|
}
|
|
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
|
|
RetrofitManager.getInstance(context).getApi()
|
|
.reportGameComment(gameId, comment.getId(), body)
|
|
.subscribeOn(Schedulers.io())
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
.subscribe(new Response<ResponseBody>() {
|
|
@Override
|
|
public void onResponse(@Nullable ResponseBody response) {
|
|
Utils.toast(context, "感谢您的举报");
|
|
}
|
|
|
|
@Override
|
|
public void onFailure(@Nullable HttpException e) {
|
|
Utils.toast(context, "举报失败,请先检查网络设置");
|
|
}
|
|
});
|
|
|
|
reportTypeDialog.cancel();
|
|
});
|
|
}
|
|
|
|
reportTypeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
reportTypeDialog.setContentView(container);
|
|
reportTypeDialog.show();
|
|
}
|
|
|
|
|
|
public static void showReportDialog(final CommentEntity commentEntity,
|
|
final Context context,
|
|
final boolean showConversation,
|
|
final OnCommentCallBackListener listener,
|
|
final String newsId,
|
|
final String patch) {
|
|
final Dialog dialog = new Dialog(context);
|
|
|
|
LinearLayout container = new LinearLayout(context);
|
|
container.setOrientation(LinearLayout.VERTICAL);
|
|
container.setBackgroundColor(Color.WHITE);
|
|
container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
|
|
List<String> dialogType = new ArrayList<>();
|
|
|
|
if (commentEntity.getMe() == null || !commentEntity.getMe().isCommentOwn()) {
|
|
dialogType.add("回复");
|
|
}
|
|
|
|
dialogType.add("复制");
|
|
dialogType.add("举报");
|
|
|
|
if (commentEntity.getParent() != null && showConversation) {
|
|
dialogType.add("查看对话");
|
|
}
|
|
|
|
for (String s : dialogType) {
|
|
final TextView reportTv = new TextView(context);
|
|
reportTv.setText(s);
|
|
reportTv.setTextSize(17);
|
|
reportTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
reportTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
reportTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
0, DisplayUtils.dip2px(context, 12));
|
|
container.addView(reportTv);
|
|
|
|
reportTv.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
dialog.cancel();
|
|
switch (reportTv.getText().toString()) {
|
|
case "回复":
|
|
CheckLoginUtils.checkLogin(context, patch + "-回复", () -> {
|
|
if (listener != null) {
|
|
listener.onCommentCallback(commentEntity);
|
|
} else if (!TextUtils.isEmpty(newsId)) {
|
|
context.startActivity(MessageDetailActivity.getMessageDetailIntent(context, commentEntity, newsId));
|
|
} else {
|
|
Utils.toast(context, "缺少关键属性");
|
|
}
|
|
});
|
|
break;
|
|
case "复制":
|
|
copyText(commentEntity.getContent(), context);
|
|
break;
|
|
case "举报":
|
|
CheckLoginUtils.checkLogin(context, patch + "-举报",
|
|
() -> showReportTypeDialog(commentEntity, context));
|
|
|
|
break;
|
|
case "查看对话":
|
|
context.startActivity(CommentDetailActivity.getIntent(context, commentEntity.getId(), null));
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
dialog.setContentView(container);
|
|
dialog.show();
|
|
|
|
}
|
|
|
|
// public static void showAnswerCommentOptions(final CommentEntity commentEntity, final Context context,
|
|
// final OnCommentCallBackListener listener, final String id,
|
|
// boolean showConversation, String answerId, String articleId, String articleCommunityId) {
|
|
//
|
|
// final Dialog dialog = new Dialog(context);
|
|
//
|
|
// LinearLayout container = new LinearLayout(context);
|
|
// container.setOrientation(LinearLayout.VERTICAL);
|
|
// container.setBackgroundColor(Color.WHITE);
|
|
// container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
//
|
|
// List<String> dialogType = new ArrayList<>();
|
|
//
|
|
// if (commentEntity.getMe() == null || !commentEntity.getMe().isAnswerCommented()) {
|
|
// dialogType.add("回复");
|
|
// }
|
|
//
|
|
// dialogType.add("复制");
|
|
// dialogType.add("举报");
|
|
//
|
|
// if (commentEntity.getParentUser() != null && showConversation) {
|
|
// dialogType.add("查看对话");
|
|
// }
|
|
//
|
|
// for (String s : dialogType) {
|
|
// final TextView reportTv = new TextView(context);
|
|
// reportTv.setText(s);
|
|
// reportTv.setTextSize(17);
|
|
// reportTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
// reportTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
// int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
// reportTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
// LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
// reportTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
// 0, DisplayUtils.dip2px(context, 12));
|
|
// container.addView(reportTv);
|
|
//
|
|
// reportTv.setOnClickListener(v -> {
|
|
// dialog.cancel();
|
|
// switch (reportTv.getText().toString()) {
|
|
// case "回复":
|
|
// CheckLoginUtils.checkLogin(context, () -> {
|
|
// if (listener != null) {
|
|
// listener.onCommentCallback(commentEntity);
|
|
// } else if (!TextUtils.isEmpty(id)) {
|
|
// context.startActivity(MessageDetailActivity.getMessageDetailIntent(context, commentEntity, id));
|
|
// } else {
|
|
// Utils.toast(context, "缺少关键属性");
|
|
// }
|
|
// });
|
|
// break;
|
|
// case "复制":
|
|
// copyText(commentEntity.getContent(), context);
|
|
// break;
|
|
// case "举报":
|
|
// CheckLoginUtils.checkLogin(context, () -> showAnswerReportDialog(answerId, commentEntity, context));
|
|
// break;
|
|
// case "查看对话":
|
|
// if (TextUtils.isEmpty(articleId)) {
|
|
// context.startActivity(CommentDetailActivity.getAnswerCommentIntent(context, commentEntity.getId(), answerId, null));
|
|
// } else {
|
|
// context.startActivity(CommentDetailActivity.getCommunityArticleCommentIntent(context, articleId, commentEntity.getId(), articleCommunityId, null));
|
|
// }
|
|
// break;
|
|
// }
|
|
// });
|
|
// }
|
|
//
|
|
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
// dialog.setContentView(container);
|
|
// dialog.show();
|
|
// }
|
|
|
|
// private static void showAnswerReportDialog(final String answerId, final CommentEntity commentEntity, final Context context) {
|
|
// final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息",
|
|
// "违法有害信息", "其它"};
|
|
// int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
//
|
|
// final Dialog reportTypeDialog = new Dialog(context);
|
|
// LinearLayout container = new LinearLayout(context);
|
|
// container.setOrientation(LinearLayout.VERTICAL);
|
|
// container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
// container.setBackgroundColor(Color.WHITE);
|
|
//
|
|
// for (final String s : arrReportType) {
|
|
// TextView reportTypeTv = new TextView(context);
|
|
// reportTypeTv.setText(s);
|
|
// reportTypeTv.setTextSize(17);
|
|
// reportTypeTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
// reportTypeTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
// reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
// LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
// reportTypeTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
// 0, DisplayUtils.dip2px(context, 12));
|
|
// container.addView(reportTypeTv);
|
|
//
|
|
// reportTypeTv.setOnClickListener(v -> {
|
|
// JSONObject jsonObject = new JSONObject();
|
|
// try {
|
|
// jsonObject.put("reason", s);
|
|
// } catch (JSONException e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
//
|
|
// PostCommentUtils.postAnswerReportData(context, commentEntity.getId(), answerId, jsonObject.toString(),
|
|
// new PostCommentUtils.PostCommentListener() {
|
|
// @Override
|
|
// public void postSuccess(JSONObject response) {
|
|
// Utils.toast(context, "感谢您的举报");
|
|
// }
|
|
//
|
|
// @Override
|
|
// public void postFailed(Throwable error) {
|
|
// if (error != null) {
|
|
// Utils.toast(context, "举报失败" + error.getMessage());
|
|
// } else {
|
|
// Utils.toast(context, "举报失败,请稍候重试");
|
|
// }
|
|
// }
|
|
// });
|
|
// reportTypeDialog.cancel();
|
|
// });
|
|
// }
|
|
//
|
|
// reportTypeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
// reportTypeDialog.setContentView(container);
|
|
// reportTypeDialog.show();
|
|
// }
|
|
|
|
private static void showReportTypeDialog(final CommentEntity commentEntity, final Context context) {
|
|
final String[] arrReportType = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息",
|
|
"违法有害信息", "其它"};
|
|
int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
|
|
|
|
final Dialog reportTypeDialog = new Dialog(context);
|
|
LinearLayout container = new LinearLayout(context);
|
|
container.setOrientation(LinearLayout.VERTICAL);
|
|
container.setPadding(0, DisplayUtils.dip2px(context, 12), 0, DisplayUtils.dip2px(context, 12));
|
|
container.setBackgroundColor(Color.WHITE);
|
|
|
|
for (final String s : arrReportType) {
|
|
TextView reportTypeTv = new TextView(context);
|
|
reportTypeTv.setText(s);
|
|
reportTypeTv.setTextSize(17);
|
|
reportTypeTv.setTextColor(ContextCompat.getColor(context, R.color.title));
|
|
reportTypeTv.setBackgroundResource(R.drawable.textview_white_style);
|
|
reportTypeTv.setLayoutParams(new LinearLayout.LayoutParams((widthPixels * 9) / 10,
|
|
LinearLayout.LayoutParams.WRAP_CONTENT));
|
|
reportTypeTv.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 12),
|
|
0, DisplayUtils.dip2px(context, 12));
|
|
container.addView(reportTypeTv);
|
|
|
|
reportTypeTv.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
JSONObject jsonObject = new JSONObject();
|
|
try {
|
|
jsonObject.put("comment_id", commentEntity.getId());
|
|
jsonObject.put("reason", s);
|
|
} catch (JSONException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
PostCommentUtils.addReportData(context, commentEntity.getId(), jsonObject.toString(),
|
|
new PostCommentUtils.PostCommentListener() {
|
|
@Override
|
|
public void postSuccess(JSONObject response) {
|
|
Utils.toast(context, "感谢您的举报");
|
|
}
|
|
|
|
@Override
|
|
public void postFailed(Throwable error) {
|
|
Utils.toast(context, "举报失败,请检查网络设置");
|
|
}
|
|
});
|
|
reportTypeDialog.cancel();
|
|
}
|
|
});
|
|
}
|
|
|
|
reportTypeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
|
reportTypeDialog.setContentView(container);
|
|
reportTypeDialog.show();
|
|
}
|
|
|
|
public static void postVote(final Context context, final CommentEntity commentEntity,
|
|
final TextView commentLikeCountTv, final ImageView commentLikeIv,
|
|
final OnVoteListener listener) {
|
|
if (commentLikeCountTv.getCurrentTextColor() == ContextCompat.getColor(context, R.color.theme)) {
|
|
Utils.toast(context, "已经点过赞啦!");
|
|
return;
|
|
}
|
|
commentEntity.setVote(commentEntity.getVote() + 1);
|
|
commentLikeCountTv.setTextColor(ContextCompat.getColor(context, R.color.theme));
|
|
commentLikeIv.setImageResource(R.drawable.vote_icon_select);
|
|
commentLikeCountTv.setText(String.valueOf(commentEntity.getVote()));
|
|
commentLikeCountTv.setVisibility(View.VISIBLE);
|
|
|
|
PostCommentUtils.addCommentVote(context, commentEntity.getId(),
|
|
new PostCommentUtils.PostCommentListener() {
|
|
@Override
|
|
public void postSuccess(JSONObject response) {
|
|
if (listener != null) {
|
|
listener.onVote();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void postFailed(Throwable e) {
|
|
|
|
commentEntity.setVote(commentEntity.getVote() - 1);
|
|
commentLikeCountTv.setTextColor(ContextCompat.getColor(context, R.color.hint));
|
|
commentLikeIv.setImageResource(R.drawable.vote_icon_unselect);
|
|
commentLikeCountTv.setText(String.valueOf(commentEntity.getVote()));
|
|
if (commentEntity.getVote() == 0) {
|
|
commentLikeCountTv.setVisibility(View.GONE);
|
|
} else {
|
|
commentLikeCountTv.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
if (e instanceof HttpException) {
|
|
HttpException exception = (HttpException) e;
|
|
if (exception.code() == 403) {
|
|
try {
|
|
String detail = new JSONObject(exception.response().errorBody().string()).getString("detail");
|
|
if ("voted".equals(detail)) {
|
|
Utils.toast(context, "已经点过赞啦!");
|
|
}
|
|
} catch (Exception ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
Utils.toast(context, "网络异常,点赞失败");
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void postVoteToAnswerComment(final Context context, String answerId, String articleId,
|
|
String articleCommunityId, final CommentEntity commentEntity,
|
|
final TextView commentLikeCountTv, final ImageView commentLikeIv, final OnVoteListener listener) {
|
|
|
|
String entrance = "回答详情-评论-点赞";
|
|
if (TextUtils.isEmpty(articleId)) {
|
|
entrance = "社区文章详情-评论-点赞";
|
|
}
|
|
CheckLoginUtils.checkLogin(context, entrance, () -> {
|
|
if (commentLikeCountTv.getCurrentTextColor() == ContextCompat.getColor(context, R.color.theme)) {
|
|
Utils.toast(context, "已经点过赞啦!");
|
|
return;
|
|
}
|
|
commentEntity.setVote(commentEntity.getVote() + 1);
|
|
commentLikeCountTv.setTextColor(ContextCompat.getColor(context, R.color.theme));
|
|
commentLikeIv.setImageResource(R.drawable.vote_icon_select);
|
|
commentLikeCountTv.setText(String.valueOf(commentEntity.getVote()));
|
|
commentLikeCountTv.setVisibility(View.VISIBLE);
|
|
|
|
PostCommentUtils.voteAnswerComment(context, answerId, articleId, articleCommunityId, commentEntity.getId(),
|
|
new PostCommentUtils.PostCommentListener() {
|
|
@Override
|
|
public void postSuccess(JSONObject response) {
|
|
if (listener != null) {
|
|
listener.onVote();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void postFailed(Throwable e) {
|
|
|
|
commentEntity.setVote(commentEntity.getVote() - 1);
|
|
commentLikeCountTv.setTextColor(ContextCompat.getColor(context, R.color.hint));
|
|
commentLikeIv.setImageResource(R.drawable.vote_icon_unselect);
|
|
commentLikeCountTv.setText(String.valueOf(commentEntity.getVote()));
|
|
if (commentEntity.getVote() == 0) {
|
|
commentLikeCountTv.setVisibility(View.GONE);
|
|
} else {
|
|
commentLikeCountTv.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
if (e instanceof HttpException) {
|
|
HttpException exception = (HttpException) e;
|
|
if (exception.code() == 403) {
|
|
try {
|
|
String detail = new JSONObject(exception.response().errorBody().string()).getString("detail");
|
|
if ("voted".equals(detail)) {
|
|
Utils.toast(context, "已经点过赞啦!");
|
|
}
|
|
} catch (Exception ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
Utils.toast(context, "网络异常,点赞失败");
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
// 设置评论item 用户相关的view(点赞/头像/用户名)
|
|
public static void setCommentUserView(Context mContext, CommentViewHolder holder, CommentEntity entity) {
|
|
MeEntity userDataEntity = entity.getMe();
|
|
holder.commentLikeCountTv.setTextColor(ContextCompat.getColor(mContext, R.color.hint));
|
|
holder.commentLikeIv.setImageResource(R.drawable.vote_icon_unselect);
|
|
|
|
if (entity.getVote() == 0) {
|
|
holder.commentLikeCountTv.setVisibility(View.GONE);
|
|
} else { // 检查是否已点赞
|
|
if (userDataEntity != null && (userDataEntity.isCommentVoted() || userDataEntity.isAnswerCommentVoted())) {
|
|
holder.commentLikeCountTv.setTextColor(ContextCompat.getColor(mContext, R.color.theme));
|
|
holder.commentLikeIv.setImageResource(R.drawable.vote_icon_select);
|
|
}
|
|
holder.commentLikeCountTv.setVisibility(View.VISIBLE);
|
|
holder.commentLikeCountTv.setText(NumberUtils.transSimpleCount(entity.getVote()));
|
|
}
|
|
|
|
//检查是否是自身评论
|
|
UserInfoEntity userInfo = UserManager.getInstance().getUserInfoEntity();
|
|
if (userDataEntity != null && userDataEntity.isCommentOwn() && userInfo != null) {
|
|
if (entity.getMe() != null && entity.getMe().isAnswerOwn()) {
|
|
holder.commentUserNameTv.setText(userInfo.getName() + "(作者)");
|
|
} else {
|
|
holder.commentUserNameTv.setText(userInfo.getName());
|
|
}
|
|
if (userInfo.getAuth() != null) {
|
|
ImageUtils.display(holder.commentUserBadgeIv, userInfo.getAuth().getIcon());
|
|
} else {
|
|
ImageUtils.display(holder.commentUserBadgeIv, "");
|
|
}
|
|
ImageUtils.displayIcon(holder.commentUserIconDv, userInfo.getIcon());
|
|
} else {
|
|
if (entity.getMe() != null && entity.getMe().isAnswerOwn()) {
|
|
holder.commentUserNameTv.setText(entity.getUser().getName() + "(作者)");
|
|
} else {
|
|
holder.commentUserNameTv.setText(entity.getUser().getName());
|
|
}
|
|
if (entity.getUser().getAuth() != null) {
|
|
ImageUtils.display(holder.commentUserBadgeIv, entity.getUser().getAuth().getIcon());
|
|
} else {
|
|
ImageUtils.display(holder.commentUserBadgeIv, "");
|
|
}
|
|
if (TextUtils.isEmpty(entity.getUser().getIcon())) {
|
|
ImageUtils.display(holder.commentUserIconDv, R.drawable.user_default_icon_comment);
|
|
} else {
|
|
ImageUtils.displayIcon(holder.commentUserIconDv, entity.getUser().getIcon());
|
|
}
|
|
}
|
|
}
|
|
|
|
//复制文字
|
|
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();
|
|
}
|
|
}
|