From 004e5669644159d72939d7d51efacee37d80e0b7 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Fri, 18 Oct 2024 15:19:38 +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 --- .../Meeting/CurrentSpeakUserWindow/index.tsx | 12 ++--- src/page/Meeting/index.tsx | 52 +++++++++++-------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/page/Meeting/CurrentSpeakUserWindow/index.tsx b/src/page/Meeting/CurrentSpeakUserWindow/index.tsx index c4c1893..9cf4ec3 100644 --- a/src/page/Meeting/CurrentSpeakUserWindow/index.tsx +++ b/src/page/Meeting/CurrentSpeakUserWindow/index.tsx @@ -1,16 +1,11 @@ import styles from '@/page/Meeting/CurrentSpeakUserWindow/index.module.scss' -import { storage } from '@/utils'; import { useEffect, useState } from "react"; const CurrentSpeakUserWindow: React.FC = () => { const [inputValue, setInputValue] = useState('') - const [user, setUser] = useState({}); - const [isMeSpeack, setIsMeSpeack] = useState(false) const channel = new BroadcastChannel('meeting_channel'); - const userInfo = JSON.parse(storage.getItem('user') as string) useEffect(() => { - setUser(userInfo) channel.onmessage = function (event) { - const { type, currentSpeakUser, uidArr } = event.data; + const { type, currentSpeakUser } = event.data; switch (type) { case 'currentSpeakUser': if (currentSpeakUser.length) { @@ -18,7 +13,6 @@ const CurrentSpeakUserWindow: React.FC = () => { } else { setInputValue('') } - setIsMeSpeack(uidArr.find((item: any) => item === 0) === 0 ? true : false) break; } } @@ -28,8 +22,8 @@ const CurrentSpeakUserWindow: React.FC = () => { return ( <>
-
- {`正在说话:${isMeSpeack ? user.userName + ';' : ''} ${inputValue}`} +
+ {`正在说话: ${inputValue}`}
diff --git a/src/page/Meeting/index.tsx b/src/page/Meeting/index.tsx index 02da424..d6bc6cb 100644 --- a/src/page/Meeting/index.tsx +++ b/src/page/Meeting/index.tsx @@ -144,6 +144,7 @@ const Meeting: React.FC = () => { rowIndex: 0, }); const [roomUserList, setRoomUserList] = useState([]) + const [_speackUid, setSpeackUid] = useState([]) const [chatList, setChatList] = useState([]) const [currentVideoId, setCurrentVideoId] = useState('') let [currentSeconds, setCurrentSeconds] = useState(0) @@ -359,6 +360,24 @@ const Meeting: React.FC = () => { } time = setInterval(() => { setCurrentSeconds(currentSeconds++) + setSpeackUid((uids: any) => { + const usernames: string[] = []; + setRoomUserList((res: any) => { + uids.forEach((uid: any) => { + const user = res.find((item: any) => item.uid == uid); + if (user) { + usernames.push(user.userName); + } + }) + channel.postMessage({ + type: 'currentSpeakUser', + currentSpeakUser: usernames, + }); + return res + }); + + return [] + }) }, 1000) // 首次加载图标更新 const firstFooterList = [...footerList] @@ -382,9 +401,13 @@ const Meeting: React.FC = () => { okText: '确定', cancelText: '取消', async onOk() { - changeStatusList({ - title: '录制' - }, 1, 3) + if (stateInfo) { + changeStatusList({ + title: '录制' + }, 1, 3) + } else { + message.error('当前不在会议室!') + } }, onCancel() { } @@ -916,27 +939,10 @@ const Meeting: React.FC = () => { } }, onAudioVolumeIndication: async (speakers: AudioVolumeInfo[]) => { - function checkUidsInUsers(uids: number[]): string[] { - const usernames: string[] = []; - setRoomUserList((res: any) => { - uids.forEach(uid => { - const user = res.find((item: any) => item.uid == uid); - if (user) { - usernames.push(user.userName); - } - }) - return res - }); - return usernames - } if (speakers.length) { - const uidArr = (speakers.filter((item: any) => item.volume)).map(item => item.uid) as number[]; - const currentSpeakUser = checkUidsInUsers(uidArr) - channel.postMessage({ - type: 'currentSpeakUser', - currentSpeakUser, - uidArr - }); + setSpeackUid((res: any) => { + return [...new Set([...res, ...(speakers.filter((item: any) => item.volume)).map(item => item.uid || userInfo.uid)])] + }) speakers.forEach((item: any) => { let domMe = document.getElementById(`micr-item-${userInfo.uid}`); let dom = document.getElementById(`micr-${item.uid ? item.uid : userInfo.uid}`);