feat: app-module_super_admin
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
package com.chwl.app.sadmin;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.view.View;
|
||||
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.avroom.activity.RoomBlackListActivity;
|
||||
import com.chwl.app.base.BaseViewBindingActivity;
|
||||
import com.chwl.app.common.widget.dialog.DialogManager;
|
||||
import com.chwl.app.databinding.ActivityRoomSAdminManagerBinding;
|
||||
import com.chwl.core.base.CancelNoToastException;
|
||||
import com.chwl.core.kick.KickModel;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.manager.IMNetEaseManager;
|
||||
import com.chwl.core.room.bean.RoomInfo;
|
||||
import com.chwl.core.room.model.AvRoomModel;
|
||||
import com.chwl.core.super_admin.model.ISuperAdminModel;
|
||||
import com.chwl.core.super_admin.model.SuperAdminModel;
|
||||
import com.chwl.core.super_admin.util.SaAttachmentFactory;
|
||||
import com.chwl.core.utils.net.DontWarnObserver;
|
||||
import com.chwl.library.net.rxnet.callback.CallBack;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
|
||||
/**
|
||||
* 房间超管管理界面
|
||||
* create by lvzebiao @2019/8/26
|
||||
*/
|
||||
public class RoomSAdminManagerActivity extends BaseViewBindingActivity<ActivityRoomSAdminManagerBinding>{
|
||||
|
||||
private ISuperAdminModel model = new SuperAdminModel();
|
||||
|
||||
private boolean isOpting = false;
|
||||
|
||||
public static void start(Context context) {
|
||||
context.startActivity(new Intent(context, RoomSAdminManagerActivity.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
initTitleBar(R.string.sa_label_room_super_a_manager);
|
||||
initListener();
|
||||
|
||||
binding.switchHideRoom.setOn(AvRoomDataManager.get().isHideRoom());
|
||||
//解除房间设置
|
||||
binding.stvOpRemoveRoomLimit.setVisibility(
|
||||
(AvRoomDataManager.get().isCpRoomLock() || AvRoomDataManager.get().isRoomLock()) ?
|
||||
View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
binding.stvOpBlackList.setOnClickListener(view -> RoomBlackListActivity.start(context));
|
||||
binding.stvOpRemoveRoomLimit.setOnClickListener(view -> handleRoomPwd());
|
||||
binding.stvOpCloseRoom.setOnClickListener(view -> handleRoomClose());
|
||||
binding.viewClickHideRoom.setOnClickListener(view -> handleHideRoom(!AvRoomDataManager.get().isHideRoom()));
|
||||
}
|
||||
|
||||
private void handleHideRoom(boolean isHide) {
|
||||
if (isOpting) {
|
||||
return;
|
||||
}
|
||||
isOpting = true;
|
||||
Single.create((SingleOnSubscribe<String>) e -> {
|
||||
if (isHide) {
|
||||
getDialogManager().showOkCancelWithTitleDialog(
|
||||
ResUtil.getString(R.string.erban_sadmin_roomsadminmanageractivity_01),
|
||||
new DialogManager.OkCancelDialogListener() {
|
||||
@Override
|
||||
public void onOk() {
|
||||
model.roomOperate(SuperAdminModel.HIDE_ROOM)
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe();
|
||||
e.onSuccess("next");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
e.onError(new CancelNoToastException());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
e.onSuccess("next");
|
||||
}
|
||||
})
|
||||
.flatMap(s -> model.hideRoom(isHide ? 1 : 0))
|
||||
.subscribe(new DontWarnObserver<String>() {
|
||||
|
||||
@Override
|
||||
public void acceptThrowable(String s, Throwable throwable) {
|
||||
super.acceptThrowable(s, throwable);
|
||||
if (throwable != null) {
|
||||
if (!(throwable instanceof CancelNoToastException)) {
|
||||
toast(throwable.getMessage());
|
||||
}
|
||||
} else {
|
||||
binding.switchHideRoom.setOn(isHide);
|
||||
}
|
||||
isOpting = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void handleRoomPwd() {
|
||||
RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo;
|
||||
if (roomInfo == null) {
|
||||
return;
|
||||
}
|
||||
model.roomOperate(SuperAdminModel.REMOVE_ROOM_LIMIT)
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe();
|
||||
model.removeLimit()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new DontWarnObserver<String>() {
|
||||
@Override
|
||||
public void accept(String s, String error) {
|
||||
super.accept(s, error);
|
||||
if (error != null) {
|
||||
toast(error);
|
||||
return;
|
||||
}
|
||||
binding.stvOpRemoveRoomLimit.setVisibility(View.GONE);
|
||||
ChatRoomMessage msg;
|
||||
if (AvRoomDataManager.get().isCpRoom()) {
|
||||
msg = SaAttachmentFactory.createRemoveLimitChatRoomMessage();
|
||||
} else {
|
||||
msg = SaAttachmentFactory.createRemoveRoomPwdChatRoomMessage();
|
||||
}
|
||||
IMNetEaseManager.get().sendChatRoomMessage(msg, false)
|
||||
.doOnSuccess(chatRoomMessage ->
|
||||
KickModel.get().onSendRoomMessageSuccess(chatRoomMessage))
|
||||
.subscribe();
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void handleRoomClose() {
|
||||
model.roomOperate(SuperAdminModel.CLOSE_ROOM)
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe();
|
||||
getDialogManager().showOkCancelWithTitleDialog(
|
||||
ResUtil.getString(R.string.erban_sadmin_roomsadminmanageractivity_02),
|
||||
new DialogManager.OkCancelDialogListener() {
|
||||
@Override
|
||||
public void onOk() {
|
||||
AvRoomModel.get().quitRoomForOurService(AvRoomDataManager.get().getRoomUid(),
|
||||
new CallBack<String>() {
|
||||
@Override
|
||||
public void onSuccess(String data) {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail(int code, String error) {
|
||||
toast(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,89 @@
|
||||
package com.chwl.app.sadmin.utils;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chwl.app.R;
|
||||
import com.chwl.app.ui.widget.TextSpannableBuilder;
|
||||
import com.chwl.core.im.custom.bean.CustomAttachment;
|
||||
import com.chwl.core.manager.AvRoomDataManager;
|
||||
import com.chwl.core.super_admin.attachment.SuperAdminOpAttachment;
|
||||
import com.chwl.core.super_admin.bean.SaOpInfo;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
|
||||
/**
|
||||
* 超管自定义消息 to 公屏消息
|
||||
* create by lvzebiao @2019/8/21
|
||||
*/
|
||||
public class SaAttachmentToMsgUtil {
|
||||
|
||||
public static CharSequence formatSuperAdminInfo(CustomAttachment attachment, TextView tvContent,
|
||||
int greyColor, int roomTipColor) {
|
||||
if (!(attachment instanceof SuperAdminOpAttachment)) {
|
||||
return null;
|
||||
}
|
||||
SuperAdminOpAttachment opAttachment = (SuperAdminOpAttachment) attachment;
|
||||
SaOpInfo info = opAttachment.getInfo();
|
||||
if (info == null) {
|
||||
return null;
|
||||
}
|
||||
String opName = null;
|
||||
TextSpannableBuilder text = new TextSpannableBuilder(tvContent);
|
||||
text.append(AvRoomDataManager.get().isSuperAdmin(info.getHandleUid()) ? "" : ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_01), new ForegroundColorSpan(greyColor));
|
||||
switch (opAttachment.getSecond()) {
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_DOWN_MIC:
|
||||
if (!TextUtils.isEmpty(info.getTargetNick())) {
|
||||
text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor));
|
||||
}
|
||||
opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_02);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_MUTE_MIC:
|
||||
opName = getMicString(info.getMicNumber()) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_03);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_LOCK_MIC:
|
||||
opName = getMicString(info.getMicNumber()) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_04);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_MARK_BLACK:
|
||||
if (!TextUtils.isEmpty(info.getTargetNick())) {
|
||||
text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor));
|
||||
}
|
||||
opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_05);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_OUT_ROOM:
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_KICK_OUT_ADMIN:
|
||||
if (!TextUtils.isEmpty(info.getTargetNick())) {
|
||||
text.append(info.getTargetNick(), new ForegroundColorSpan(roomTipColor));
|
||||
}
|
||||
opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_06);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_REMOVE_CP_ROOM_LIMIT:
|
||||
opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_07);
|
||||
break;
|
||||
case CustomAttachment.CUSTOM_MSG_SUB_TYPE_SUPER_ADMIN_REMOVE_ROOM_PWD:
|
||||
opName = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_08);
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
if (!TextUtils.isEmpty(opName)) {
|
||||
text.append(opName, new ForegroundColorSpan(greyColor));
|
||||
}
|
||||
return text.build();
|
||||
}
|
||||
|
||||
private static String getMicString(int micNumber) {
|
||||
String micString;
|
||||
if (AvRoomDataManager.get().isHomeParty()) {
|
||||
if (micNumber == -1) {
|
||||
micString = ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_09);
|
||||
} else {
|
||||
micString = (micNumber + 1) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_010);
|
||||
}
|
||||
} else {
|
||||
micString = (micNumber + 2) + ResUtil.getString(R.string.sadmin_utils_saattachmenttomsgutil_010);
|
||||
}
|
||||
return micString;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
package com.chwl.app.sadmin.utils;
|
||||
|
||||
/**
|
||||
* create by lvzebiao @2019/8/26
|
||||
*/
|
||||
public class SuperAdminUiHelper {
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 977 B |
Binary file not shown.
After Width: | Height: | Size: 825 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:state_checked="true" android:drawable="@drawable/ic_female_press"/>
|
||||
<item android:state_checked="false" android:drawable="@drawable/ic_female_normal"/>
|
||||
|
||||
</selector>
|
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/color_FAFAFA">
|
||||
|
||||
<com.chwl.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
</com.chwl.app.base.TitleBar>
|
||||
|
||||
<com.coorchice.library.SuperTextView
|
||||
android:id="@+id/stv_op_hide_room"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="55dp"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:corner="@dimen/dp_8"
|
||||
app:solid="@color/color_white"
|
||||
android:text="@string/sa_item_hide_room"
|
||||
android:visibility="gone"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textColor="@color/color_333333"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_16"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/title_bar" />
|
||||
|
||||
<com.chwl.app.common.widget.TutuSwitchView
|
||||
android:id="@+id/switch_hide_room"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="@id/stv_op_hide_room"
|
||||
app:layout_constraintTop_toTopOf="@id/stv_op_hide_room"
|
||||
app:layout_constraintBottom_toBottomOf="@id/stv_op_hide_room"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:layout_width="51dp"
|
||||
android:layout_height="@dimen/dp_30" />
|
||||
|
||||
<View
|
||||
android:id="@+id/view_click_hide_room"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="@id/switch_hide_room"
|
||||
app:layout_constraintTop_toTopOf="@id/switch_hide_room"
|
||||
app:layout_constraintBottom_toBottomOf="@id/switch_hide_room"
|
||||
app:layout_constraintStart_toStartOf="@id/switch_hide_room"
|
||||
android:layout_width="51dp"
|
||||
android:layout_height="@dimen/dp_30" />
|
||||
|
||||
<com.coorchice.library.SuperTextView
|
||||
android:id="@+id/stv_op_black_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="55dp"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:corner="@dimen/dp_8"
|
||||
app:solid="@color/color_white"
|
||||
android:text="@string/layout_activity_room_s_admin_manager_01"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textColor="@color/color_333333"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_15"
|
||||
android:drawableEnd="@drawable/arrow_right"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/stv_op_hide_room" />
|
||||
|
||||
<com.coorchice.library.SuperTextView
|
||||
android:id="@+id/stv_op_remove_room_limit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="55dp"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:corner="@dimen/dp_8"
|
||||
app:solid="@color/color_white"
|
||||
android:text="@string/layout_activity_room_s_admin_manager_02"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textColor="@color/color_FE4C62"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_12"
|
||||
android:drawableEnd="@drawable/icon_sa_remove_room_limit"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/stv_op_black_list" />
|
||||
|
||||
<com.coorchice.library.SuperTextView
|
||||
android:id="@+id/stv_op_close_room"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="55dp"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:corner="@dimen/dp_8"
|
||||
app:solid="@color/color_white"
|
||||
android:text="@string/layout_activity_room_s_admin_manager_03"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textColor="@color/color_FE4C62"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="@dimen/dp_16"
|
||||
android:paddingEnd="@dimen/dp_12"
|
||||
android:drawableEnd="@drawable/icon_sa_close_room"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/stv_op_remove_room_limit" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.coorchice.library.SuperTextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:gravity="center"
|
||||
android:paddingStart="8dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp"
|
||||
app:corner="20dp"
|
||||
app:solid="#4DFFFFFF" />
|
8
app/src/module_super_admin/res/values-ar/strings.xml
Normal file
8
app/src/module_super_admin/res/values-ar/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="kick_mic_by_s_admin">النظام اكتشف انتهاك مشتبه به، لقد تمت إزالتك من الميكروفون</string>
|
||||
<string name="add_to_room_black_list_by_s_admin">النظام اكتشف انتهاك مشتبه به، لقد تمت إضافتك إلى قائمة الحظر</string>
|
||||
<string name="kick_out_room_by_s_admin">النظام اكتشف انتهاك مشتبه به، لقد تم طردك من الغرفة</string>
|
||||
<string name="sa_label_room_super_a_manager">الإدارة الرسمية</string>
|
||||
<string name="sa_item_hide_room">إخفاء الغرفة</string>
|
||||
</resources>
|
8
app/src/module_super_admin/res/values-zh-rTW/strings.xml
Normal file
8
app/src/module_super_admin/res/values-zh-rTW/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="kick_mic_by_s_admin">系統檢測涉嫌違規,你被抱下麥</string>
|
||||
<string name="add_to_room_black_list_by_s_admin">系統檢測涉嫌違規,你已被加入黑名單</string>
|
||||
<string name="kick_out_room_by_s_admin"> 系統檢測涉嫌違規,你被請出房間</string>
|
||||
<string name="sa_label_room_super_a_manager">官方管理</string>
|
||||
<string name="sa_item_hide_room">隱藏房間</string>
|
||||
</resources>
|
8
app/src/module_super_admin/res/values/strings.xml
Normal file
8
app/src/module_super_admin/res/values/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="kick_mic_by_s_admin">System detected suspected violation, you have been removed from the mic</string>
|
||||
<string name="add_to_room_black_list_by_s_admin">System detected suspected violation, you have been added to the blacklist</string>
|
||||
<string name="kick_out_room_by_s_admin">System detected suspected violation, you have been kicked out of the room</string>
|
||||
<string name="sa_label_room_super_a_manager">Official Management</string>
|
||||
<string name="sa_item_hide_room">Hide Room</string>
|
||||
</resources>
|
Reference in New Issue
Block a user