房间管理员列表和黑名单列表加载全部成员(而不是最多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

@@ -5,6 +5,8 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
@@ -15,6 +17,7 @@ import com.yizhuan.erban.R;
import com.yizhuan.erban.avroom.adapter.RoomNormalListAdapter; import com.yizhuan.erban.avroom.adapter.RoomNormalListAdapter;
import com.yizhuan.erban.avroom.presenter.RoomBlackPresenter; import com.yizhuan.erban.avroom.presenter.RoomBlackPresenter;
import com.yizhuan.erban.avroom.view.IRoomBlackView; import com.yizhuan.erban.avroom.view.IRoomBlackView;
import com.yizhuan.erban.ui.utils.RVDelegate;
import com.yizhuan.xchat_android_core.auth.AuthModel; import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.erban.base.BaseMvpActivity; import com.yizhuan.erban.base.BaseMvpActivity;
@@ -22,6 +25,7 @@ import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.xchat_android_core.room.model.AvRoomModel; import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel; import com.yizhuan.xchat_android_core.super_admin.model.SuperAdminModel;
import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil;
import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver; import com.yizhuan.xchat_android_core.utils.net.DontWarnObserver;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter; import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.JavaUtil; import com.yizhuan.xchat_android_library.utils.JavaUtil;
@@ -43,7 +47,6 @@ import java.util.Objects;
@CreatePresenter(RoomBlackPresenter.class) @CreatePresenter(RoomBlackPresenter.class)
public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomBlackPresenter> public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomBlackPresenter>
implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomBlackView { implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomBlackView {
private TextView count;
private RecyclerView recyclerView; private RecyclerView recyclerView;
private RoomNormalListAdapter normalListAdapter; private RoomNormalListAdapter normalListAdapter;
@@ -58,22 +61,18 @@ public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomB
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_black_list); setContentView(R.layout.activity_room_black_list);
initWhiteTitleBar("黑名单"); initWhiteTitleBar("黑名单(0)人");
initView(); initView();
showLoading();
loadData();
mSuperAdminModel = new SuperAdminModel(); mSuperAdminModel = new SuperAdminModel();
loadData();
} }
private void loadData() { private void loadData() {
getMvpPresenter().queryBlackList(500); queryBlackListSuccess(AvRoomDataManager.get().mRoomLimitMemberList);
} }
private void initView() { private void initView() {
count = (TextView) findViewById(R.id.count); recyclerView = findViewById(R.id.recycler_view);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
normalListAdapter = new RoomNormalListAdapter(this); normalListAdapter = new RoomNormalListAdapter(this);
normalListAdapter.setListOperationClickListener(this); normalListAdapter.setListOperationClickListener(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this));
@@ -149,10 +148,10 @@ public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomB
if (chatRoomMemberList != null && chatRoomMemberList.size() > 0) { if (chatRoomMemberList != null && chatRoomMemberList.size() > 0) {
normalListAdapter.setNormalList(chatRoomMemberList); normalListAdapter.setNormalList(chatRoomMemberList);
normalListAdapter.notifyDataSetChanged(); normalListAdapter.notifyDataSetChanged();
count.setText("黑名单" + chatRoomMemberList.size() + ""); mTitleBar.setTitle("黑名单(" + chatRoomMemberList.size() + ")");
} else { } else {
showNoData("暂没有设置黑名单"); showNoData("暂没有设置黑名单");
count.setText("黑名单0"); mTitleBar.setTitle("黑名单(0)");
} }
} }
@@ -168,20 +167,20 @@ public class RoomBlackListActivity extends BaseMvpActivity<IRoomBlackView, RoomB
if (!ListUtils.isListEmpty(normalList)) { if (!ListUtils.isListEmpty(normalList)) {
hideStatus(); hideStatus();
ListIterator<ChatRoomMember> iterator = normalList.listIterator(); ListIterator<ChatRoomMember> iterator = normalList.listIterator();
for (; iterator.hasNext(); ) { while (iterator.hasNext()) {
if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) { if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) {
iterator.remove(); iterator.remove();
} }
} }
normalListAdapter.notifyDataSetChanged(); mTitleBar.setTitle("黑名单(" + normalList.size() + ")人");
count.setText("黑名单" + normalList.size() + "");
if (normalList.size() == 0) { if (normalList.size() == 0) {
showNoData("暂没有设置黑名单"); showNoData("暂没有设置黑名单");
} }
} else { } else {
showNoData("暂没有设置黑名单"); showNoData("暂没有设置黑名单");
count.setText("黑名单0"); mTitleBar.setTitle("黑名单(0)");
} }
normalListAdapter.notifyDataSetChanged();
toast("操作成功"); toast("操作成功");
} }

