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 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<any>([])
const [allUserList, setAllUserList] = useState<any>([])
const [chatList, setChatList] = useState<any>([])
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<void> => {
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 = () => {
<div className={styles.meetingContentBody}>
<div className={`${styles.meetingContentBodyLeft} drag`}>
<div className={getMeetingContentBodyLeftModeClass()} >
{allUserList.map((item: any, index: number) => {
return (
item.isRoom ?
<div
className={`${styles.meetingContentSwiperCard}`}
key={index}
onClick={() => {
setCurrentVideoId(item.uid)
if (String(isShare) === item.screenShareId) {
renderVideo(item.screenShareId)
} else {
renderVideo(item.uid)
}
}}
>
<div className={`${styles.meetingContentSwiperCardVdeio} ${currentVideoId === item.uid ? styles.active : ''}`} id={`video-${item.uid}`}>
<div className={styles.meetingContentSwiperCardVdeioLoading}>
<Avatar name={item.userName} />
</div>
</div>
{meetingContentUser(item)}
{item.enableCamera ? null : meetingContentError(currentVideoId, item)}
{String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}>
</div> : null}
</div> : null
)
{roomUserList.map((item: any, index: number) => {
return <div
className={`${styles.meetingContentSwiperCard}`}
key={index}
onClick={() => {
setCurrentVideoId(item.uid)
if (String(isShare) === item.screenShareId) {
renderVideo(item.screenShareId)
} else {
renderVideo(item.uid)
}
}}
>
<div className={`${styles.meetingContentSwiperCardVdeio} ${currentVideoId === item.uid ? styles.active : ''}`} id={`video-${item.uid}`}>
<div className={styles.meetingContentSwiperCardVdeioLoading}>
<Avatar name={item.userName} />
</div>
</div>
{meetingContentUser(item)}
{item.enableCamera ? null : meetingContentError(currentVideoId, item)}
{String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}>
</div> : null}
</div>
}
)}
{currentLookUserStatus === 1 && currentLookUserAccount ?