From 2164fcfde4391857e041e383e80ba9c11ad528a5 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Wed, 22 Jan 2025 17:58:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/page/Meeting/index.tsx | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 154003e..2d5c30a 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -194,6 +194,7 @@ const Meeting: React.FC = () => { const [isShare, setIsShare] = useState(null) const [isSharePopConfirm, setIsSharePopConfirm] = useState(false) const [_isNetworkDisconnected, setIsNetworkDisconnected] = useState(false) + const [isAgoraDisconnected, setIsAgoraDisconnected] = useState(false) const [isShareUser, setIsShareUser] = useState(null) const [currentLookUserStatus, setCurrentLookUserStatus] = useState<0 | 1 | 2 | 3 | 4>(1) const [commonlyChatList] = useState([ @@ -216,6 +217,7 @@ const Meeting: React.FC = () => { const msgTips = '您不是管理员或发言人,无法开启此功能!' const channel = new BroadcastChannel('meeting_channel'); let storeDevice: any; + let agoraTime: NodeJS.Timeout; useEffect(() => { window.electron.createChildWindow('hide') let time: NodeJS.Timeout; @@ -600,6 +602,30 @@ const Meeting: React.FC = () => { } }, [currentVideoId, isShare]); + useEffect(() => { + if (isAgoraDisconnected) { + agoraTime = setTimeout(() => { + confirm({ + keyboard: false, + title: '提示', + icon: , + content: `重连失败,请退出房间重试!`, + centered: true, + okText: '退出', + wrapClassName: 'hideCancelText', + cancelText: '', + async onOk() { + leaveChannel() + }, + }) + clearTimeout(agoraTime) + }, 1000 * 60); + } else { + clearTimeout(agoraTime) + } + return () => clearTimeout(agoraTime); + }, [isAgoraDisconnected]); + useEffect(() => { window.electron.onSignalr(async (_e: any, item: any) => { const setting = JSON.parse(storage.getItem('setting') as string) @@ -1261,10 +1287,12 @@ const Meeting: React.FC = () => { } else if (state === 3) { meetingDisconnectedRef.current.changeModal(false) + setIsAgoraDisconnected(false) } }, onConnectionLost: () => { meetingDisconnectedRef.current.changeModal(true) + setIsAgoraDisconnected(true) setIsScreenCapture(bool => { if (bool) { setIsNetworkDisconnected(true) @@ -1979,6 +2007,7 @@ const Meeting: React.FC = () => { if (e.value == true) { message.success('网络已连接。') meetingDisconnectedRef.current.changeModal(false) + setIsAgoraDisconnected(false) async function setUserStatus(res: any) { let userItem = res.find((item: any) => item.uid === userInfo.uid) await window.electron.onInvoke('joinChannel', {