From 2a82ab22eed1610875f9969da4fc14ba12e4d92a Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Mon, 12 Aug 2024 10:22:21 +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 | 121 +++++++++++++------------------------ 1 file changed, 41 insertions(+), 80 deletions(-) diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 364f63f..c6fb967 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -15,7 +15,6 @@ import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signal import dayjs from 'dayjs'; import durationPlugin from 'dayjs/plugin/duration'; import { VideoSourceType } from 'agora-electron-sdk'; -import { GetUserList } from '@/api/Home/User'; import Avatar from '@/components/Avatar'; import SharedFilesModel from '@/components/SharedFilesModel'; import StupWizard from '@/components/StupWizard'; @@ -104,7 +103,6 @@ const Meeting: React.FC = () => { rowIndex: 0, }); const [roomUserList, setRoomUserList] = useState([]) - const [allUserList, setAllUserList] = useState([]) const [chatList, setChatList] = useState([]) const [currentVideoId, setCurrentVideoId] = useState('') let [currentSeconds, setCurrentSeconds] = useState(0) @@ -230,7 +228,7 @@ const Meeting: React.FC = () => { }, [(navigator as any).connection.effectiveType]); useEffect(() => { - let currentVideoUserItem = allUserList.find((item: any) => item.uid === currentVideoId || item.screenShareId === currentVideoId) + let currentVideoUserItem = roomUserList.find((item: any) => item.uid === currentVideoId || item.screenShareId === currentVideoId) if (currentVideoUserItem) { setCurrentLookUserAccount(currentVideoUserItem) } @@ -362,50 +360,35 @@ const Meeting: React.FC = () => { case 'OperMicr': case 'OperCamera': case 'ManagerRefresh': - setAllUserList((res: any) => { + setRoomUserList((res: any) => { let userItem = res.find((row: any) => row.uid === item.user.uid) if (userItem) { for (const key in item.user) { userItem[key] = item.user[key]; } } - let inRoomList = res.filter((row: any) => row.isRoom); - setRoomUserList(inRoomList) + setRoomUserList(res) return res }) break; case 'UserJoined': - setAllUserList((res: any) => { - let userItem = res.find((row: any) => row.uid === item.user.uid) - if (userItem) { - userItem.isRoom = true - for (const key in item.user) { - userItem[key] = item.user[key]; - } - } - let inRoomList = res.filter((row: any) => row.isRoom); - setRoomUserList(inRoomList) - return res - }) + setRoomUserList((res: any) => [...res, item.user]) break; case 'UserLeave': - setAllUserList((res: any) => { - let userItem = res.find((row: any) => row.uid === item.uid) - if (userItem) { - userItem.isRoom = false - } - let inRoomList = res.filter((row: any) => row.isRoom); - setRoomUserList(inRoomList) + setRoomUserList((res: any) => { + let userItemIndex = res.findIndex((row: any) => row.uid === item.uid) + res.splice(userItemIndex, 1) return res }) break; case 'OperAllMicr': - setAllUserList((res: any) => { + setRoomUserList((res: any) => { res.forEach((row: any) => { - row.enableMicr = item.enableMicr + if (row.uid !== userInfo.uid) { + row.enableMicr = item.enableMicr + } }) - let inRoomList = res.filter((row: any) => row.isRoom); - setRoomUserList(inRoomList) + setRoomUserList(res) return res }) break; @@ -672,32 +655,13 @@ const Meeting: React.FC = () => { // 获取房间用户 const getRoomUser = async (callback?: Function): Promise => { - Promise.all([ - GetRoomUser(state.channelId), - GetUserList({ - pageIndex: 1, - pageSize: 9999, - searchKeywod: '', - isOnline: true, - }) - ]).then(res => { - if (res[0].code === 200 && res[1].code === 200) { - res[0].data.forEach((item: any) => { + GetRoomUser(state.channelId).then(res => { + if (res.code === 200) { + res.data.forEach((item: any) => { item.isShow = true; }) - setRoomUserList(res[0].data) - res[1].data.items.forEach((item: any) => { - item.uid = item.id; - const itemUser = res[0].data.find((row: any) => row.uid === item.id) - item.isRoom = itemUser ? true : false; - for (const itemUserKey in itemUser) { - item[itemUserKey] = itemUser[itemUserKey]; - } - }); - setAllUserList(res[1].data.items); - if (callback) { - callback(res[1].data.items) - } + setRoomUserList(res.data) + callback && callback(res.data) } }) } @@ -875,33 +839,30 @@ const Meeting: React.FC = () => {
- {allUserList.map((item: any, index: number) => { - return ( - item.isRoom ? -
{ - setCurrentVideoId(item.uid) - if (String(isShare) === item.screenShareId) { - renderVideo(item.screenShareId) - } else { - renderVideo(item.uid) - } - }} - > -
-
- -
-
- {meetingContentUser(item)} - {item.enableCamera ? null : meetingContentError(currentVideoId, item)} - {String(isShare) === item.screenShareId ?
- 屏幕分享中 -
: null} -
: null - ) + {roomUserList.map((item: any, index: number) => { + return
{ + setCurrentVideoId(item.uid) + if (String(isShare) === item.screenShareId) { + renderVideo(item.screenShareId) + } else { + renderVideo(item.uid) + } + }} + > +
+
+ +
+
+ {meetingContentUser(item)} + {item.enableCamera ? null : meetingContentError(currentVideoId, item)} + {String(isShare) === item.screenShareId ?
+ 屏幕分享中 +
: null} +
} )} {currentLookUserStatus === 1 && currentLookUserAccount ?