diff --git a/src/page/Meeting/index.module.scss b/src/page/Meeting/index.module.scss index 3540fd9..af9585e 100644 --- a/src/page/Meeting/index.module.scss +++ b/src/page/Meeting/index.module.scss @@ -157,6 +157,7 @@ bottom: 10px; display: flex; align-items: center; + z-index: 2; .meetingContentUserRole { background: #FDC229; @@ -191,6 +192,21 @@ } } } + + .meetingContentError { + position: absolute; + justify-content: center; + display: flex; + align-items: center; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1; + background-color: black; + color: white; + font-size: 20px; + } } .meetingContentBodyRight { diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 9fb6f3b..f2dce39 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -207,24 +207,48 @@ const Meeting: React.FC = () => { footerListTemplate[itemIndex][rowIndex].active = true setFooterList(footerListTemplate) agora.muteLocalAudioStream(true) + await onInvoke('joinChannel', { + roomNum: state.channelId, + isMute: false, + isCloseCamera: true + }) + getRoomUser() break; case '开启声音': footerListTemplate[itemIndex][rowIndex].title = '关闭声音' footerListTemplate[itemIndex][rowIndex].active = false setFooterList(footerListTemplate) agora.muteLocalAudioStream(false) + await onInvoke('joinChannel', { + roomNum: state.channelId, + isMute: true, + isCloseCamera: true + }) + getRoomUser() break; case '关闭视频': footerListTemplate[itemIndex][rowIndex].title = '开启视频' footerListTemplate[itemIndex][rowIndex].active = true setFooterList(footerListTemplate) agora.muteLocalVideoStream(true) + await onInvoke('joinChannel', { + roomNum: state.channelId, + isMute: true, + isCloseCamera: false + }) + getRoomUser() break; case '开启视频': footerListTemplate[itemIndex][rowIndex].title = '关闭视频' footerListTemplate[itemIndex][rowIndex].active = false setFooterList(footerListTemplate) agora.muteLocalVideoStream(false) + await onInvoke('joinChannel', { + roomNum: state.channelId, + isMute: true, + isCloseCamera: true + }) + getRoomUser() break; case '设置向导': stupWizardRef.current.changeIsStupWizard() @@ -309,11 +333,13 @@ const Meeting: React.FC = () => { }) } - const handleCustomStorageChange = (e: any): void => { + const handleCustomStorageChange = async (e: any): Promise => { if (e.key === 'isJoin') { if (e.value) { - onInvoke('joinChannel', { - roomNum: state.channelId + await onInvoke('joinChannel', { + roomNum: state.channelId, + isMute: true, + isCloseCamera: true }) getRoomUser() } else { @@ -381,6 +407,7 @@ const Meeting: React.FC = () => { {meetingContentUser(item)} + {item.isCloseCamera ? null : meetingContentError()} )} @@ -705,12 +732,21 @@ const meetingContentUser = (item: any) => { : null}
- + {item.userName}
) } +const meetingContentError = () => { + return ( + <> +
+ 无视频 +
+ + ) +} export default Meeting diff --git a/src/utils/package/signalr.ts b/src/utils/package/signalr.ts index 1f9e5e4..a2c3078 100644 --- a/src/utils/package/signalr.ts +++ b/src/utils/package/signalr.ts @@ -23,14 +23,16 @@ export const onSignalr = (callBack: Function) => { }) }); } -export const onInvoke = (str: string, data: any) => { +export const onInvoke = async (str: string, data: any) => { switch (str) { case 'joinChannel': + await connection.invoke(str, data.roomNum, data.isMute, data.isCloseCamera) + break; case 'levelChannel': - connection.invoke(str, data.roomNum) + await connection.invoke(str, data.roomNum) break; case 'sendChannelMsg': - connection.invoke(str, data.roomNum, data.msg) + await connection.invoke(str, data.roomNum, data.msg) break; } }