房间管理员列表和黑名单列表加载全部成员(而不是最多200个)
(cherry picked from commit 45e47939920a81edf53f781329993ce9cdbc8e91)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.yizhuan.xchat_android_core.manager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
@@ -718,6 +719,10 @@ public final class IMNetEaseManager {
|
||||
} else if (attachment.getType() == NotificationType.ChatRoomMemberBlackAdd) {
|
||||
List<String> targets = ((ChatRoomNotificationAttachment) attachment).getTargets();
|
||||
noticeChatMemberBlackAdd(targets.get(0));
|
||||
addBlankMember(targets.get(0));
|
||||
} else if (attachment.getType() == NotificationType.ChatRoomMemberBlackRemove) {
|
||||
List<String> targets = ((ChatRoomNotificationAttachment) attachment).getTargets();
|
||||
AvRoomDataManager.get().removeBlackMember(targets.get(0));
|
||||
} else if (attachment.getType() == NotificationType.ChatRoomMyRoomRoleUpdated) {
|
||||
// 房间内的某人的贵族信息更新了
|
||||
Map<String, Object> extension = null;
|
||||
@@ -2118,6 +2123,23 @@ public final class IMNetEaseManager {
|
||||
AvRoomDataManager.get().removeManagerMember(account);
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加黑名单
|
||||
*
|
||||
* @param account -
|
||||
*/
|
||||
@SuppressLint("CheckResult")
|
||||
private void addBlankMember(final String account) {
|
||||
List<String> accounts = new ArrayList<>(1);
|
||||
accounts.add(account);
|
||||
fetchRoomMembersByIds(accounts).subscribe((chatRoomMembers, throwable) -> {
|
||||
if (!ListUtils.isListEmpty(chatRoomMembers)) {
|
||||
ChatRoomMember chatRoomMember = chatRoomMembers.get(0);
|
||||
AvRoomDataManager.get().addBlackMember(chatRoomMember);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入黑名单
|
||||
*
|
||||
|
@@ -474,6 +474,32 @@ public final class AvRoomDataManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void addBlackMember(ChatRoomMember chatRoomMember) {
|
||||
if (chatRoomMember == null || containsAdminMember(chatRoomMember.getAccount())) return;
|
||||
mRoomLimitMemberList.add(chatRoomMember);
|
||||
}
|
||||
|
||||
public boolean containsBlackMember(String uid) {
|
||||
for (ChatRoomMember chatRoomMember : mRoomLimitMemberList) {
|
||||
if (Objects.equals(chatRoomMember.getAccount(), String.valueOf(uid))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void removeBlackMember(String account) {
|
||||
if (ListUtils.isListEmpty(mRoomLimitMemberList) || TextUtils.isEmpty(account)) return;
|
||||
ListIterator<ChatRoomMember> iterator = mRoomLimitMemberList.listIterator();
|
||||
while (iterator.hasNext()) {
|
||||
ChatRoomMember chatRoomMember = iterator.next();
|
||||
if (Objects.equals(chatRoomMember.getAccount(), account)) {
|
||||
iterator.remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isGuess() {
|
||||
return !isRoomAdmin() && !isRoomOwner();
|
||||
}
|
||||
|
@@ -435,6 +435,9 @@ public class AvRoomModel extends RoomBaseModel implements IAvRoomModel {
|
||||
if (chatRoomMember.getMemberType() == MemberType.CREATOR) {
|
||||
AvRoomDataManager.get().mRoomCreateMember = chatRoomMember;
|
||||
}
|
||||
if (chatRoomMember.isInBlackList()) {
|
||||
AvRoomDataManager.get().addBlackMember(chatRoomMember);
|
||||
}
|
||||
}
|
||||
AvRoomDataManager.get().mRoomFixedMemberList.addAll(chatRoomMemberList);
|
||||
AvRoomDataManager.get().mRoomAllMemberList.addAll(chatRoomMemberList);
|
||||
|
Reference in New Issue
Block a user