diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 14813b0..0af3e37 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -217,6 +217,7 @@ const Meeting: React.FC = () => { } }); const [isVideoFullScreen, setIsVideoFullScreen] = useState(false) + const [freedomModeStatus, setFreedomModeStatus] = useState(false) const [observer, setObserver] = useState() const [_activeSpeaker, setActiveSpeaker] = useState('') let userInfo = JSON.parse(storage.getItem('user') as string) @@ -224,7 +225,6 @@ const Meeting: React.FC = () => { const channel = new BroadcastChannel('meeting_channel'); let storeDevice: any; let agoraTime: NodeJS.Timeout; - let FreedomModeStatus = false useEffect(() => { window.electron.createChildWindow('hide') let time: NodeJS.Timeout; @@ -644,14 +644,16 @@ const Meeting: React.FC = () => { }, [isShare, roomUserList]); useEffect(() => { - if (meetingMode === 'FreedomMode') { - FreedomModeStatus = true; - } else { - if (FreedomModeStatus) { - FreedomModeStatus = false; - getShowUser() + setFreedomModeStatus((res: boolean) => { + if (meetingMode === 'FreedomMode') { + return true + } else { + if (res) { + getShowUser(true) + } + return false } - } + }) }, [meetingMode]); useEffect(() => { @@ -1740,16 +1742,18 @@ const Meeting: React.FC = () => { }) } // 渲染视频 - const renderVideo = async (uid: string = ''): Promise => { - if (isClickLock) { - return - } - if (uid) { - if (currentVideoId === uid || currentVideoUid === uid) { + const renderVideo = async (uid: string = '', bool: boolean = false): Promise => { + if (!bool) { + if (isClickLock) { return } - } else { - uid = userInfo.uid + if (uid) { + if (currentVideoId === uid || currentVideoUid === uid) { + return + } + } else { + uid = userInfo.uid + } } await agora.destroyRendererByView(`video-source-camera-primary`) await agora.destroyRendererByView(`video-source-screen`) @@ -1787,11 +1791,11 @@ const Meeting: React.FC = () => { }, 500); } // 全员观看 - const getShowUser = async (): Promise => { + const getShowUser = async (bool: boolean = false): Promise => { if (location.href.indexOf('/meeting') !== -1) { await GetShowUser(state.channelId).then(async (res) => { if (res.code === 200 && res.data) { - renderVideo(res.data) + renderVideo(res.data, bool) } }) }