房间管理员列表和黑名单列表加载全部成员(而不是最多200个)

(cherry picked from commit 45e47939920a81edf53f781329993ce9cdbc8e91)
This commit is contained in:
huangjian
2021-05-25 15:22:48 +08:00
parent b55088d143
commit a31b5b0a5e
9 changed files with 78 additions and 74 deletions

View File

@@ -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);
}
});
}
/**
* 加入黑名单
*

View File

@@ -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();
}

View File

@@ -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);