View File

@@ -3,10 +3,10 @@ package com.yizhuan.erban.avroom.activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.netease.nim.uikit.StatusBarUtil; import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
@@ -34,7 +34,6 @@ import java.util.Objects;
@CreatePresenter(RoomManagerPresenter.class) @CreatePresenter(RoomManagerPresenter.class)
public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, RoomManagerPresenter> public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, RoomManagerPresenter>
implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomManagerView { implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomManagerView {
private TextView count;
private RecyclerView recyclerView; private RecyclerView recyclerView;
private RoomNormalListAdapter normalListAdapter; private RoomNormalListAdapter normalListAdapter;
@@ -47,7 +46,7 @@ public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, R
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room_manager_list); setContentView(R.layout.activity_room_manager_list);
initWhiteTitleBar("管理员"); initWhiteTitleBar("管理员(0)人");
initView(); initView();
showLoading(); showLoading();
loadData(); loadData();
@@ -58,8 +57,7 @@ public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, R
} }
private void initView() { private void initView() {
count = (TextView) findViewById(R.id.count); recyclerView = findViewById(R.id.recycler_view);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
normalListAdapter = new RoomNormalListAdapter(this); normalListAdapter = new RoomNormalListAdapter(this);
normalListAdapter.setListOperationClickListener(this); normalListAdapter.setListOperationClickListener(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this));
@@ -103,10 +101,10 @@ public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, R
if (chatRoomMemberList != null && chatRoomMemberList.size() > 0) { if (chatRoomMemberList != null && chatRoomMemberList.size() > 0) {
normalListAdapter.setNormalList(chatRoomMemberList); normalListAdapter.setNormalList(chatRoomMemberList);
normalListAdapter.notifyDataSetChanged(); normalListAdapter.notifyDataSetChanged();
count.setText("管理员" + chatRoomMemberList.size() + ""); mTitleBar.setTitle("管理员(" + chatRoomMemberList.size() + ")");
} else { } else {
showNoData("暂没有设置管理员"); showNoData("暂没有设置管理员");
count.setText("管理员0"); mTitleBar.setTitle("管理员(0)");
} }
} }
@@ -122,27 +120,26 @@ public class RoomManagerListActivity extends BaseMvpActivity<IRoomManagerView, R
if (!ListUtils.isListEmpty(list)) { if (!ListUtils.isListEmpty(list)) {
hideStatus(); hideStatus();
ListIterator<ChatRoomMember> iterator = list.listIterator(); ListIterator<ChatRoomMember> iterator = list.listIterator();
for (; iterator.hasNext(); ) { while (iterator.hasNext()) {
if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) { if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) {
iterator.remove(); iterator.remove();
} }
} }
normalListAdapter.notifyDataSetChanged(); mTitleBar.setTitle("管理员(" + list.size() + ")人");
count.setText("管理员" + list.size() + "");
if (list.size() == 0) { if (list.size() == 0) {
showNoData("暂没有设置管理员"); showNoData("暂没有设置管理员");
} }
} else { } else {
showNoData("暂没有设置管理员"); showNoData("暂没有设置管理员");
count.setText("管理员0"); mTitleBar.setTitle("管理员(0)");
} }
normalListAdapter.notifyDataSetChanged();
toast("操作成功"); toast("操作成功");
// loadData();
} }
@Override @Override
public void markManagerListFail(int code, String error) { public void markManagerListFail(int code, String error) {
// toast("操作失败,请重试");
} }
@Override @Override

View File

