diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomInviteActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomInviteActivity.java index db00d2f0d..4beb62ffe 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomInviteActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/RoomInviteActivity.java @@ -106,6 +106,11 @@ public class RoomInviteActivity extends BaseMvpActivity list) { + + } + @Override public void onRequestChatMemberByPageSuccess(List memberList, int page) { diff --git a/app/src/main/java/com/yizhuan/erban/avroom/adapter/OnlineUserAdapter.java b/app/src/main/java/com/yizhuan/erban/avroom/adapter/OnlineUserAdapter.java index 6a7f3f686..f39a03045 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/adapter/OnlineUserAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/adapter/OnlineUserAdapter.java @@ -11,6 +11,7 @@ import androidx.appcompat.widget.AppCompatImageView; import androidx.recyclerview.widget.RecyclerView; import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; +import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.netease.nim.uikit.impl.cache.NimUserInfoCache; import com.netease.nimlib.sdk.RequestCallbackWrapper; @@ -41,7 +42,7 @@ import io.reactivex.disposables.Disposable; * @author Administrator * @date 2017/12/4 */ -public class OnlineUserAdapter extends BaseMultiItemQuickAdapter { +public class OnlineUserAdapter extends BaseQuickAdapter { private boolean mIsHomeParty; private Disposable mDisposable; @@ -49,9 +50,7 @@ public class OnlineUserAdapter extends BaseMultiItemQuickAdapter 房间在线人数列表 (上麦,房主,游客,管理员)

+ * + * @author Administrator + * @date 2017/12/4 + */ +public class OnlineUserAdapter2 extends BaseMultiItemQuickAdapter { + + private boolean mIsHomeParty; + private Disposable mDisposable; + private Context context; + private OnRoomOnlineNumberChangeListener mListener; + + public OnlineUserAdapter2(Context context, boolean isHomeParty) { + super(null); + addItemType(OnlineChatMember.NORMAL, R.layout.list_item_online_user); + addItemType(OnlineChatMember.NOBLE, R.layout.list_item_online_user_mystery); + mIsHomeParty = isHomeParty; + this.context = context; + } + + @Override + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { + super.onAttachedToRecyclerView(recyclerView); + registerRoomEvent(); + } + + @Override + protected void convert(@NonNull BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) { + if (onlineChatMember != null && onlineChatMember.chatRoomMember != null) { + if (onlineChatMember.getItemType() == OnlineChatMember.NORMAL) { + setNormalData(baseViewHolder, onlineChatMember); + } else { + setMysteryData(); + } + } + } + + private void setMysteryData() { + //do nothing + } + + private void setNormalData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) { + setSexData(baseViewHolder, onlineChatMember); + + ImageView roomOnlineTag = baseViewHolder.getView(R.id.room_online_tag); + ImageView managerLogo = baseViewHolder.getView(R.id.manager_logo); + roomOnlineTag.setVisibility(onlineChatMember.isOnMic ? View.VISIBLE : View.GONE); + managerLogo.setVisibility((onlineChatMember.isAdmin || onlineChatMember.isRoomOwer) + ? View.VISIBLE : View.GONE); + managerLogo.setImageResource(onlineChatMember.isAdmin ? R.drawable.icon_admin_logo + : R.drawable.icon_user_list_room_ownner); + + baseViewHolder.setText(R.id.nick, RegexUtil.getPrintableString(onlineChatMember.chatRoomMember.getNick())); + + NobleAvatarView nobleAvatarView = baseViewHolder.getView(R.id.noble_avatar_view); + nobleAvatarView.setSize(37, 54, 0); + nobleAvatarView.setData(onlineChatMember.chatRoomMember); + + // 官字 + baseViewHolder.getView(R.id.iv_user_official).setVisibility(onlineChatMember.isOfficial() ? View.VISIBLE : View.GONE); + //经验等级 + AppCompatImageView ivUserExper = baseViewHolder.getView(R.id.iv_user_exper); + String experLevelUrl = NobleUtil.getLevel(UserLevelResourceType.EXPER_URL, onlineChatMember.chatRoomMember); + boolean isExperLevelUrlEmpty = TextUtils.isEmpty(experLevelUrl); + ivUserExper.setVisibility(!isExperLevelUrlEmpty ? View.VISIBLE : View.GONE); + if (!isExperLevelUrlEmpty) { + ImageLoadUtils.loadImage(mContext, experLevelUrl, ivUserExper); + } + //魅力等级 + AppCompatImageView ivUserCharm = baseViewHolder.getView(R.id.iv_user_charm); + String charmLevelUrl = NobleUtil.getLevel(UserLevelResourceType.CHARM_URL, onlineChatMember.chatRoomMember); + boolean isCharmLevelUrlEmpty = TextUtils.isEmpty(charmLevelUrl); + ivUserCharm.setVisibility(!isCharmLevelUrlEmpty ? View.VISIBLE : View.GONE); + if (!isCharmLevelUrlEmpty) { + ImageLoadUtils.loadImage(mContext, charmLevelUrl, ivUserCharm); + } + + // 官方主播铭牌标识 + String fixWord = NobleUtil.getLevel(UserInfo.OAC_NAME, onlineChatMember.chatRoomMember); + String iconPic = NobleUtil.getLevel(UserInfo.OAC_ICON, onlineChatMember.chatRoomMember); + View inOfficialMask = baseViewHolder.getView(R.id.in_official_mask); + if (!TextUtils.isEmpty(fixWord) && !TextUtils.isEmpty(iconPic)) { + inOfficialMask.setVisibility(View.VISIBLE); + TextView tvOfficialMask = inOfficialMask.findViewById(R.id.tv_official_mask); + if (tvOfficialMask != null) { + tvOfficialMask.setText(fixWord); + } + + ImageView ivOfficialMask = inOfficialMask.findViewById(R.id.iv_official_mask); + if (ivOfficialMask != null) { + ImageLoadUtils.loadImage(mContext, iconPic, ivOfficialMask); + } + + } else { + inOfficialMask.setVisibility(View.GONE); + } + + // 铭牌 + String namePlateWord = NobleUtil.getLevel(UserInfo.NAMEPLATE_WORD, onlineChatMember.chatRoomMember); + String namePlatePic = NobleUtil.getLevel(UserInfo.NAMEPLATE_PIC, onlineChatMember.chatRoomMember); + View inNamePlate = baseViewHolder.getView(R.id.in_nameplate); + if (!TextUtils.isEmpty(namePlateWord) && !TextUtils.isEmpty(namePlatePic)) { + inNamePlate.setVisibility(View.VISIBLE); + TextView tvNamePlate = inNamePlate.findViewById(R.id.tv_official_mask); + if (tvNamePlate != null) { + tvNamePlate.setText(namePlateWord); + } + + ImageView ivNamePlate = inNamePlate.findViewById(R.id.iv_official_mask); + if (ivNamePlate != null) { + ImageLoadUtils.loadImage(mContext, namePlatePic, ivNamePlate); + } + + } else { + inNamePlate.setVisibility(View.GONE); + } + + AppCompatImageView ivUserLevel = baseViewHolder.getView(R.id.iv_noble_level); + String resource = (String) NobleUtil.getResource(NobleResourceType.KEY_BADGE, onlineChatMember.chatRoomMember); + if (TextUtils.isEmpty(resource)) { + ivUserLevel.setVisibility(View.GONE); + return; + } + ivUserLevel.setVisibility(View.VISIBLE); + NobleUtil.loadResource(resource, ivUserLevel); + } + + private void setSexData(BaseViewHolder baseViewHolder, OnlineChatMember onlineChatMember) { + final ImageView sexImage = baseViewHolder.getView(R.id.sex); + String gender = NobleUtil.getLevel(UserInfo.GENDER, onlineChatMember.chatRoomMember); + if ("1".equals(gender)) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_male); + } else if ("2".equals(gender)) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_female); + } else { + NimUserInfo nimUserInfo = NimUserInfoCache.getInstance().getUserInfo(onlineChatMember.chatRoomMember.getAccount()); + if (nimUserInfo == null) { + NimUserInfoCache.getInstance().getUserInfoFromRemote(onlineChatMember.chatRoomMember.getAccount(), + new RequestCallbackWrapper() { + @Override + public void onResult(int i, NimUserInfo nimUserInfo, Throwable throwable) { + if (nimUserInfo != null) { + if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_male); + } else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_female); + } else { + sexImage.setVisibility(View.GONE); + } + } + } + }); + } else { + if (nimUserInfo.getGenderEnum() == GenderEnum.MALE) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_male); + } else if (nimUserInfo.getGenderEnum() == GenderEnum.FEMALE) { + sexImage.setVisibility(View.VISIBLE); + sexImage.setImageResource(R.drawable.ic_gender_female); + } else { + sexImage.setVisibility(View.GONE); + } + } + } + } + + private void registerRoomEvent() { + mDisposable = IMNetEaseManager.get() + .getChatRoomEventObservable() + .subscribe(roomEvent -> { + if (roomEvent == null) return; + int event = roomEvent.getEvent(); + if (roomEvent.getEvent() == RoomEvent.ADD_BLACK_LIST || + roomEvent.getEvent() == RoomEvent.DOWN_MIC || + roomEvent.getEvent() == RoomEvent.KICK_OUT_ROOM) { + if (roomEvent.getEvent() == RoomEvent.ADD_BLACK_LIST || + roomEvent.getEvent() == RoomEvent.KICK_OUT_ROOM) { + if (mListener != null + && !AvRoomDataManager.get().isOwner(AuthModel.get().getCurrentUid())) { + mListener.addMemberBlack(); + return; + } + } + if (ListUtils.isListEmpty(mData)) return; + if (mIsHomeParty && roomEvent.getEvent() == RoomEvent.DOWN_MIC) { + updateDownUpMic(roomEvent.getAccount(), false); + return; + } + + if (mListener != null) + mListener.addMemberBlack(); + } else if (roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_ADD + || roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE) { + updateManager(roomEvent); + } else if (roomEvent.getEvent() == RoomEvent.UP_MIC) { + updateDownUpMic(roomEvent.getAccount(), true); + } else if (event == RoomEvent.ROOM_MEMBER_IN) { + updateMemberIn(roomEvent); + } else if (event == RoomEvent.ROOM_MEMBER_EXIT) { + if (mListener != null) { + mListener.onMemberExit(roomEvent.getAccount(), mData); + } + } + }); + } + + private void updateMemberIn(RoomEvent roomEvent) { + if (mListener != null) { + mListener.onMemberIn(roomEvent.getAccount(), mData); + } + } + + private void updateManager(RoomEvent roomEvent) { + if (mListener != null) + mListener.onUpdateMemberManager(roomEvent.getAccount(), + roomEvent.getEvent() == RoomEvent.ROOM_MANAGER_REMOVE, mData); + } + + private void updateDownUpMic(String account, boolean isUpMic) { + if (mListener != null) { + mListener.onMemberDownUpMic(account, isUpMic, mData); + } + } + + public void release() { + if (mDisposable != null) { + mDisposable.dispose(); + mDisposable = null; + } + } + + public void setListener(OnRoomOnlineNumberChangeListener listener) { + mListener = listener; + } + + public interface OnRoomOnlineNumberChangeListener { + /** + * 成员进来回调 + * + * @param account + */ + void onMemberIn(String account, List dataList); + + /** + * 成员出去回调 + * + * @param account + * @param dataList + */ + void onMemberExit(String account, List dataList); + + /** + * 成员上下麦更新 + * + * @param account + * @param isUpMic + * @param dataList + */ + void onMemberDownUpMic(String account, boolean isUpMic, + List dataList); + + /** + * 设置管理员回调 + * + * @param account + * @param dataList + */ + void onUpdateMemberManager(String account, boolean isRemoveManager, + List dataList); + + void addMemberBlack(); + } +} diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment.java index 871df8aea..f97d9ea2e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment.java @@ -23,6 +23,7 @@ import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember; import com.yizhuan.xchat_android_core.room.bean.RoomInfo; import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; import com.yizhuan.xchat_android_library.base.factory.CreatePresenter; import com.yizhuan.xchat_android_library.utils.JavaUtil; import com.yizhuan.xchat_android_library.utils.ListUtils; @@ -65,16 +66,16 @@ public class OnlineUserFragment extends BaseMvpFragment data = mOnlineUserAdapter.getData(); - if (ListUtils.isListEmpty(data)) { - mRefreshLayout.finishLoadmore(); - return; - } - loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime()); +// if (!NetworkUtil.isNetAvailable(mContext)) { +// mRefreshLayout.finishLoadmore(); +// return; +// } +// List data = mOnlineUserAdapter.getData(); +// if (ListUtils.isListEmpty(data)) { +// mRefreshLayout.finishLoadmore(); +// return; +// } +// loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime()); } @Override @@ -111,37 +112,42 @@ public class OnlineUserFragment extends BaseMvpFragment list) { + mOnlineUserAdapter.setNewData(list); + mRefreshLayout.finishRefresh(); + } + @Override public void onRequestChatMemberByPageSuccess(List chatRoomMemberList, int page) { - mPage = page; - if (!ListUtils.isListEmpty(chatRoomMemberList)) { - //超管不显示 - Iterator iterator = chatRoomMemberList.iterator(); - while (iterator.hasNext()) { - OnlineChatMember member = iterator.next(); - if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) { - iterator.remove(); - } - } - mOnlineUserAdapter.setNewData(chatRoomMemberList); - if (mPage == Constants.PAGE_START) { - mRefreshLayout.finishRefresh(); - } else { - mRefreshLayout.finishLoadmore(0); - } - mPage++; - } else { - if (mPage == Constants.PAGE_START) { - mRefreshLayout.finishRefresh(); - } else { - mRefreshLayout.finishLoadmore(0); - } - } +// mPage = page; +// if (!ListUtils.isListEmpty(chatRoomMemberList)) { +// //超管不显示 +// Iterator iterator = chatRoomMemberList.iterator(); +// while (iterator.hasNext()) { +// OnlineChatMember member = iterator.next(); +// if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) { +// iterator.remove(); +// } +// } +// mOnlineUserAdapter.setNewData(chatRoomMemberList); +// if (mPage == Constants.PAGE_START) { +// mRefreshLayout.finishRefresh(); +// } else { +// mRefreshLayout.finishLoadmore(0); +// } +// mPage++; +// } else { +// if (mPage == Constants.PAGE_START) { +// mRefreshLayout.finishRefresh(); +// } else { +// mRefreshLayout.finishLoadmore(0); +// } +// } } @Override @@ -165,23 +171,23 @@ public class OnlineUserFragment extends BaseMvpFragment chatRoomMembers = mOnlineUserAdapter.getData(); - if (ListUtils.isListEmpty(chatRoomMembers)) return; - OnlineChatMember onlineChatMember = chatRoomMembers.get(position); - ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember; - if (chatRoomMember != null) { - if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) { - return; - } - UserInfoDialog.showNewUserInfoDialog(mContext, - JavaUtil.str2long(chatRoomMember.getAccount()), - true, - false, - true, - null); - } - } +// if (currentRoom != null) { +// List chatRoomMembers = mOnlineUserAdapter.getData(); +// if (ListUtils.isListEmpty(chatRoomMembers)) return; +// OnlineChatMember onlineChatMember = chatRoomMembers.get(position); +// ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember; +// if (chatRoomMember != null) { +// if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) { +// return; +// } +// UserInfoDialog.showNewUserInfoDialog(mContext, +// JavaUtil.str2long(chatRoomMember.getAccount()), +// true, +// false, +// true, +// null); +// } +// } } @Override diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment2.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment2.java new file mode 100644 index 000000000..feb29c87a --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/OnlineUserFragment2.java @@ -0,0 +1,229 @@ +package com.yizhuan.erban.avroom.fragment; + +import android.view.View; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.netease.nim.uikit.common.util.sys.NetworkUtil; +import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; +import com.orhanobut.logger.Logger; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadmoreListener; +import com.yizhuan.erban.R; +import com.yizhuan.erban.avroom.adapter.OnlineUserAdapter2; +import com.yizhuan.erban.avroom.presenter.HomePartyUserListPresenter; +import com.yizhuan.erban.avroom.view.IHomePartyUserListView; +import com.yizhuan.erban.base.BaseMvpFragment; +import com.yizhuan.erban.ui.widget.UserInfoDialog; +import com.yizhuan.xchat_android_core.Constants; +import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; +import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember; +import com.yizhuan.xchat_android_core.room.bean.RoomInfo; +import com.yizhuan.xchat_android_core.super_admin.util.SuperAdminUtil; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; +import com.yizhuan.xchat_android_library.base.factory.CreatePresenter; +import com.yizhuan.xchat_android_library.utils.JavaUtil; +import com.yizhuan.xchat_android_library.utils.ListUtils; +import com.yizhuan.xchat_android_library.utils.ResUtil; + +import java.util.Iterator; +import java.util.List; + +/** + *

在线用户列表

+ * + * @author Administrator + * @date 2017/12/4 + */ +@CreatePresenter(HomePartyUserListPresenter.class) +public class OnlineUserFragment2 extends BaseMvpFragment + implements BaseQuickAdapter.OnItemClickListener, IHomePartyUserListView, OnlineUserAdapter2.OnRoomOnlineNumberChangeListener { + private RecyclerView mRecyclerView; + private SmartRefreshLayout mRefreshLayout; + + private OnlineUserAdapter2 mOnlineUserAdapter; + private int mPage = Constants.PAGE_START; + private boolean isShowToUser = false; + + @Override + public void onDestroy() { + if (mOnlineUserAdapter != null) + mOnlineUserAdapter.release(); + super.onDestroy(); + } + + @Override + public void onFindViews() { + mRecyclerView = mView.findViewById(R.id.recycler_view); + mRefreshLayout = mView.findViewById(R.id.refresh_layout); + } + + @Override + public void onSetListener() { + mRefreshLayout.setOnRefreshLoadmoreListener(new OnRefreshLoadmoreListener() { + @Override + public void onLoadmore(RefreshLayout refreshLayout) { + if (!NetworkUtil.isNetAvailable(mContext)) { + mRefreshLayout.finishLoadmore(); + return; + } + List data = mOnlineUserAdapter.getData(); + if (ListUtils.isListEmpty(data)) { + mRefreshLayout.finishLoadmore(); + return; + } + loadData(data.get(data.size() - 1).chatRoomMember.getEnterTime()); + } + + @Override + public void onRefresh(RefreshLayout refreshLayout) { + if (!NetworkUtil.isNetAvailable(mContext)) { + mRefreshLayout.finishRefresh(); + return; + } + firstLoad(); + } + }); + } + + @Override + public void initiate() { + mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); + mOnlineUserAdapter = new OnlineUserAdapter2(mContext, true); + mRecyclerView.setAdapter(mOnlineUserAdapter); + mOnlineUserAdapter.setOnItemClickListener(this); + mOnlineUserAdapter.setListener(this); + firstLoad(); + } + + + @Override + public int getRootLayoutId() { + return R.layout.common_refresh_recycler_view; + } + + + public void firstLoad() { + mPage = Constants.PAGE_START; + loadData(0); + } + + private void loadData(long time) { + getMvpPresenter().requestChatMemberByPage(mPage, time, + mOnlineUserAdapter == null ? null : mOnlineUserAdapter.getData()); + } + + + @Override + public void onRequestRoomOnlineListSuccess(List list) { + + } + + @Override + public void onRequestChatMemberByPageSuccess(List chatRoomMemberList, int page) { + mPage = page; + if (!ListUtils.isListEmpty(chatRoomMemberList)) { + //超管不显示 + Iterator iterator = chatRoomMemberList.iterator(); + while (iterator.hasNext()) { + OnlineChatMember member = iterator.next(); + if (member != null && SuperAdminUtil.isSuperAdmin(member.chatRoomMember)) { + iterator.remove(); + } + } + mOnlineUserAdapter.setNewData(chatRoomMemberList); + if (mPage == Constants.PAGE_START) { + mRefreshLayout.finishRefresh(); + } else { + mRefreshLayout.finishLoadmore(0); + } + mPage++; + } else { + if (mPage == Constants.PAGE_START) { + mRefreshLayout.finishRefresh(); + } else { + mRefreshLayout.finishLoadmore(0); + } + } + } + + @Override + public void onRequestChatMemberByPageFail(String errorStr, int page) { + Logger.i(ResUtil.getString(R.string.avroom_fragment_onlineuserfragment_01) + page); + mPage = page; + if (mPage == Constants.PAGE_START) { + mRefreshLayout.finishRefresh(); + } else { + mRefreshLayout.finishLoadmore(0); + } + } + + @Override + public void onMemberInRefresh() { +// if (!isResumed()) return; +// if (!isShowToUser()) return; +// firstLoad(); + } + + @Override + public void onItemClick(BaseQuickAdapter baseQuickAdapter, View view, int position) { + RoomInfo currentRoom = AvRoomDataManager.get().mCurrentRoomInfo; + if (currentRoom != null) { + List chatRoomMembers = mOnlineUserAdapter.getData(); + if (ListUtils.isListEmpty(chatRoomMembers)) return; + OnlineChatMember onlineChatMember = chatRoomMembers.get(position); + ChatRoomMember chatRoomMember = onlineChatMember.chatRoomMember; + if (chatRoomMember != null) { + if (onlineChatMember.getItemType() == OnlineChatMember.NOBLE) { + return; + } + UserInfoDialog.showNewUserInfoDialog(mContext, + JavaUtil.str2long(chatRoomMember.getAccount()), + true, + false, + true, + null); + } + } + } + + @Override + public void onMemberIn(String account, List dataList) { +// if (!isResumed()) return; +// getMvpPresenter().onMemberInRefreshData(account, dataList, mPage); + } + + @Override + public void onMemberExit(String account, List dataList) { +// if (!isResumed()) return; +// if (!isShowToUser()) return; +// firstLoad(); + } + + @Override + public void onMemberDownUpMic(String account, boolean isUpMic, List dataList) { + if (!isResumed()) return; + getMvpPresenter().onMemberDownUpMic(account, isUpMic, dataList, mPage); + } + + @Override + public void onUpdateMemberManager(String account, boolean isRemoveManager, List dataList) { + if (!isResumed()) return; + getMvpPresenter().onUpdateMemberManager(account, dataList, isRemoveManager, mPage); + } + + @Override + public void addMemberBlack() { + if (!isResumed()) return; + if (!isShowToUser()) return; + firstLoad(); + } + + public boolean isShowToUser() { + return isShowToUser; + } + +} diff --git a/app/src/main/java/com/yizhuan/erban/avroom/presenter/HomePartyUserListPresenter.java b/app/src/main/java/com/yizhuan/erban/avroom/presenter/HomePartyUserListPresenter.java index a1c3f78af..4cb5f99a7 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/presenter/HomePartyUserListPresenter.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/presenter/HomePartyUserListPresenter.java @@ -51,6 +51,19 @@ public class HomePartyUserListPresenter extends BaseMvpPresenter { + if (getMvpView() != null) { + if (data != null) { + getMvpView().onRequestRoomOnlineListSuccess(data); + } else { + getMvpView().onRequestChatMemberByPageFail(throwable.getMessage(), 1); + } + } + }); + } + public void onMemberDownUpMic(String account, boolean isUpMic, List dataList, final int page) { mHomePartyUserListMode.onMemberDownUpMic(account, isUpMic, dataList) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/view/IHomePartyUserListView.java b/app/src/main/java/com/yizhuan/erban/avroom/view/IHomePartyUserListView.java index 09a6c6d09..6aec68d9e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/view/IHomePartyUserListView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/view/IHomePartyUserListView.java @@ -3,6 +3,7 @@ package com.yizhuan.erban.avroom.view; import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; import com.yizhuan.xchat_android_library.base.IMvpBaseView; import java.util.List; @@ -14,6 +15,9 @@ import java.util.List; * @date 2017/12/8 */ public interface IHomePartyUserListView extends IMvpBaseView { + + void onRequestRoomOnlineListSuccess(List list); + void onRequestChatMemberByPageSuccess(List memberList, int page); void onRequestChatMemberByPageFail(String errorStr, int page); diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/HomePartyUserListModel.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/HomePartyUserListModel.java index 962f451a9..8fb779705 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/model/HomePartyUserListModel.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/model/HomePartyUserListModel.java @@ -9,11 +9,17 @@ import com.netease.nimlib.sdk.chatroom.model.ChatRoomMember; import com.orhanobut.logger.Logger; import com.yizhuan.xchat_android_core.R; import com.yizhuan.xchat_android_core.Constants; +import com.yizhuan.xchat_android_core.bean.PrivateChatLimitInfo; import com.yizhuan.xchat_android_core.bean.RoomQueueInfo; +import com.yizhuan.xchat_android_core.bean.response.ServiceResult; import com.yizhuan.xchat_android_core.exception.ErrorThrowable; +import com.yizhuan.xchat_android_core.im.custom.bean.User; import com.yizhuan.xchat_android_core.manager.AvRoomDataManager; import com.yizhuan.xchat_android_core.room.bean.OnlineChatMember; import com.yizhuan.xchat_android_core.room.model.inteface.IHomePartyUserListModel; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; +import com.yizhuan.xchat_android_core.utils.net.RxHelper; +import com.yizhuan.xchat_android_library.net.rxnet.RxNet; import com.yizhuan.xchat_android_library.utils.ListUtils; import com.yizhuan.xchat_android_library.utils.ResUtil; @@ -25,6 +31,8 @@ import io.reactivex.Single; import io.reactivex.SingleOnSubscribe; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; +import retrofit2.http.GET; +import retrofit2.http.Query; /** *

轰趴房用户列表网络处理

@@ -34,6 +42,8 @@ import io.reactivex.schedulers.Schedulers; */ public class HomePartyUserListModel extends RoomBaseModel implements IHomePartyUserListModel { + private HomePartyUserListModel.Api api = RxNet.create(HomePartyUserListModel.Api.class); + /** * 分页获取房间成员:第一页包含队列成员,固定成员,游客50人,之后每一页获取游客50人 * @@ -220,4 +230,18 @@ public class HomePartyUserListModel extends RoomBaseModel implements IHomePartyU .observeOn(AndroidSchedulers.mainThread()); } + public Single> getRoomOnlineList(long roomUid) { + return api.getRoomOnlineList(roomUid) + .compose(RxHelper.handleBeanData()) + .compose(RxHelper.handleSchedulers()); + } + + private interface Api { + /** + * 房间在线列表 + * @return + */ + @GET("/room/v2/online") + Single>> getRoomOnlineList(@Query("roomUid") long roomUid); + } } diff --git a/gradle.properties b/gradle.properties index 341046780..808891ffe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -31,8 +31,8 @@ COMPILE_SDK_VERSION=33 MIN_SDK_VERSION=21 TARGET_SDK_VERSION=33 -version_name=2.2.0 -version_code=2200 +version_name=2.5.0 +version_code=2500 #systemProp.https.proxyHost=127.0.0.1 #systemProp.https.proxyPort=7890 \ No newline at end of file