|
@@ -4,12 +4,16 @@ import android.graphics.Color;
|
|
import android.text.Html;
|
|
import android.text.Html;
|
|
import android.text.SpannableStringBuilder;
|
|
import android.text.SpannableStringBuilder;
|
|
import android.text.TextUtils;
|
|
import android.text.TextUtils;
|
|
|
|
+import android.util.Log;
|
|
import android.view.View;
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.TextView;
|
|
import android.widget.TextView;
|
|
|
|
|
|
import com.bumptech.glide.Glide;
|
|
import com.bumptech.glide.Glide;
|
|
|
|
+import com.tencent.imsdk.v2.V2TIMManager;
|
|
|
|
+import com.tencent.imsdk.v2.V2TIMUserFullInfo;
|
|
|
|
+import com.tencent.imsdk.v2.V2TIMValueCallback;
|
|
import com.tencent.qcloud.tim.uikit.R;
|
|
import com.tencent.qcloud.tim.uikit.R;
|
|
import com.tencent.qcloud.tim.uikit.TUIKit;
|
|
import com.tencent.qcloud.tim.uikit.TUIKit;
|
|
import com.tencent.qcloud.tim.uikit.base.TUIConversationControllerListener;
|
|
import com.tencent.qcloud.tim.uikit.base.TUIConversationControllerListener;
|
|
@@ -23,6 +27,8 @@ import com.tencent.qcloud.tim.uikit.utils.TUIKitConstants;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
@@ -38,6 +44,8 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
protected TextView unreadText;
|
|
protected TextView unreadText;
|
|
protected TextView atInfoText;
|
|
protected TextView atInfoText;
|
|
protected ImageView disturbView;
|
|
protected ImageView disturbView;
|
|
|
|
+ protected TextView tvAgent;
|
|
|
|
+ protected TextView tvOfficial;
|
|
|
|
|
|
public ConversationCommonHolder(View itemView) {
|
|
public ConversationCommonHolder(View itemView) {
|
|
super(itemView);
|
|
super(itemView);
|
|
@@ -49,6 +57,8 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
unreadText = rootView.findViewById(R.id.conversation_unread);
|
|
unreadText = rootView.findViewById(R.id.conversation_unread);
|
|
atInfoText = rootView.findViewById(R.id.conversation_at_msg);
|
|
atInfoText = rootView.findViewById(R.id.conversation_at_msg);
|
|
disturbView = rootView.findViewById(R.id.not_disturb);
|
|
disturbView = rootView.findViewById(R.id.not_disturb);
|
|
|
|
+ tvAgent = rootView.findViewById(R.id.tvAgent);
|
|
|
|
+ tvOfficial = rootView.findViewById(R.id.tvOfficial);
|
|
}
|
|
}
|
|
|
|
|
|
public void layoutViews(ConversationInfo conversation, int position) {
|
|
public void layoutViews(ConversationInfo conversation, int position) {
|
|
@@ -84,7 +94,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
if (lastMsg != null) {
|
|
if (lastMsg != null) {
|
|
// 如果最后一条消息是自定义消息,由消息创建者决定显示什么字符
|
|
// 如果最后一条消息是自定义消息,由消息创建者决定显示什么字符
|
|
if (lastMsg.getMsgType() > MessageInfo.MSG_STATUS_REVOKE) {
|
|
if (lastMsg.getMsgType() > MessageInfo.MSG_STATUS_REVOKE) {
|
|
- for(TUIConversationControllerListener conversationListener : TUIKitListenerManager.getInstance().getTUIConversationListeners()) {
|
|
|
|
|
|
+ for (TUIConversationControllerListener conversationListener : TUIKitListenerManager.getInstance().getTUIConversationListeners()) {
|
|
CharSequence displayStr = conversationListener.getConversationDisplayString(lastMsg);
|
|
CharSequence displayStr = conversationListener.getConversationDisplayString(lastMsg);
|
|
if (displayStr != null) {
|
|
if (displayStr != null) {
|
|
messageText.setText(displayStr);
|
|
messageText.setText(displayStr);
|
|
@@ -141,7 +151,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
unreadText.setVisibility(View.GONE);
|
|
unreadText.setVisibility(View.GONE);
|
|
}
|
|
}
|
|
|
|
|
|
- if(conversation.getLastMessage()!=null&&conversation.getLastMessage().getTimMessage()!=null) {
|
|
|
|
|
|
+ if (conversation.getLastMessage() != null && conversation.getLastMessage().getTimMessage() != null) {
|
|
Glide.with(itemView.getContext()).load(conversation.getConversationFaceUrl())
|
|
Glide.with(itemView.getContext()).load(conversation.getConversationFaceUrl())
|
|
.placeholder(R.mipmap.default_avatar)
|
|
.placeholder(R.mipmap.default_avatar)
|
|
.error(R.mipmap.default_avatar).into(conversationIconView);
|
|
.error(R.mipmap.default_avatar).into(conversationIconView);
|
|
@@ -153,18 +163,61 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
disturbView.setVisibility(View.GONE);
|
|
disturbView.setVisibility(View.GONE);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //设置
|
|
|
|
+ ArrayList<String> data = new ArrayList();
|
|
|
|
+ data.add(conversation.getId());
|
|
|
|
+ V2TIMManager.getInstance().getUsersInfo(data, new V2TIMValueCallback<List<V2TIMUserFullInfo>>() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onSuccess(List<V2TIMUserFullInfo> v2TIMUserFullInfo) {
|
|
|
|
+ if (!v2TIMUserFullInfo.isEmpty()) {
|
|
|
|
+ HashMap<String, byte[]> customInfo = v2TIMUserFullInfo.get(0).getCustomInfo();
|
|
|
|
+ byte[] byteService = customInfo.get("service");
|
|
|
|
+ String is_service = "";
|
|
|
|
+ String is_official = "";
|
|
|
|
+ if (byteService == null) {
|
|
|
|
+ is_service = "0";
|
|
|
|
+ } else {
|
|
|
|
+ is_service = new String(byteService);
|
|
|
|
+ }
|
|
|
|
+ byte[] byteOfficial = customInfo.get("official");
|
|
|
|
+ if (byteOfficial == null) {
|
|
|
|
+ is_official = "0";
|
|
|
|
+ } else {
|
|
|
|
+ is_official = new String(byteOfficial);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Log.d("ffddf", "dfssfdf");
|
|
|
|
+ if ("1".equals(is_service)) {
|
|
|
|
+ tvAgent.setVisibility(View.VISIBLE);
|
|
|
|
+ } else {
|
|
|
|
+ tvAgent.setVisibility(View.GONE);
|
|
|
|
+ }
|
|
|
|
+ if ("1".equals(is_official)) {
|
|
|
|
+ tvOfficial.setVisibility(View.VISIBLE);
|
|
|
|
+ } else {
|
|
|
|
+ tvAgent.setVisibility(View.GONE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onError(int i, String s) {
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
//// 由子类设置指定消息类型的views
|
|
//// 由子类设置指定消息类型的views
|
|
layoutVariableViews(conversation, position);
|
|
layoutVariableViews(conversation, position);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- private static String emojiJudge(String text){
|
|
|
|
- if (TextUtils.isEmpty(text)){
|
|
|
|
|
|
+ private static String emojiJudge(String text) {
|
|
|
|
+ if (TextUtils.isEmpty(text)) {
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
|
|
|
|
String[] emojiList = FaceManager.getEmojiFilters();
|
|
String[] emojiList = FaceManager.getEmojiFilters();
|
|
- if (emojiList ==null || emojiList.length == 0){
|
|
|
|
|
|
+ if (emojiList == null || emojiList.length == 0) {
|
|
return text;
|
|
return text;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -188,12 +241,12 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
|
|
|
|
int index = findeEmoji(emojiName);
|
|
int index = findeEmoji(emojiName);
|
|
String[] emojiListValues = FaceManager.getEmojiFiltersValues();
|
|
String[] emojiListValues = FaceManager.getEmojiFiltersValues();
|
|
- if (index != -1 && emojiListValues != null && emojiListValues.length >= index){
|
|
|
|
|
|
+ if (index != -1 && emojiListValues != null && emojiListValues.length >= index) {
|
|
emojiName = emojiListValues[index];
|
|
emojiName = emojiListValues[index];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- EmojiData emojiData =new EmojiData();
|
|
|
|
|
|
+ EmojiData emojiData = new EmojiData();
|
|
emojiData.setStart(start);
|
|
emojiData.setStart(start);
|
|
emojiData.setEnd(end);
|
|
emojiData.setEnd(end);
|
|
emojiData.setEmojiText(emojiName);
|
|
emojiData.setEmojiText(emojiName);
|
|
@@ -202,10 +255,10 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
}
|
|
}
|
|
|
|
|
|
//倒叙替换
|
|
//倒叙替换
|
|
- if (emojiDataArrayList.isEmpty()){
|
|
|
|
|
|
+ if (emojiDataArrayList.isEmpty()) {
|
|
return text;
|
|
return text;
|
|
}
|
|
}
|
|
- for (int i = emojiDataArrayList.size() - 1; i >= 0; i--){
|
|
|
|
|
|
+ for (int i = emojiDataArrayList.size() - 1; i >= 0; i--) {
|
|
EmojiData emojiData = emojiDataArrayList.get(i);
|
|
EmojiData emojiData = emojiDataArrayList.get(i);
|
|
String emojiName = emojiData.getEmojiText();
|
|
String emojiName = emojiData.getEmojiText();
|
|
int start = emojiData.getStart();
|
|
int start = emojiData.getStart();
|
|
@@ -218,19 +271,19 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
return sb.toString();
|
|
return sb.toString();
|
|
}
|
|
}
|
|
|
|
|
|
- private static int findeEmoji(String text){
|
|
|
|
|
|
+ private static int findeEmoji(String text) {
|
|
int result = -1;
|
|
int result = -1;
|
|
- if (TextUtils.isEmpty(text)){
|
|
|
|
|
|
+ if (TextUtils.isEmpty(text)) {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
String[] emojiList = FaceManager.getEmojiFilters();
|
|
String[] emojiList = FaceManager.getEmojiFilters();
|
|
- if (emojiList ==null || emojiList.length == 0){
|
|
|
|
|
|
+ if (emojiList == null || emojiList.length == 0) {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
- for (int i = 0; i < emojiList.length; i++){
|
|
|
|
- if (text.equals(emojiList[i])){
|
|
|
|
|
|
+ for (int i = 0; i < emojiList.length; i++) {
|
|
|
|
+ if (text.equals(emojiList[i])) {
|
|
result = i;
|
|
result = i;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -243,7 +296,7 @@ public class ConversationCommonHolder extends ConversationBaseHolder {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- private static class EmojiData{
|
|
|
|
|
|
+ private static class EmojiData {
|
|
private int start;
|
|
private int start;
|
|
private int end;
|
|
private int end;
|
|
private String emojiText;
|
|
private String emojiText;
|