parent
ded1698f63
commit
4507445407
|
|
@ -93,7 +93,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
void getMeetingRoomAllUser(List<MeetingRoomUser> meetingRoomUsers) async {
|
||||
state.users.value = meetingRoomUsers;
|
||||
state.cacheUsers.value = meetingRoomUsers;
|
||||
doHttpGetTvAnchor();
|
||||
// doHttpGetTvAnchor();
|
||||
}
|
||||
|
||||
/// 启动计时
|
||||
|
|
@ -133,22 +133,18 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
}
|
||||
}
|
||||
|
||||
/// 申请发言
|
||||
Future<void> doHttpApplySpeak() async {
|
||||
await getClient().applySpeak(state.roomNumber.value);
|
||||
}
|
||||
|
||||
/// 用户开闭麦
|
||||
Future<void> doHttpSetMicr() async {
|
||||
await getClient().setMicr(state.roomNumber.value, state.isOpenMicrophone.value, UserStore.to.userInfoEntity.value!.uid);
|
||||
}
|
||||
|
||||
/// 用户开闭摄像头
|
||||
Future<void> doHttpSetCamer() async {
|
||||
await getClient().setCamera(state.roomNumber.value, state.isOpenCamera.value, UserStore.to.userInfoEntity.value!.uid);
|
||||
}
|
||||
|
||||
/// 结束发言
|
||||
/// --------------------------发言权限
|
||||
/// 申请发言权限
|
||||
Future<void> doHttpApplySpeak() async {
|
||||
await getClient().applySpeak(state.roomNumber.value);
|
||||
}
|
||||
|
||||
/// 关闭发言权限
|
||||
Future<void> doHttpCancelSpeak() async {
|
||||
await getClient().cancelSpeak(state.meetingRoomInfo.value!.id, state.meetingRoomInfo.value!.roomNum, UserStore.to.userInfoEntity.value!.uid);
|
||||
setClientRole("观众");
|
||||
|
|
@ -158,6 +154,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
changePageState(0);
|
||||
}
|
||||
|
||||
/// --------------------------麦克风相关(操作)
|
||||
/// 设置麦克风是否开启
|
||||
Future<void> setMicrophoneOpen(bool isOpen) async{
|
||||
state.isOpenMicrophone.value = isOpen;
|
||||
|
|
@ -167,10 +164,14 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
}
|
||||
}
|
||||
state.users.value = state.cacheUsers.value;
|
||||
setEnableLocalAudio(isOpen);
|
||||
doHttpSetMicr();
|
||||
}
|
||||
|
||||
/// 用户开闭麦
|
||||
Future<void> doHttpSetMicr() async {
|
||||
await getClient().setMicr(state.roomNumber.value, state.isOpenMicrophone.value, UserStore.to.userInfoEntity.value!.uid);
|
||||
}
|
||||
|
||||
/// 设置视频是否打开
|
||||
void setCameraOpen(bool isOpen){
|
||||
if(isOpen == true){
|
||||
|
|
@ -262,6 +263,98 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
|
||||
joinMeetingToSocket();
|
||||
|
||||
/// --------------------------发言权限相关回调
|
||||
/// 开启关闭发言权限
|
||||
state.hubConnection.value?.on("ManagerRefresh", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList());
|
||||
var jsonStr = json.encode(e?[0]);
|
||||
var listDynamic = jsonDecode(jsonStr);
|
||||
MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic);
|
||||
if(meetingRoomUser.isRoomManager == true){
|
||||
debugPrint("wgs输出===:Socket-开启发言权限:${e?[0]}--${e?[1]}");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.roleId = meetingRoomUser.roleId;
|
||||
mru.enableMicr = true;
|
||||
mru.isRoomManager = meetingRoomUser.isRoomManager;
|
||||
}
|
||||
}
|
||||
if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){
|
||||
state.isSpeak.value = true;
|
||||
state.isOpenMicrophone.value = true;
|
||||
setClientRole("主播");
|
||||
}
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-关闭发言权限:${e?[0]}--${e?[1]}");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.roleId = meetingRoomUser.roleId;
|
||||
mru.enableMicr = false;
|
||||
mru.isRoomManager = meetingRoomUser.isRoomManager;
|
||||
}
|
||||
}
|
||||
if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){
|
||||
state.isSpeak.value = false;
|
||||
state.isOpenMicrophone.value = false;
|
||||
setClientRole("观众");
|
||||
}
|
||||
}
|
||||
doHttpSetMicr();
|
||||
update();
|
||||
});
|
||||
|
||||
/// --------------------------麦克风相关回调
|
||||
/// 所有用户开闭麦回调
|
||||
state.hubConnection.value?.on("OperAllMicr", (e){
|
||||
if(e?[0] == true){
|
||||
debugPrint("wgs输出===:Socket-全员开麦");
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-全员闭麦");
|
||||
}
|
||||
for(var i = 0; i < state.cacheUsers.value.length; i++){
|
||||
state.cacheUsers.value[i].enableMicr = e?[0];
|
||||
}
|
||||
state.users.value = state.cacheUsers.value;
|
||||
state.isOpenMicrophone.value = e?[0];
|
||||
doHttpSetMicr();
|
||||
});
|
||||
|
||||
/// 单独用户开闭麦回调
|
||||
state.hubConnection.value?.on("OperMicr", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList());
|
||||
var jsonStr = json.encode(e?[0]);
|
||||
var listDynamic = jsonDecode(jsonStr);
|
||||
MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic);
|
||||
if(meetingRoomUser.enableMicr == true){
|
||||
debugPrint("wgs输出===:Socket-用户单独开麦");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.enableMicr = true;
|
||||
}
|
||||
}
|
||||
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid) {
|
||||
state.isOpenMicrophone.value = true;
|
||||
|
||||
// 恢复发布音频流
|
||||
muteLocalAudioStream(false);
|
||||
}
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-用户单独闭麦");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.enableMicr = false;
|
||||
}
|
||||
}
|
||||
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid) {
|
||||
state.isOpenMicrophone.value = false;
|
||||
|
||||
// 取消发布音频流
|
||||
muteLocalAudioStream(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/// --------------------------会议室进出相关回调
|
||||
/// 远端用户或主播加入会议室回调
|
||||
state.hubConnection.value?.on("UserJoined", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(user).runes.toList());
|
||||
|
|
@ -289,62 +382,6 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
debugPrint("wgs输出===:Socket-远端用户或主播离开会议室:$jsonStr");
|
||||
});
|
||||
|
||||
/// 申请/结束发言-管理员同意或拒绝回调
|
||||
state.hubConnection.value?.on("ManagerRefresh", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList());
|
||||
var jsonStr = json.encode(e?[0]);
|
||||
var listDynamic = jsonDecode(jsonStr);
|
||||
MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic);
|
||||
if(meetingRoomUser.isRoomManager == true){
|
||||
debugPrint("wgs输出===:Socket-申请发言:${e?[0]}--${e?[1]}");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.roleId = meetingRoomUser.roleId;
|
||||
mru.enableMicr = true;
|
||||
mru.isRoomManager = meetingRoomUser.isRoomManager;
|
||||
}
|
||||
}
|
||||
if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){
|
||||
state.isSpeak.value = true;
|
||||
state.isOpenMicrophone.value = true;
|
||||
setClientRole("主播");
|
||||
setEnableLocalAudio(true);
|
||||
doHttpSetMicr();
|
||||
}
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-停止发言:${e?[0]}--${e?[1]}");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.roleId = meetingRoomUser.roleId;
|
||||
mru.enableMicr = false;
|
||||
mru.isRoomManager = meetingRoomUser.isRoomManager;
|
||||
}
|
||||
}
|
||||
if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){
|
||||
state.isSpeak.value = false;
|
||||
state.isOpenMicrophone.value = false;
|
||||
setClientRole("观众");
|
||||
setEnableLocalAudio(false);
|
||||
doHttpSetMicr();
|
||||
}
|
||||
}
|
||||
update();
|
||||
});
|
||||
|
||||
/// 会议室接收消息回调
|
||||
state.hubConnection.value?.on("ReceiveMessage", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList());
|
||||
var jsonStr = json.encode(e);
|
||||
List list = json.decode(jsonStr);
|
||||
MeetingRoomMsg meetingRoomMsg = MeetingRoomMsg(list[0],list[1],list[2],0);
|
||||
state.meetingRoomMsgs.value.add(meetingRoomMsg);
|
||||
update();
|
||||
Future.delayed(const Duration(milliseconds: 100), () {
|
||||
state.chatController.jumpTo(state.chatController.position.maxScrollExtent);
|
||||
});
|
||||
debugPrint("wgs输出===:Socket-会议室接收消息:$jsonStr");
|
||||
});
|
||||
|
||||
/// 被移除会议回调
|
||||
state.hubConnection.value?.on("ForceExitRoom", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList());
|
||||
|
|
@ -361,49 +398,22 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
ToastUtils.showSuccess("会议已结束");
|
||||
});
|
||||
|
||||
/// 所有用户开闭麦回调
|
||||
state.hubConnection.value?.on("OperAllMicr", (e){
|
||||
if(e?[0] == true){
|
||||
debugPrint("wgs输出===:Socket-全员开麦");
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-全员闭麦");
|
||||
}
|
||||
for(var i = 0; i < state.cacheUsers.value.length; i++){
|
||||
state.cacheUsers.value[i].enableMicr = e?[0];
|
||||
}
|
||||
state.users.value = state.cacheUsers.value;
|
||||
state.isOpenMicrophone.value = e?[0];
|
||||
});
|
||||
|
||||
/// 单独用户开闭麦回调
|
||||
state.hubConnection.value?.on("OperMicr", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList());
|
||||
var jsonStr = json.encode(e?[0]);
|
||||
var listDynamic = jsonDecode(jsonStr);
|
||||
MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic);
|
||||
if(meetingRoomUser.enableMicr == true){
|
||||
debugPrint("wgs输出===:Socket-单独用户开麦");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.enableMicr = true;
|
||||
}
|
||||
}
|
||||
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid) {
|
||||
state.isOpenMicrophone.value = true;
|
||||
}
|
||||
}else{
|
||||
debugPrint("wgs输出===:Socket-单独用户闭麦");
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(mru.uid == meetingRoomUser.uid){
|
||||
mru.enableMicr = false;
|
||||
}
|
||||
}
|
||||
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid) {
|
||||
state.isOpenMicrophone.value = false;
|
||||
}
|
||||
}
|
||||
/// --------------------------会议室聊天相关回调
|
||||
/// 会议室接收消息回调
|
||||
state.hubConnection.value?.on("ReceiveMessage", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList());
|
||||
var jsonStr = json.encode(e);
|
||||
List list = json.decode(jsonStr);
|
||||
MeetingRoomMsg meetingRoomMsg = MeetingRoomMsg(list[0],list[1],list[2],0);
|
||||
state.meetingRoomMsgs.value.add(meetingRoomMsg);
|
||||
update();
|
||||
Future.delayed(const Duration(milliseconds: 100), () {
|
||||
state.chatController.jumpTo(state.chatController.position.maxScrollExtent);
|
||||
});
|
||||
debugPrint("wgs输出===:Socket-会议室接收消息:$jsonStr");
|
||||
});
|
||||
|
||||
/// --------------------------摄像头或者屏幕相关回调
|
||||
/// 单独用户开闭摄像头回调
|
||||
state.hubConnection.value?.on("OperCamera", (e){
|
||||
// var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList());
|
||||
|
|
@ -492,7 +502,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
// 打开用户音量回调
|
||||
await state.rctEngine.value?.enableAudioVolumeIndication(interval: 200, smooth: 3, reportVad: true);
|
||||
// 启用音频模块
|
||||
setEnableLocalAudio(true);
|
||||
enableAudio();
|
||||
|
||||
joinMeetingToRtc();
|
||||
|
||||
|
|
@ -557,12 +567,12 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
for(AudioVolumeInfo avi in speakers){
|
||||
for(MeetingRoomUser mru in state.cacheUsers.value){
|
||||
if(avi.uid == 0){
|
||||
//debugPrint("wgs输出===:RTC-用户音量提示(自己):${CountMicrophoneVolume.getVolume(avi.volume!)}");
|
||||
debugPrint("wgs输出===:RTC-用户音量提示(自己):${CountMicrophoneVolume.getVolume(avi.volume!)}");
|
||||
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
||||
state.microphoneVolume.value = CountMicrophoneVolume.getVolume(avi.volume!);
|
||||
}else{
|
||||
if(avi.uid.toString() == mru.uid){
|
||||
//debugPrint("wgs输出===:RTC-用户音量提示(远端用户):${speakers[0].uid}--${speakers[0].volume}");
|
||||
debugPrint("wgs输出===:RTC-用户音量提示(远端用户):${speakers[0].uid}--${speakers[0].volume}");
|
||||
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
||||
}
|
||||
}
|
||||
|
|
@ -634,15 +644,19 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
|
|||
await state.rctEngine.value?.setEnableSpeakerphone(mode == 1 ? false : true);
|
||||
}
|
||||
|
||||
/// 设置是否启用音频模块
|
||||
Future<void> setEnableLocalAudio(bool enabled) async {
|
||||
if(enabled == true){
|
||||
// 启用音频模块
|
||||
await state.rctEngine.value?.enableAudio();
|
||||
}else{
|
||||
// 关闭音频模块
|
||||
await state.rctEngine.value?.disableAudio();
|
||||
}
|
||||
/// 启用音频模块
|
||||
Future<void> enableAudio() async {
|
||||
await state.rctEngine.value?.enableAudio();
|
||||
}
|
||||
|
||||
/// 关闭音频模块
|
||||
Future<void> disableAudio() async {
|
||||
await state.rctEngine.value?.disableAudio();
|
||||
}
|
||||
|
||||
/// 是否取消发布本地音频流
|
||||
Future<void> muteLocalAudioStream(bool mute) async {
|
||||
await state.rctEngine.value?.muteLocalAudioStream(mute);
|
||||
}
|
||||
|
||||
/// 设置启用视频模块
|
||||
|
|
|
|||
Loading…
Reference in New Issue