diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 5426f5a..9a91680 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -119,6 +119,7 @@ const Meeting: React.FC = () => { const [currentLookUserAccount, setCurrentLookUserAccount] = useState('') const [recorder, setRecorder] = useState('') const [mediaStream, setMediaStream] = useState('') + const [isShare, setIsShare] = useState(false) const [currentLookUserStatus, setCurrentLookUserStatus] = useState<1 | 2 | 3 | 4>(1) let userInfo = JSON.parse(storage.getItem('user') as string) useEffect(() => { @@ -158,7 +159,9 @@ const Meeting: React.FC = () => { } }, onUserJoined: async (info: any, remoteUid: any, _elapsed: any) => { - if (String(remoteUid).length !== 9) { + if (String(remoteUid).length === 9) { + setIsShare(true) + } else { await getRoomUser() setTimeout(async () => { let view = document.getElementById(`video-${remoteUid}`) as HTMLElement; @@ -174,6 +177,9 @@ const Meeting: React.FC = () => { } }, onUserOffline: async (info: any, remoteUid: any, _reason: any) => { + if (String(remoteUid).length === 9) { + setIsShare(false) + } await agora.setupRemoteVideo({ uid: Number(remoteUid), view: null, @@ -444,6 +450,7 @@ const Meeting: React.FC = () => { setIsSharedScreenModal(true) break; case '停止共享': + await agora.leaveChannelEx(user.screenShareId) agora.stopScreenCapture() await allUserLook(user.uid) footerListTemplate[itemIndex][rowIndex].title = '共享屏幕' diff --git a/src/utils/package/agora.ts b/src/utils/package/agora.ts index a97d500..8f589b5 100644 --- a/src/utils/package/agora.ts +++ b/src/utils/package/agora.ts @@ -141,7 +141,7 @@ const agora = { }, // 共享屏幕单独用户 joinChannelEx: async (uid: any) => { - await rtcEngine.leaveChannelEx({ channelId: option.channelId, localUid: Number(uid) }) + await agora.leaveChannelEx(uid) await rtcEngine.joinChannelEx( option.token, { channelId: option.channelId, localUid: Number(uid) }, @@ -155,6 +155,10 @@ const agora = { } ); }, + // 离开共享屏幕频道 + leaveChannelEx: async (uid: any) => { + await rtcEngine.leaveChannelEx({ channelId: option.channelId, localUid: Number(uid) }) + }, // 停止共享屏幕 stopScreenCapture: () => { rtcEngine.stopScreenCapture();