From a31b5b0a5e2cc919c99e14700ad10c814b5041b2 Mon Sep 17 00:00:00 2001 From: huangjian Date: Tue, 25 May 2021 15:22:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E9=97=B4=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=92=8C=E9=BB=91=E5=90=8D=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=8A=A0=E8=BD=BD=E5=85=A8=E9=83=A8=E6=88=90=E5=91=98?= =?UTF-8?q?(=E8=80=8C=E4=B8=8D=E6=98=AF=E6=9C=80=E5=A4=9A200=E4=B8=AA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 45e47939920a81edf53f781329993ce9cdbc8e91) --- .../activity/RoomBlackListActivity.java | 29 +++++++++---------- .../activity/RoomManagerListActivity.java | 25 +++++++--------- .../avroom/presenter/RoomBlackPresenter.java | 19 +----------- .../presenter/RoomManagerPresenter.java | 2 +- .../res/layout/activity_room_black_list.xml | 13 --------- .../res/layout/activity_room_manager_list.xml | 13 --------- .../manager/IMNetEaseManager.java | 22 ++++++++++++++ .../manager/AvRoomDataManager.java | 26 +++++++++++++++++ .../room/model/AvRoomModel.java | 3 ++ 9 files changed, 78 insertions(+), 74 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomBlackListActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomBlackListActivity.java index f97317dd3..268d93c27 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomBlackListActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomBlackListActivity.java @@ -5,6 +5,8 @@ import android.content.Intent; import android.os.Bundle; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import android.view.View; 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.presenter.RoomBlackPresenter; 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.manager.AvRoomDataManager; 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.super_admin.model.SuperAdminModel; 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_library.base.factory.CreatePresenter; import com.yizhuan.xchat_android_library.utils.JavaUtil; @@ -43,7 +47,6 @@ import java.util.Objects; @CreatePresenter(RoomBlackPresenter.class) public class RoomBlackListActivity extends BaseMvpActivity implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomBlackView { - private TextView count; private RecyclerView recyclerView; private RoomNormalListAdapter normalListAdapter; @@ -58,22 +61,18 @@ public class RoomBlackListActivity extends BaseMvpActivity 0) { normalListAdapter.setNormalList(chatRoomMemberList); normalListAdapter.notifyDataSetChanged(); - count.setText("黑名单" + chatRoomMemberList.size() + "人"); + mTitleBar.setTitle("黑名单(" + chatRoomMemberList.size() + ")人"); } else { showNoData("暂没有设置黑名单"); - count.setText("黑名单0人"); + mTitleBar.setTitle("黑名单(0)人"); } } @@ -168,20 +167,20 @@ public class RoomBlackListActivity extends BaseMvpActivity iterator = normalList.listIterator(); - for (; iterator.hasNext(); ) { + while (iterator.hasNext()) { if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) { iterator.remove(); } } - normalListAdapter.notifyDataSetChanged(); - count.setText("黑名单" + normalList.size() + "人"); + mTitleBar.setTitle("黑名单(" + normalList.size() + ")人"); if (normalList.size() == 0) { showNoData("暂没有设置黑名单"); } } else { showNoData("暂没有设置黑名单"); - count.setText("黑名单0人"); + mTitleBar.setTitle("黑名单(0)人"); } + normalListAdapter.notifyDataSetChanged(); toast("操作成功"); } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomManagerListActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomManagerListActivity.java index b651b42f3..361b526e0 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomManagerListActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomManagerListActivity.java @@ -3,10 +3,10 @@ package com.yizhuan.erban.avroom.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.view.View; + import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import android.view.View; -import android.widget.TextView; import com.netease.nim.uikit.StatusBarUtil; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; @@ -34,7 +34,6 @@ import java.util.Objects; @CreatePresenter(RoomManagerPresenter.class) public class RoomManagerListActivity extends BaseMvpActivity implements RoomNormalListAdapter.OnRoomNormalListOperationClickListener, IRoomManagerView { - private TextView count; private RecyclerView recyclerView; private RoomNormalListAdapter normalListAdapter; @@ -47,7 +46,7 @@ public class RoomManagerListActivity extends BaseMvpActivity 0) { normalListAdapter.setNormalList(chatRoomMemberList); normalListAdapter.notifyDataSetChanged(); - count.setText("管理员" + chatRoomMemberList.size() + "人"); + mTitleBar.setTitle("管理员(" + chatRoomMemberList.size() + ")人"); } else { showNoData("暂没有设置管理员"); - count.setText("管理员0人"); + mTitleBar.setTitle("管理员(0)人"); } } @@ -122,27 +120,26 @@ public class RoomManagerListActivity extends BaseMvpActivity iterator = list.listIterator(); - for (; iterator.hasNext(); ) { + while (iterator.hasNext()) { if (Objects.equals(iterator.next().getAccount(), chatRoomMember.getAccount())) { iterator.remove(); } } - normalListAdapter.notifyDataSetChanged(); - count.setText("管理员" + list.size() + "人"); + mTitleBar.setTitle("管理员(" + list.size() + ")人"); if (list.size() == 0) { showNoData("暂没有设置管理员"); } } else { showNoData("暂没有设置管理员"); - count.setText("管理员0人"); + mTitleBar.setTitle("管理员(0)人"); } + normalListAdapter.notifyDataSetChanged(); toast("操作成功"); -// loadData(); } @Override public void markManagerListFail(int code, String error) { -// toast("操作失败,请重试"); + } @Override diff --git a/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomBlackPresenter.java b/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomBlackPresenter.java index 6f28993be..381bf49da 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomBlackPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomBlackPresenter.java @@ -3,6 +3,7 @@ package com.yizhuan.erban.avroom.presenter; import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import com.yizhuan.erban.avroom.view.IRoomBlackView; 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_library.net.rxnet.callback.CallBack; @@ -24,24 +25,6 @@ public class RoomBlackPresenter extends BaseMvpPresenter { mRoomBaseModel = new RoomBaseModel(); } - public void queryBlackList(int limit) { - mRoomBaseModel.queryBlackList(limit) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer>() { - @Override - public void accept(List chatRoomMemberList) throws Exception { - if (getMvpView() != null) - getMvpView().queryBlackListSuccess(chatRoomMemberList); - } - }, new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - if (getMvpView() != null) - getMvpView().queryBlackListFail(); - } - }); - } - /** * 拉黑操作 * diff --git a/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomManagerPresenter.java b/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomManagerPresenter.java index 2c18d34fe..6e64df895 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomManagerPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/presenter/RoomManagerPresenter.java @@ -45,7 +45,7 @@ public class RoomManagerPresenter extends BaseMvpPresenter { @SuppressLint("CheckResult") public void queryManagerList(int limit) { - mRoomBaseModel.queryManagerList(limit) + Single.just(AvRoomDataManager.get().mRoomManagerList) .observeOn(Schedulers.io()) .flatMap((Function, SingleSource>>) chatRoomMembers -> { List uids = new ArrayList<>(); diff --git a/app/src/main/res/layout/activity_room_black_list.xml b/app/src/main/res/layout/activity_room_black_list.xml index 994d296ce..a826d8704 100644 --- a/app/src/main/res/layout/activity_room_black_list.xml +++ b/app/src/main/res/layout/activity_room_black_list.xml @@ -11,19 +11,6 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_25" /> - - - diff --git a/app/src/main/res/layout/activity_room_manager_list.xml b/app/src/main/res/layout/activity_room_manager_list.xml index d162ce441..68604c9ca 100644 --- a/app/src/main/res/layout/activity_room_manager_list.xml +++ b/app/src/main/res/layout/activity_room_manager_list.xml @@ -11,19 +11,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> - - - diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index 6462fc58f..1468ef980 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -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 targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); noticeChatMemberBlackAdd(targets.get(0)); + addBlankMember(targets.get(0)); + } else if (attachment.getType() == NotificationType.ChatRoomMemberBlackRemove) { + List targets = ((ChatRoomNotificationAttachment) attachment).getTargets(); + AvRoomDataManager.get().removeBlackMember(targets.get(0)); } else if (attachment.getType() == NotificationType.ChatRoomMyRoomRoleUpdated) { // 房间内的某人的贵族信息更新了 Map 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 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); + } + }); + } + /** * 加入黑名单 * diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java index 5f817cb2e..8ee6c2b40 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/manager/AvRoomDataManager.java @@ -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 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(); } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java index 6e3693f1e..0ac9b47b9 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/AvRoomModel.java @@ -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);