This commit is contained in:
yj 2024-08-12 10:22:21 +08:00
parent c3a4f06c51
commit 2a82ab22ee
1 changed files with 41 additions and 80 deletions

View File

@ -15,7 +15,6 @@ import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signal
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import durationPlugin from 'dayjs/plugin/duration'; import durationPlugin from 'dayjs/plugin/duration';
import { VideoSourceType } from 'agora-electron-sdk'; import { VideoSourceType } from 'agora-electron-sdk';
import { GetUserList } from '@/api/Home/User';
import Avatar from '@/components/Avatar'; import Avatar from '@/components/Avatar';
import SharedFilesModel from '@/components/SharedFilesModel'; import SharedFilesModel from '@/components/SharedFilesModel';
import StupWizard from '@/components/StupWizard'; import StupWizard from '@/components/StupWizard';
@ -104,7 +103,6 @@ const Meeting: React.FC = () => {
rowIndex: 0, rowIndex: 0,
}); });
const [roomUserList, setRoomUserList] = useState<any>([]) const [roomUserList, setRoomUserList] = useState<any>([])
const [allUserList, setAllUserList] = useState<any>([])
const [chatList, setChatList] = useState<any>([]) const [chatList, setChatList] = useState<any>([])
const [currentVideoId, setCurrentVideoId] = useState('') const [currentVideoId, setCurrentVideoId] = useState('')
let [currentSeconds, setCurrentSeconds] = useState(0) let [currentSeconds, setCurrentSeconds] = useState(0)
@ -230,7 +228,7 @@ const Meeting: React.FC = () => {
}, [(navigator as any).connection.effectiveType]); }, [(navigator as any).connection.effectiveType]);
useEffect(() => { 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) { if (currentVideoUserItem) {
setCurrentLookUserAccount(currentVideoUserItem) setCurrentLookUserAccount(currentVideoUserItem)
} }
@ -362,50 +360,35 @@ const Meeting: React.FC = () => {
case 'OperMicr': case 'OperMicr':
case 'OperCamera': case 'OperCamera':
case 'ManagerRefresh': case 'ManagerRefresh':
setAllUserList((res: any) => { setRoomUserList((res: any) => {
let userItem = res.find((row: any) => row.uid === item.user.uid) let userItem = res.find((row: any) => row.uid === item.user.uid)
if (userItem) { if (userItem) {
for (const key in item.user) { for (const key in item.user) {
userItem[key] = item.user[key]; userItem[key] = item.user[key];
} }
} }
let inRoomList = res.filter((row: any) => row.isRoom); setRoomUserList(res)
setRoomUserList(inRoomList)
return res return res
}) })
break; break;
case 'UserJoined': case 'UserJoined':
setAllUserList((res: any) => { setRoomUserList((res: any) => [...res, item.user])
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
})
break; break;
case 'UserLeave': case 'UserLeave':
setAllUserList((res: any) => { setRoomUserList((res: any) => {
let userItem = res.find((row: any) => row.uid === item.uid) let userItemIndex = res.findIndex((row: any) => row.uid === item.uid)
if (userItem) { res.splice(userItemIndex, 1)
userItem.isRoom = false
}
let inRoomList = res.filter((row: any) => row.isRoom);
setRoomUserList(inRoomList)
return res return res
}) })
break; break;
case 'OperAllMicr': case 'OperAllMicr':
setAllUserList((res: any) => { setRoomUserList((res: any) => {
res.forEach((row: 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(res)
setRoomUserList(inRoomList)
return res return res
}) })
break; break;
@ -672,32 +655,13 @@ const Meeting: React.FC = () => {
// 获取房间用户 // 获取房间用户
const getRoomUser = async (callback?: Function): Promise<void> => { const getRoomUser = async (callback?: Function): Promise<void> => {
Promise.all([ GetRoomUser(state.channelId).then(res => {
GetRoomUser(state.channelId), if (res.code === 200) {
GetUserList({ res.data.forEach((item: any) => {
pageIndex: 1,
pageSize: 9999,
searchKeywod: '',
isOnline: true,
})
]).then(res => {
if (res[0].code === 200 && res[1].code === 200) {
res[0].data.forEach((item: any) => {
item.isShow = true; item.isShow = true;
}) })
setRoomUserList(res[0].data) setRoomUserList(res.data)
res[1].data.items.forEach((item: any) => { callback && callback(res.data)
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)
}
} }
}) })
} }
@ -875,33 +839,30 @@ const Meeting: React.FC = () => {
<div className={styles.meetingContentBody}> <div className={styles.meetingContentBody}>
<div className={`${styles.meetingContentBodyLeft} drag`}> <div className={`${styles.meetingContentBodyLeft} drag`}>
<div className={getMeetingContentBodyLeftModeClass()} > <div className={getMeetingContentBodyLeftModeClass()} >
{allUserList.map((item: any, index: number) => { {roomUserList.map((item: any, index: number) => {
return ( return <div
item.isRoom ? className={`${styles.meetingContentSwiperCard}`}
<div key={index}
className={`${styles.meetingContentSwiperCard}`} onClick={() => {
key={index} setCurrentVideoId(item.uid)
onClick={() => { if (String(isShare) === item.screenShareId) {
setCurrentVideoId(item.uid) renderVideo(item.screenShareId)
if (String(isShare) === item.screenShareId) { } else {
renderVideo(item.screenShareId) renderVideo(item.uid)
} else { }
renderVideo(item.uid) }}
} >
}} <div className={`${styles.meetingContentSwiperCardVdeio} ${currentVideoId === item.uid ? styles.active : ''}`} id={`video-${item.uid}`}>
> <div className={styles.meetingContentSwiperCardVdeioLoading}>
<div className={`${styles.meetingContentSwiperCardVdeio} ${currentVideoId === item.uid ? styles.active : ''}`} id={`video-${item.uid}`}> <Avatar name={item.userName} />
<div className={styles.meetingContentSwiperCardVdeioLoading}> </div>
<Avatar name={item.userName} /> </div>
</div> {meetingContentUser(item)}
</div> {item.enableCamera ? null : meetingContentError(currentVideoId, item)}
{meetingContentUser(item)} {String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}>
{item.enableCamera ? null : meetingContentError(currentVideoId, item)}
{String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}> </div> : null}
</div>
</div> : null}
</div> : null
)
} }
)} )}
{currentLookUserStatus === 1 && currentLookUserAccount ? {currentLookUserStatus === 1 && currentLookUserAccount ?