|
@@ -5,7 +5,9 @@ import android.os.Handler;
|
|
|
import android.os.Message;
|
|
|
import android.text.TextUtils;
|
|
|
import android.util.Log;
|
|
|
+
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
+
|
|
|
import com.google.gson.Gson;
|
|
|
import com.tencent.imsdk.BaseConstants;
|
|
|
import com.tencent.qcloud.tuicore.TUIConfig;
|
|
@@ -54,6 +56,7 @@ import com.tencent.qcloud.tuikit.tuichat.util.ChatMessageParser;
|
|
|
import com.tencent.qcloud.tuikit.tuichat.util.OfflinePushInfoUtils;
|
|
|
import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
|
|
|
import com.tencent.qcloud.tuikit.tuichat.util.TUIChatUtils;
|
|
|
+
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
@@ -150,7 +153,8 @@ public abstract class ChatPresenter {
|
|
|
loadMessage(type, locateMessage, null);
|
|
|
}
|
|
|
|
|
|
- public void loadMessage(int type, TUIMessageBean locateMessage, IUIKitCallback<List<TUIMessageBean>> callback) {}
|
|
|
+ public void loadMessage(int type, TUIMessageBean locateMessage, IUIKitCallback<List<TUIMessageBean>> callback) {
|
|
|
+ }
|
|
|
|
|
|
public void clearMessage() {
|
|
|
loadedMessageInfoList.clear();
|
|
@@ -193,7 +197,8 @@ public abstract class ChatPresenter {
|
|
|
|
|
|
locateMessage(messageBean.getId(), new IUIKitCallback<Void>() {
|
|
|
@Override
|
|
|
- public void onSuccess(Void data) {}
|
|
|
+ public void onSuccess(Void data) {
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void onError(String module, int errCode, String errMsg) {
|
|
@@ -234,7 +239,8 @@ public abstract class ChatPresenter {
|
|
|
updateAdapter(IMessageRecyclerView.DATA_CHANGE_TYPE_REFRESH, 0);
|
|
|
loadMessage(TUIChatConstants.GET_MESSAGE_LOCATE, data, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
|
@Override
|
|
|
- public void onSuccess(List<TUIMessageBean> data) {}
|
|
|
+ public void onSuccess(List<TUIMessageBean> data) {
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void onError(String module, int errCode, String errMsg) {
|
|
@@ -277,7 +283,7 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
private void loadToWayMessageAsync(
|
|
|
- String chatId, boolean isGroup, int getType, int loadCount, TUIMessageBean locateMessageInfo, IUIKitCallback<List<TUIMessageBean>> callback) {
|
|
|
+ String chatId, boolean isGroup, int getType, int loadCount, TUIMessageBean locateMessageInfo, IUIKitCallback<List<TUIMessageBean>> callback) {
|
|
|
List<TUIMessageBean> firstLoadedData = new ArrayList<>();
|
|
|
List<TUIMessageBean> secondLoadedData = new ArrayList<>();
|
|
|
firstLoadedData.add(locateMessageInfo);
|
|
@@ -288,25 +294,25 @@ public abstract class ChatPresenter {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
provider.loadHistoryMessageList(
|
|
|
- chatId, isGroup, loadCount / 2, locateMessageInfo, TUIChatConstants.GET_MESSAGE_BACKWARD, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
|
- @Override
|
|
|
- public void onSuccess(List<TUIMessageBean> firstData) {
|
|
|
- if (firstData.size() >= loadCount / 2) {
|
|
|
- isHaveMoreNewMessage = true;
|
|
|
- } else {
|
|
|
- isHaveMoreNewMessage = false;
|
|
|
+ chatId, isGroup, loadCount / 2, locateMessageInfo, TUIChatConstants.GET_MESSAGE_BACKWARD, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(List<TUIMessageBean> firstData) {
|
|
|
+ if (firstData.size() >= loadCount / 2) {
|
|
|
+ isHaveMoreNewMessage = true;
|
|
|
+ } else {
|
|
|
+ isHaveMoreNewMessage = false;
|
|
|
+ }
|
|
|
+ firstLoadedData.addAll(firstData);
|
|
|
+ latch.countDown();
|
|
|
}
|
|
|
- firstLoadedData.addAll(firstData);
|
|
|
- latch.countDown();
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void onError(String module, int errCode, String errMsg) {
|
|
|
- TUIChatUtils.callbackOnError(callback, errCode, errMsg);
|
|
|
- isFailed[0] = true;
|
|
|
- latch.countDown();
|
|
|
- }
|
|
|
- });
|
|
|
+ @Override
|
|
|
+ public void onError(String module, int errCode, String errMsg) {
|
|
|
+ TUIChatUtils.callbackOnError(callback, errCode, errMsg);
|
|
|
+ isFailed[0] = true;
|
|
|
+ latch.countDown();
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -316,22 +322,22 @@ public abstract class ChatPresenter {
|
|
|
// 拉取历史消息的时候不会把 lastMsg 返回,需要手动添加上
|
|
|
// LastMsg will not be returned when pulling historical messages, you need to add it manually
|
|
|
provider.loadHistoryMessageList(
|
|
|
- chatId, isGroup, loadCount / 2, locateMessageInfo, TUIChatConstants.GET_MESSAGE_FORWARD, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
|
- @Override
|
|
|
- public void onSuccess(List<TUIMessageBean> secondData) {
|
|
|
- if (secondData.size() < loadCount / 2) {
|
|
|
- isHaveMoreOldMessage = false;
|
|
|
+ chatId, isGroup, loadCount / 2, locateMessageInfo, TUIChatConstants.GET_MESSAGE_FORWARD, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(List<TUIMessageBean> secondData) {
|
|
|
+ if (secondData.size() < loadCount / 2) {
|
|
|
+ isHaveMoreOldMessage = false;
|
|
|
+ }
|
|
|
+ secondLoadedData.addAll(secondData);
|
|
|
+ latch.countDown();
|
|
|
}
|
|
|
- secondLoadedData.addAll(secondData);
|
|
|
- latch.countDown();
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void onError(String module, int errCode, String errMsg) {
|
|
|
- isFailed[0] = true;
|
|
|
- latch.countDown();
|
|
|
- }
|
|
|
- });
|
|
|
+ @Override
|
|
|
+ public void onError(String module, int errCode, String errMsg) {
|
|
|
+ isFailed[0] = true;
|
|
|
+ latch.countDown();
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -365,7 +371,7 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
public void loadHistoryMessageList(
|
|
|
- String chatId, boolean isGroup, int getType, int loadCount, TUIMessageBean locateMessageInfo, IUIKitCallback<List<TUIMessageBean>> callback) {
|
|
|
+ String chatId, boolean isGroup, int getType, int loadCount, TUIMessageBean locateMessageInfo, IUIKitCallback<List<TUIMessageBean>> callback) {
|
|
|
// 如果是前后同时拉取消息,需要拉取两次,第一次向后拉取,第二次向前拉取
|
|
|
// 例如现在有消息 1,2,3,4,5,6,7 locateMessageInfo 是 4
|
|
|
// 如果 getType 为 GET_MESSAGE_FORWARD, 就会拉取到消息 1,2,3
|
|
@@ -399,7 +405,8 @@ public abstract class ChatPresenter {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- protected void onMessageLoadCompleted(List<TUIMessageBean> data, int getType){}
|
|
|
+ protected void onMessageLoadCompleted(List<TUIMessageBean> data, int getType) {
|
|
|
+ }
|
|
|
|
|
|
protected void processLoadedMessage(List<TUIMessageBean> data, int type) {
|
|
|
preProcessMessage(data, new IUIKitCallback<List<TUIMessageBean>>() {
|
|
@@ -918,10 +925,11 @@ public abstract class ChatPresenter {
|
|
|
Map<String, Object> param = new HashMap<>();
|
|
|
param.put(TUIConstants.TUIConversation.CONVERSATION_ID, conversationId);
|
|
|
TUICore.notifyEvent(TUIConstants.TUIConversation.EVENT_KEY_MESSAGE_SEND_FOR_CONVERSATION,
|
|
|
- TUIConstants.TUIConversation.EVENT_SUB_KEY_MESSAGE_SEND_FOR_CONVERSATION, param);
|
|
|
+ TUIConstants.TUIConversation.EVENT_SUB_KEY_MESSAGE_SEND_FOR_CONVERSATION, param);
|
|
|
}
|
|
|
|
|
|
- public void sendTypingStatusMessage(TUIMessageBean message, String receiver, IUIKitCallback<TUIMessageBean> callBack) {}
|
|
|
+ public void sendTypingStatusMessage(TUIMessageBean message, String receiver, IUIKitCallback<TUIMessageBean> callBack) {
|
|
|
+ }
|
|
|
|
|
|
public boolean isSupportTyping(long time) {
|
|
|
return false;
|
|
@@ -996,10 +1004,10 @@ public abstract class ChatPresenter {
|
|
|
if (chatInfo != null) {
|
|
|
if (chatInfo.getType() == ChatInfo.TYPE_GROUP) {
|
|
|
isNeedRefreshCacheNewMessage =
|
|
|
- messageInfo.getV2TIMMessage().getSeq() <= mCacheNewMessage.getV2TIMMessage().getSeq() ? true : false;
|
|
|
+ messageInfo.getV2TIMMessage().getSeq() <= mCacheNewMessage.getV2TIMMessage().getSeq() ? true : false;
|
|
|
} else {
|
|
|
isNeedRefreshCacheNewMessage =
|
|
|
- messageInfo.getV2TIMMessage().getTimestamp() <= mCacheNewMessage.getV2TIMMessage().getTimestamp() ? true : false;
|
|
|
+ messageInfo.getV2TIMMessage().getTimestamp() <= mCacheNewMessage.getV2TIMMessage().getTimestamp() ? true : false;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1132,7 +1140,8 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onError(String module, int errCode, String errMsg) {}
|
|
|
+ public void onError(String module, int errCode, String errMsg) {
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -1153,7 +1162,8 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onError(String module, int errCode, String errMsg) {}
|
|
|
+ public void onError(String module, int errCode, String errMsg) {
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -1237,7 +1247,7 @@ public abstract class ChatPresenter {
|
|
|
@Override
|
|
|
public void onError(String module, int errCode, String errMsg) {
|
|
|
if (errCode == ChatProvider.ERR_REVOKE_TIME_LIMIT_EXCEED || errCode == ChatProvider.ERR_REVOKE_TIME_LIMIT_SVR_GROUP
|
|
|
- || errCode == ChatProvider.ERR_REVOKE_TIME_LIMIT_SVR_MESSAGE) {
|
|
|
+ || errCode == ChatProvider.ERR_REVOKE_TIME_LIMIT_SVR_MESSAGE) {
|
|
|
ToastUtil.toastLongMessage(TUIChatService.getAppContext().getString(R.string.send_two_mins));
|
|
|
} else {
|
|
|
ToastUtil.toastLongMessage(TUIChatService.getAppContext().getString(R.string.revoke_fail) + errCode + "=" + errMsg);
|
|
@@ -1284,7 +1294,7 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
public void forwardMessage(List<TUIMessageBean> msgInfos, boolean isGroup, String id, String offlineTitle, int forwardMode, boolean selfConversation,
|
|
|
- final IUIKitCallback callBack) {
|
|
|
+ final IUIKitCallback callBack) {
|
|
|
if (!safetyCall()) {
|
|
|
TUIChatLog.w(TAG, "sendMessage unSafetyCall");
|
|
|
return;
|
|
@@ -1309,7 +1319,7 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
public void forwardMessageOneByOne(final List<TUIMessageBean> msgInfos, final boolean isGroup, final String id, final String offlineTitle,
|
|
|
- final boolean selfConversation, final IUIKitCallback callBack) {
|
|
|
+ final boolean selfConversation, final IUIKitCallback callBack) {
|
|
|
if (msgInfos == null || msgInfos.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
@@ -1339,7 +1349,7 @@ public abstract class ChatPresenter {
|
|
|
filterGroupMessageReceipt(message, id);
|
|
|
}
|
|
|
OfflineMessageBean entity = new OfflineMessageBean();
|
|
|
- entity.content = message.getExtra().toString();
|
|
|
+ entity.content = message.getExtra();
|
|
|
entity.sender = message.getSender();
|
|
|
entity.nickname = TUIConfig.getSelfNickName();
|
|
|
entity.faceUrl = TUIConfig.getSelfFaceUrl();
|
|
@@ -1406,10 +1416,11 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- protected void assembleGroupMessage(TUIMessageBean message) {}
|
|
|
+ protected void assembleGroupMessage(TUIMessageBean message) {
|
|
|
+ }
|
|
|
|
|
|
public void forwardMessageMerge(
|
|
|
- List<TUIMessageBean> msgInfos, boolean isGroup, String id, String offlineTitle, boolean selfConversation, final IUIKitCallback callBack) {
|
|
|
+ List<TUIMessageBean> msgInfos, boolean isGroup, String id, String offlineTitle, boolean selfConversation, final IUIKitCallback callBack) {
|
|
|
if (msgInfos == null || msgInfos.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
@@ -1447,7 +1458,7 @@ public abstract class ChatPresenter {
|
|
|
|
|
|
// createMergerMessage
|
|
|
TUIMessageBean msgInfo = ChatMessageBuilder.buildMergeMessage(
|
|
|
- msgInfos, offlineTitle, abstractList, TUIChatService.getAppContext().getString(R.string.forward_compatible_text));
|
|
|
+ msgInfos, offlineTitle, abstractList, TUIChatService.getAppContext().getString(R.string.forward_compatible_text));
|
|
|
|
|
|
if (selfConversation) {
|
|
|
sendMessage(msgInfo, false, callBack);
|
|
@@ -1484,7 +1495,7 @@ public abstract class ChatPresenter {
|
|
|
}
|
|
|
|
|
|
public void forwardMessageInternal(
|
|
|
- final TUIMessageBean message, boolean isGroup, String id, OfflinePushInfo offlinePushInfo, final IUIKitCallback callBack) {
|
|
|
+ final TUIMessageBean message, boolean isGroup, String id, OfflinePushInfo offlinePushInfo, final IUIKitCallback callBack) {
|
|
|
if (message == null) {
|
|
|
TUIChatLog.e(TAG, "forwardMessageInternal null message!");
|
|
|
return;
|
|
@@ -1831,9 +1842,11 @@ public abstract class ChatPresenter {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- public void getChatName(String chatID, IUIKitCallback<String> callback) {}
|
|
|
+ public void getChatName(String chatID, IUIKitCallback<String> callback) {
|
|
|
+ }
|
|
|
|
|
|
- public void getChatFaceUrl(String chatID, IUIKitCallback<List<Object>> callback) {}
|
|
|
+ public void getChatFaceUrl(String chatID, IUIKitCallback<List<Object>> callback) {
|
|
|
+ }
|
|
|
|
|
|
public void getReactUserBean(Set<String> userIds, IUIKitCallback<Map<String, UserBean>> callback) {
|
|
|
Map<String, UserBean> reactUserBeanMap = new HashMap<>();
|
|
@@ -1898,17 +1911,23 @@ public abstract class ChatPresenter {
|
|
|
|
|
|
public interface ChatNotifyHandler {
|
|
|
|
|
|
- default void onGroupForceExit() {}
|
|
|
+ default void onGroupForceExit() {
|
|
|
+ }
|
|
|
|
|
|
- default void onGroupNameChanged(String newName) {}
|
|
|
+ default void onGroupNameChanged(String newName) {
|
|
|
+ }
|
|
|
|
|
|
- default void onFriendNameChanged(String newName) {}
|
|
|
+ default void onFriendNameChanged(String newName) {
|
|
|
+ }
|
|
|
|
|
|
- default void onApplied(int size) {}
|
|
|
+ default void onApplied(int size) {
|
|
|
+ }
|
|
|
|
|
|
- default void onFriendFaceUrlChanged(String faceUrl) {}
|
|
|
+ default void onFriendFaceUrlChanged(String faceUrl) {
|
|
|
+ }
|
|
|
|
|
|
- default void onGroupFaceUrlChanged(String faceUrl) {}
|
|
|
+ default void onGroupFaceUrlChanged(String faceUrl) {
|
|
|
+ }
|
|
|
|
|
|
void onExitChat(String chatId);
|
|
|
}
|