123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461 |
- package com.cooleshow.chatmodule.ui;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.CompoundButton;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.alibaba.android.arouter.facade.annotation.Route;
- import com.alibaba.android.arouter.launcher.ARouter;
- import com.chad.library.adapter.base.BaseQuickAdapter;
- import com.chad.library.adapter.base.listener.OnItemClickListener;
- import com.cooleshow.base.bean.StudentPageListBean;
- import com.cooleshow.base.common.BaseApplication;
- import com.cooleshow.base.constanst.StyleConfig;
- import com.cooleshow.base.router.RouterPath;
- import com.cooleshow.base.ui.activity.BaseMVPActivity;
- import com.cooleshow.base.utils.GlideUtils;
- import com.cooleshow.base.utils.JumpUtils;
- import com.cooleshow.base.utils.LogUtils;
- import com.cooleshow.base.utils.ToastUtil;
- import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
- import com.cooleshow.base.widgets.dialog.CommonConfirmDialog;
- import com.cooleshow.base.widgets.dialog.CommonDialog;
- import com.cooleshow.chatmodule.R;
- import com.cooleshow.chatmodule.adapter.GroupSettingMemberAdapter;
- import com.cooleshow.chatmodule.bean.GroupApplyBean;
- import com.cooleshow.chatmodule.bean.GroupMemberBean;
- import com.cooleshow.chatmodule.bean.IMGroupInfo;
- import com.cooleshow.chatmodule.constants.TCChatRouterPath;
- import com.cooleshow.chatmodule.contract.ChatGroupSettingContract;
- import com.cooleshow.chatmodule.databinding.TcActivityChatGroupSettingBinding;
- import com.cooleshow.chatmodule.presenter.ChatGroupSettingPresenter;
- import com.cooleshow.chatmodule.utils.helper.ChatGroupHelper;
- import com.cooleshow.chatmodule.utils.helper.IMThemManager;
- import com.cooleshow.chatmodule.widget.CommonConfirmDialog2;
- import com.cooleshow.usercenter.helper.UserHelper;
- import com.tencent.qcloud.tuicore.TUICore;
- import com.tencent.qcloud.tuikit.tuigroup.bean.GroupInfo;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.recyclerview.widget.GridLayoutManager;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- /**
- * 创建日期:2022/6/11 14:29
- *
- * @author Ryan
- * 类说明:
- */
- @Route(path = TCChatRouterPath.CHAT_GROUP_SETTING)
- public class ChatGroupSettingActivity extends BaseMVPActivity<TcActivityChatGroupSettingBinding, ChatGroupSettingPresenter> implements ChatGroupSettingContract.ChatGroupSettingView, View.OnClickListener {
- private final int REQUEST_GROUP_REMARKS_CODE = 100;
- public static final int REQUEST_CODE_SELECT = 10001;
- private final int MAX_SHOW_GROUP_MEMBER_COUNT = 5;
- private boolean isCanAddMember = false;
- private ArrayList<GroupMemberBean> allMemberList;
- @Override
- public void onClick(View view) {
- if (view.getId() == R.id.ll_history_message) {
- //查看历史消息内容
- TUICore.startActivity("SearchMainActivity", null);
- } else if (view.getId() == R.id.tv_group_name_remarks) {
- //设置群名称
- ARouter.getInstance().build(TCChatRouterPath.CHAT_GROUP_SET_REMARK)
- .withString("targetId", targetId)
- .withString("remarks", tv_group_name_remarks.getText().toString().trim())
- .navigation(this, REQUEST_GROUP_REMARKS_CODE);
- } else if (view.getId() == R.id.tv_group_member_list) {
- //查看联系人
- if (mAdapter != null) {
- ARouter.getInstance().build(TCChatRouterPath.CHAT_GROUP_MEMBER)
- .withSerializable("list", allMemberList)
- .navigation();
- }
- } else if (view.getId() == R.id.tv_group_apply_count) {
- //查看入群申请
- ARouter.getInstance().build(TCChatRouterPath.CHAT_GROUP_JOIN_APPLY)
- .withString("targetId", targetId)
- .navigation();
- } else if (view.getId() == R.id.tv_feedback) {
- //反馈
- ARouter.getInstance().build(TCChatRouterPath.CHAT_IM_APPEAL)
- .withString("targetId", targetId)
- .withString("name", name)
- .withString("type", "GROUP")
- .navigation();
- } else if (view.getId() == R.id.tv_notice) {
- //群公告
- ARouter.getInstance().build(TCChatRouterPath.CHAT_GROUP_NOTICE)
- .withString("targetId", targetId)
- .navigation();
- } else if (view.getId() == R.id.btn_confirm) {
- if (BaseApplication.Companion.isTeacherClient()) {
- //老师端解散群组
- showConfirmDialog();
- } else {
- //发消息
- showQuitConfirmDialog();
- }
- }
- }
- private void showQuitConfirmDialog() {
- CommonConfirmDialog2 commonDialog = new CommonConfirmDialog2(this);
- commonDialog.show();
- commonDialog.setTitle("退出群聊");
- commonDialog.setContent("请确认是否要退出群聊?");
- commonDialog.setCancelText("确认");
- commonDialog.setCancelBackground(R.drawable.shape_2dc7aa_20dp, com.cooleshow.base.R.color.white);
- commonDialog.setConfirmText("取消");
- commonDialog.setConfirmBackground(R.drawable.shape_border_dbdbdb_1dp_20dp, com.cooleshow.base.R.color.color_333333);
- IMThemManager.getInstance().setTextDrawableStyle1(commonDialog.getTvCancel());
- commonDialog.setOnConfirmClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (commonDialog != null) {
- commonDialog.dismiss();
- }
- }
- });
- commonDialog.setOnCancelClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (commonDialog != null) {
- commonDialog.dismiss();
- }
- presenter.quitChatGroup(targetId);
- }
- });
- }
- private void showConfirmDialog() {
- CommonDialog commonDialog = new CommonDialog(this);
- commonDialog.show();
- commonDialog.setTitle("提示");
- commonDialog.setContent("确认解散群组吗?");
- commonDialog.setOnConfirmClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (commonDialog != null) {
- commonDialog.dismiss();
- }
- presenter.dissolveChatGroup(targetId);
- }
- });
- commonDialog.setOnCancelClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (commonDialog != null) {
- commonDialog.dismiss();
- }
- }
- });
- }
- private ImageView iv_portrait;
- private TextView tv_group_name;
- private TextView tv_class_num;
- private TextView tv_group_member_list;
- private RecyclerView recyclerView;
- private TextView tv_group_apply_count;
- private TextView tv_group_name_remarks;
- private CheckBox cb_message;
- GroupSettingMemberAdapter mAdapter;
- private GroupInfo mGroupInfo;
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- QMUIStatusBarHelper.setStatusBarLightMode(this);
- }
- @Override
- protected void initView() {
- initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "群设置");
- iv_portrait = viewBinding.ivPortrait;
- tv_group_name = viewBinding.tvGroupName;
- tv_class_num = viewBinding.tvClassNum;
- tv_group_member_list = viewBinding.tvGroupMemberList;
- tv_group_member_list.setOnClickListener(this);
- recyclerView = viewBinding.recyclerView;
- Button btnConfirm = viewBinding.btnConfirm;
- btnConfirm.setText("发消息");
- tv_group_apply_count = viewBinding.tvGroupApplyCount;
- tv_group_apply_count.setOnClickListener(this);
- tv_group_name_remarks = viewBinding.tvGroupNameRemarks;
- tv_group_name_remarks.setOnClickListener(this);
- viewBinding.llHistoryMessage.setOnClickListener(this);
- cb_message = viewBinding.cbMessage;
- viewBinding.tvNotice.setOnClickListener(this);
- viewBinding.tvFeedback.setOnClickListener(this);
- viewBinding.btnConfirm.setOnClickListener(this);
- IMThemManager.getInstance().setCheckButtonDrawable(viewBinding.cbMessage);
- IMThemManager.getInstance().setMainButtonStyles(viewBinding.btnConfirm);
- if (BaseApplication.Companion.isTeacherClient()) {
- btnConfirm.setText("解散群组");
- viewBinding.tvGroupNameRemarks.setClickable(true);
- viewBinding.tvGroupNameRemarks.setCompoundDrawablesWithIntrinsicBounds(0, 0, com.cooleshow.base.R.drawable.icon_arrow_right, 0);
- } else {
- btnConfirm.setText("退出群聊");
- viewBinding.llChatJoinApply.setVisibility(View.GONE);
- viewBinding.tvGroupNameRemarks.setClickable(false);
- viewBinding.tvGroupNameRemarks.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
- }
- GridLayoutManager gridLayoutManager = new GridLayoutManager(this, MAX_SHOW_GROUP_MEMBER_COUNT);
- recyclerView.setLayoutManager(gridLayoutManager);
- mAdapter = new GroupSettingMemberAdapter();
- recyclerView.setAdapter(mAdapter);
- mAdapter.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
- if (position < mAdapter.getData().size()) {
- GroupMemberBean rowsBean = mAdapter.getData().get(position);
- if (rowsBean.getItemType() == GroupSettingMemberAdapter.ADD_TYPE) {
- goSelectContact();
- }
- }
- }
- });
- }
- private String targetId;
- private String name;
- @Override
- public void initData() {
- super.initData();
- targetId = getIntent().getStringExtra("targetId");
- name = getIntent().getStringExtra("name");
- if (TextUtils.isEmpty(targetId)) {
- finish();
- return;
- }
- presenter.loadGroup(targetId);
- // presenter.conversationGet(Conversation.ConversationType.GROUP, targetId);
- cb_message.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (buttonView.isPressed()) {
- presenter.setGroupNotDisturb(targetId, isChecked, null);
- // if (isChecked) {
- // presenter.conversationMute(Conversation.ConversationType.GROUP, targetId, Conversation.ConversationNotificationStatus.DO_NOT_DISTURB);
- // } else {
- // presenter.conversationGetUnmute(Conversation.ConversationType.GROUP, targetId, Conversation.ConversationNotificationStatus.NOTIFY);
- // }
- }
- }
- });
- }
- @Override
- protected void onResume() {
- super.onResume();
- refresh();
- if (BaseApplication.Companion.isTeacherClient()) {
- presenter.groupApplyList(targetId);
- }
- }
- private void goSelectContact() {
- ARouter.getInstance().build(RouterPath.MineCenter.SELECT_TENANT_MEMBER)
- .withSerializable("filterList", allMemberList)
- .navigation(this, REQUEST_CODE_SELECT);
- }
- @Override
- protected TcActivityChatGroupSettingBinding getLayoutView() {
- return TcActivityChatGroupSettingBinding.inflate(getLayoutInflater());
- }
- @Override
- protected ChatGroupSettingPresenter createPresenter() {
- return new ChatGroupSettingPresenter();
- }
- @Override
- public void onConversation(boolean b) {
- cb_message.setChecked(b);
- }
- @Override
- public void onGroupUsers(List<GroupMemberBean> data, String groupId) {
- if (!checkActivityExist()) {
- return;
- }
- if (mAdapter != null && data != null) {
- this.allMemberList = new ArrayList<>(data);
- List<GroupMemberBean> result = new ArrayList<>();
- for (int i = 0; i < data.size(); i++) {
- GroupMemberBean groupMemberBean = data.get(i);
- if (groupMemberBean.isAdmin()) {
- result.add(0, groupMemberBean);
- } else {
- result.add(groupMemberBean);
- }
- }
- tv_group_member_list.setText("查看" + result.size() + "名群成员");
- int countLimit = isCanAddMember ? MAX_SHOW_GROUP_MEMBER_COUNT - 1 : MAX_SHOW_GROUP_MEMBER_COUNT;
- ArrayList<GroupMemberBean> list = new ArrayList();
- for (int i = 0; i < result.size(); i++) {
- if (list.size() >= countLimit) {
- break;
- }
- list.add(result.get(i));
- }
- if (isCanAddMember) {
- GroupMemberBean addBean = new GroupMemberBean();
- addBean.setItemType(GroupSettingMemberAdapter.ADD_TYPE);
- list.add(addBean);
- }
- mAdapter.setNewInstance(list);
- }
- }
- @Override
- public void onQueryGroupDetail(IMGroupInfo data) {
- if (null != data) {
- if (!TextUtils.isEmpty(data.getImg())) {
- GlideUtils.INSTANCE.loadImage(this, data.getImg(), iv_portrait);
- } else {
- iv_portrait.setImageResource(ChatGroupHelper.getChatGroupAvatarFromId(data.getId()));
- }
- if (!TextUtils.isEmpty(data.getMemberNum())) {
- tv_class_num.setVisibility(View.VISIBLE);
- tv_class_num.setText(data.getMemberNum() + "/500");
- } else {
- tv_class_num.setVisibility(View.GONE);
- }
- tv_group_name.setText(data.getName());
- tv_group_name_remarks.setText(data.getName());
- checkTeacherCanAddMember(data.getType());
- presenter.queryGroupMembers(targetId);
- }
- }
- private void checkTeacherCanAddMember(String type) {
- String tenantId = UserHelper.getTenantId();
- if (BaseApplication.Companion.isTeacherClient()) {
- boolean isOrgGroup = TextUtils.equals(type, CreateGroupActivity.GROUP_TYPE_ORG);
- viewBinding.llChatJoinApply.setVisibility(isOrgGroup ? View.GONE : View.VISIBLE);
- isCanAddMember = UserHelper.isTenantAccount(tenantId) && isOrgGroup;
- }
- }
- @Override
- public void dissolveChatGroupSuccess() {
- ToastUtil.getInstance().showShort("解散成功");
- JumpUtils.jumpMain(2);
- }
- @Override
- public void groupApplyListSuccess(List<GroupApplyBean> data) {
- if (!checkActivityExist()) {
- return;
- }
- if (tv_group_apply_count == null) {
- return;
- }
- if (data != null && data.size() > 0) {
- tv_group_apply_count.setText(data.size() + "人");
- } else {
- tv_group_apply_count.setText("0人");
- }
- }
- @Override
- public void quitChatGroupSuccess() {
- if (!checkActivityExist()) {
- return;
- }
- ToastUtil.getInstance().showShort("您已退出该群聊");
- if (UserHelper.isTenantAccount()) {
- JumpUtils.jumpJGMainAndSelectChild(1, 0);
- } else {
- JumpUtils.jumpMain(2);
- }
- }
- @Override
- public void getGroupInfoSuccess(GroupInfo data) {
- if (!checkActivityExist()) {
- return;
- }
- mGroupInfo = data;
- boolean messageReceiveOption = mGroupInfo.getMessageReceiveOption();
- LogUtils.i("消息免打扰模式:" + messageReceiveOption);
- viewBinding.cbMessage.setChecked(messageReceiveOption);
- }
- @Override
- public void setMessageReceiveOption(boolean b) {
- if (mGroupInfo != null) {
- mGroupInfo.setMessageReceiveOption(b);
- }
- }
- @Override
- public void addGroupMemberSuccess(Object data) {
- if (!checkActivityExist()) {
- return;
- }
- ToastUtil.getInstance().showShort("添加成功");
- refresh();
- }
- private void refresh() {
- presenter.queryGroupDetail(targetId);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == Activity.RESULT_OK) {
- if (requestCode == REQUEST_GROUP_REMARKS_CODE) {
- tv_group_name_remarks.setText(data.getStringExtra("remarks"));
- tv_group_name.setText(data.getStringExtra("remarks"));
- return;
- }
- if (requestCode == REQUEST_CODE_SELECT) {
- if (data != null) {
- ArrayList<StudentPageListBean.RowsBean> selectMembers = data.getParcelableArrayListExtra("result");
- if (selectMembers != null && selectMembers.size() > 0) {
- ArrayList<String> result = new ArrayList<>();
- for (int i = 0; i < selectMembers.size(); i++) {
- result.add(selectMembers.get(i).getImUserId());
- }
- presenter.addGroupMembers(targetId, result);
- }
- }
- }
- }
- }
- }
|