From 637ef335dfc3c9738179b193be35575e01a6d851 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 22 Aug 2024 10:42:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 151 +++++++++++++++++++------------------ 1 file changed, 79 insertions(+), 72 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index fbcc1e6..4a971bf 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -367,7 +367,7 @@ const Meeting: React.FC = () => { message.success(`管理员${item.user.isRoomManager ? '设置' : '取消'}${item.user.userName}为发言人`) } if (!item.user.isRoomManager) { - renderVideo(item.user.uid) + changeVideo() } }) break; @@ -566,6 +566,20 @@ const Meeting: React.FC = () => { } changeAgoraDevice() } + // 修改当前观看用户 + const changeVideo = (): void => { + setRoomUserList((list: any) => { + let row = list.filter((i: any) => i.roleId === '1' || i.isRoomManager) + setCurrentLookUserAccount((res: any) => { + let has = row.find((x: any) => x.uid === res.uid) + if (!has) { + renderVideo(row[0].uid) + } + return res + }) + return list + }) + } // 网络 const handleNetworkChange = (): void => { if (navigator.onLine) { @@ -580,86 +594,79 @@ const Meeting: React.FC = () => { } } // 渲染视频 - const renderVideo = async (uid: string = ''): Promise => { - // if ((uid && currentVideoId === uid) || clickCurrentLookUserStatus === false) { - // return - // } + const renderVideo = async (uid: string): Promise => { + if (currentVideoId === uid || clickCurrentLookUserStatus === false) { + return + } setClickCurrentLookUserStatus(false) setCurrentLookUserStatus(0) - setRoomUserList((list: any) => { - let row = list.filter((i: any) => i.roleId === '1' || i.isRoomManager) - setCurrentLookUserAccount((res: any) => { - let has = row.find((x: any) => x.uid === res.uid) - if (!has && row.length) { - uid = row[0].uid; - } - let item = list.find((item: any) => item.uid === uid || item.screenShareId === uid) - if (item) { - setCurrentVideoId(item.uid) - } - return res - }) - setTimeout(() => { - if (uid === userInfo.uid || uid === userInfo.screenShareId) { - if (String(uid).length === 9) { - // 共享屏幕 - setCurrentLookUserStatus(2) - setTimeout(async () => { - await agora.setupLocalVideo({ - uid: Number(uid), - view: document.getElementById(`video-source-screen`) as HTMLElement, - channelId: state.channelId, - sourceType: VideoSourceType.VideoSourceScreen, - }) - setClickCurrentLookUserStatus(true) - }, 1000); - } else { - // 摄像头 - setCurrentLookUserStatus(1) - setTimeout(async () => { - await agora.setupLocalVideo({ - uid: Number(uid), - view: document.getElementById(`video-source-camera-primary`) as HTMLElement, - channelId: state.channelId, - sourceType: VideoSourceType.VideoSourceCameraPrimary, - }) - setClickCurrentLookUserStatus(true) - }, 1000); - } - } else { - if (String(uid).length === 9) { - // 共享屏幕 - setCurrentLookUserStatus(3) - setTimeout(async () => { - await agora.setupRemoteVideoJoin({ - uid: Number(uid), - view: document.getElementById(`video-source-remote-screen`) as HTMLElement, - channelId: state.channelId, - }) - setClickCurrentLookUserStatus(true) - }, 1000); - } else { - // 摄像头 - setCurrentLookUserStatus(4) - setTimeout(async () => { - await agora.setupRemoteVideoJoin({ - uid: Number(uid), - view: document.getElementById(`video-source-remote-camera`) as HTMLElement, - channelId: state.channelId, - }) - setClickCurrentLookUserStatus(true) - }, 1000); - } - } - }, 1000) - return list + setRoomUserList((res: any) => { + let item = res.find((item: any) => item.uid === uid || item.screenShareId === uid) + if (item) { + setCurrentVideoId(item.uid) + } + return res }) + setTimeout(() => { + if (uid === userInfo.uid || uid === userInfo.screenShareId) { + if (String(uid).length === 9) { + // 共享屏幕 + setCurrentLookUserStatus(2) + setTimeout(async () => { + await agora.setupLocalVideo({ + uid: Number(uid), + view: document.getElementById(`video-source-screen`) as HTMLElement, + channelId: state.channelId, + sourceType: VideoSourceType.VideoSourceScreen, + }) + setClickCurrentLookUserStatus(true) + }, 1000); + } else { + // 摄像头 + setCurrentLookUserStatus(1) + setTimeout(async () => { + await agora.setupLocalVideo({ + uid: Number(uid), + view: document.getElementById(`video-source-camera-primary`) as HTMLElement, + channelId: state.channelId, + sourceType: VideoSourceType.VideoSourceCameraPrimary, + }) + setClickCurrentLookUserStatus(true) + }, 1000); + } + } else { + if (String(uid).length === 9) { + // 共享屏幕 + setCurrentLookUserStatus(3) + setTimeout(async () => { + await agora.setupRemoteVideoJoin({ + uid: Number(uid), + view: document.getElementById(`video-source-remote-screen`) as HTMLElement, + channelId: state.channelId, + }) + setClickCurrentLookUserStatus(true) + }, 1000); + } else { + // 摄像头 + setCurrentLookUserStatus(4) + setTimeout(async () => { + await agora.setupRemoteVideoJoin({ + uid: Number(uid), + view: document.getElementById(`video-source-remote-camera`) as HTMLElement, + channelId: state.channelId, + }) + setClickCurrentLookUserStatus(true) + }, 1000); + } + } + }, 1000) } // 全员观看 const getShowUser = async (): Promise => { await GetShowUser(state.channelId).then(async (res) => { if (res.code === 200 && res.data) { renderVideo(res.data) + changeVideo() } }) }