This commit is contained in:
yj 2024-08-22 10:42:04 +08:00
parent 297946ed02
commit 637ef335df
1 changed files with 79 additions and 72 deletions

View File

@ -367,7 +367,7 @@ const Meeting: React.FC = () => {
message.success(`管理员${item.user.isRoomManager ? '设置' : '取消'}${item.user.userName}为发言人`) message.success(`管理员${item.user.isRoomManager ? '设置' : '取消'}${item.user.userName}为发言人`)
} }
if (!item.user.isRoomManager) { if (!item.user.isRoomManager) {
renderVideo(item.user.uid) changeVideo()
} }
}) })
break; break;
@ -566,6 +566,20 @@ const Meeting: React.FC = () => {
} }
changeAgoraDevice() 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 => { const handleNetworkChange = (): void => {
if (navigator.onLine) { if (navigator.onLine) {
@ -580,86 +594,79 @@ const Meeting: React.FC = () => {
} }
} }
// 渲染视频 // 渲染视频
const renderVideo = async (uid: string = ''): Promise<void> => { const renderVideo = async (uid: string): Promise<void> => {
// if ((uid && currentVideoId === uid) || clickCurrentLookUserStatus === false) { if (currentVideoId === uid || clickCurrentLookUserStatus === false) {
// return return
// } }
setClickCurrentLookUserStatus(false) setClickCurrentLookUserStatus(false)
setCurrentLookUserStatus(0) setCurrentLookUserStatus(0)
setRoomUserList((list: any) => { setRoomUserList((res: any) => {
let row = list.filter((i: any) => i.roleId === '1' || i.isRoomManager) let item = res.find((item: any) => item.uid === uid || item.screenShareId === uid)
setCurrentLookUserAccount((res: any) => { if (item) {
let has = row.find((x: any) => x.uid === res.uid) setCurrentVideoId(item.uid)
if (!has && row.length) { }
uid = row[0].uid; return res
}
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
}) })
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<void> => { const getShowUser = async (): Promise<void> => {
await GetShowUser(state.channelId).then(async (res) => { await GetShowUser(state.channelId).then(async (res) => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
renderVideo(res.data) renderVideo(res.data)
changeVideo()
} }
}) })
} }