@@ -3,6 +3,7 @@ package com.yizhuan.erban.avroom.presenter;
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember;
import com.yizhuan.erban.avroom.view.IRoomBlackView; import com.yizhuan.erban.avroom.view.IRoomBlackView;
import com.yizhuan.erban.base.BaseMvpPresenter; import com.yizhuan.erban.base.BaseMvpPresenter;
import com.yizhuan.xchat_android_core.manager.AvRoomDataManager;
import com.yizhuan.xchat_android_core.room.model.RoomBaseModel; import com.yizhuan.xchat_android_core.room.model.RoomBaseModel;
import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack; import com.yizhuan.xchat_android_library.net.rxnet.callback.CallBack;
@@ -24,24 +25,6 @@ public class RoomBlackPresenter extends BaseMvpPresenter<IRoomBlackView> {
mRoomBaseModel = new RoomBaseModel(); mRoomBaseModel = new RoomBaseModel();
} }
public void queryBlackList(int limit) {
mRoomBaseModel.queryBlackList(limit)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<ChatRoomMember>>() {
@Override
public void accept(List<ChatRoomMember> chatRoomMemberList) throws Exception {
if (getMvpView() != null)
getMvpView().queryBlackListSuccess(chatRoomMemberList);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (getMvpView() != null)
getMvpView().queryBlackListFail();
}
});
}
/** /**
* 拉黑操作 * 拉黑操作
* *

View File

@@ -45,7 +45,7 @@ public class RoomManagerPresenter extends BaseMvpPresenter<IRoomManagerView> {
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
public void queryManagerList(int limit) { public void queryManagerList(int limit) {
mRoomBaseModel.queryManagerList(limit) Single.just(AvRoomDataManager.get().mRoomManagerList)
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.flatMap((Function<List<ChatRoomMember>, SingleSource<List<ChatRoomMember>>>) chatRoomMembers -> { .flatMap((Function<List<ChatRoomMember>, SingleSource<List<ChatRoomMember>>>) chatRoomMembers -> {
List<String> uids = new ArrayList<>(); List<String> uids = new ArrayList<>();

View File

@@ -11,19 +11,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_25" /> android:layout_marginTop="@dimen/dp_25" />
<TextView
android:id="@+id/count"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_centerVertical="true"
android:background="@color/bg_secondary_2a2a39"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:textColor="@color/text_secondary_4f516a"
android:textSize="14dp"
android:visibility="gone" />
<com.yizhuan.erban.common.widget.StatusLayout <com.yizhuan.erban.common.widget.StatusLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">

View File

@@ -11,19 +11,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />
<TextView
android:id="@+id/count"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:background="@color/bg_secondary_2a2a39"
android:paddingLeft="15dp"
android:textColor="@color/text_secondary_4f516a"
android:textSize="14dp" />
<com.yizhuan.erban.common.widget.StatusLayout <com.yizhuan.erban.common.widget.StatusLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">

View File

@@ -1,5 +1,6 @@
package com.yizhuan.xchat_android_core.manager; package com.yizhuan.xchat_android_core.manager;
import android.annotation.SuppressLint;
import android.os.Handler; import android.os.Handler;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
@@ -718,6 +719,10 @@ public final class IMNetEaseManager {
} else if (attachment.getType() == NotificationType.ChatRoomMemberBlackAdd) { } else if (attachment.getType() == NotificationType.ChatRoomMemberBlackAdd) {
List<String> targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); List<String> targets = ((ChatRoomNotificationAttachment) attachment).getTargets();
noticeChatMemberBlackAdd(targets.get(0)); 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) { } else if (attachment.getType() == NotificationType.ChatRoomMyRoomRoleUpdated) {
// 房间内的某人的贵族信息更新了 // 房间内的某人的贵族信息更新了
Map<String, Object> extension = null; Map<String, Object> extension = null;
@@ -2118,6 +2123,23 @@ public final class IMNetEaseManager {
AvRoomDataManager.get().removeManagerMember(account); 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() { public boolean isGuess() {
return !isRoomAdmin() && !isRoomOwner(); return !isRoomAdmin() && !isRoomOwner();
} }

View File

@@ -435,6 +435,9 @@ public class AvRoomModel extends RoomBaseModel implements IAvRoomModel {
if (chatRoomMember.getMemberType() == MemberType.CREATOR) { if (chatRoomMember.getMemberType() == MemberType.CREATOR) {
AvRoomDataManager.get().mRoomCreateMember = chatRoomMember; AvRoomDataManager.get().mRoomCreateMember = chatRoomMember;
} }
if (chatRoomMember.isInBlackList()) {
AvRoomDataManager.get().addBlackMember(chatRoomMember);
}
} }
AvRoomDataManager.get().mRoomFixedMemberList.addAll(chatRoomMemberList); AvRoomDataManager.get().mRoomFixedMemberList.addAll(chatRoomMemberList);
AvRoomDataManager.get().mRoomAllMemberList.addAll(chatRoomMemberList); AvRoomDataManager.get().mRoomAllMemberList.addAll(chatRoomMemberList);