This commit is contained in:
yj 2024-07-26 17:33:19 +08:00
parent c4bc3dd59a
commit 18eb286fea
3 changed files with 27 additions and 19 deletions

View File

@ -56,7 +56,7 @@ export const PostOpenMicr = (data: any) => {
export const PostOpenCamera = (data: any) => export const PostOpenCamera = (data: any) =>
request({ request({
url: `/room/oper-camera?roomNum=${data.roomNum}&enableCamera=${data.enableCamera}&uid=${data.uid}`, url: `/room/oper-camera`,
method: 'get', method: 'get',
data data
}) })

View File

@ -18,6 +18,7 @@ import { VideoSourceType } from 'agora-electron-sdk';
import { GetUserList } from '@/api/Home/User'; 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';
const fs = require('fs').promises; const fs = require('fs').promises;
dayjs.extend(durationPlugin); dayjs.extend(durationPlugin);
const Meeting: React.FC = () => { const Meeting: React.FC = () => {
@ -26,6 +27,7 @@ const Meeting: React.FC = () => {
const speakerModeModalRef = useRef<any>(); const speakerModeModalRef = useRef<any>();
const sharedFilesModelRef = useRef<any>(); const sharedFilesModelRef = useRef<any>();
const invitingPersonnelRef = useRef<any>(); const invitingPersonnelRef = useRef<any>();
const stupWizardRef = useRef<any>();
const [statusList, setStatusList] = useState({ const [statusList, setStatusList] = useState({
userList: false, userList: false,
userChatList: false, userChatList: false,
@ -72,11 +74,11 @@ const Meeting: React.FC = () => {
iconActive: ImageUrl.icon27Active, iconActive: ImageUrl.icon27Active,
active: false, active: false,
}, },
// { {
// title: '设置向导', title: '设置向导',
// icon: ImageUrl.icon28, icon: ImageUrl.icon28,
// active: false, active: false,
// }, },
{ {
title: '结束', title: '结束',
icon: ImageUrl.icon29, icon: ImageUrl.icon29,
@ -182,6 +184,8 @@ const Meeting: React.FC = () => {
const footerListTemplate = [...footerList] const footerListTemplate = [...footerList]
footerListTemplate[0][0].title = item.enableMicr ? '关闭声音' : '开启声音' footerListTemplate[0][0].title = item.enableMicr ? '关闭声音' : '开启声音'
footerListTemplate[0][0].active = !item.enableMicr footerListTemplate[0][0].active = !item.enableMicr
footerListTemplate[0][1].title = item.enableCamera ? '关闭视频' : '开启视频'
footerListTemplate[0][1].active = !item.enableCamera
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
} }
agora.muteLocalAudioStream(!item.enableMicr) agora.muteLocalAudioStream(!item.enableMicr)
@ -307,28 +311,28 @@ const Meeting: React.FC = () => {
footerListTemplate[itemIndex][rowIndex].title = '开启声音' footerListTemplate[itemIndex][rowIndex].title = '开启声音'
footerListTemplate[itemIndex][rowIndex].active = true footerListTemplate[itemIndex][rowIndex].active = true
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
postOpenMicr(false) postOpenMicr(false, user.uid)
break; break;
case '开启声音': case '开启声音':
footerListTemplate[itemIndex][rowIndex].title = '关闭声音' footerListTemplate[itemIndex][rowIndex].title = '关闭声音'
footerListTemplate[itemIndex][rowIndex].active = false footerListTemplate[itemIndex][rowIndex].active = false
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
postOpenMicr(true) postOpenMicr(true, user.uid)
break; break;
case '关闭视频': case '关闭视频':
footerListTemplate[itemIndex][rowIndex].title = '开启视频' footerListTemplate[itemIndex][rowIndex].title = '开启视频'
footerListTemplate[itemIndex][rowIndex].active = true footerListTemplate[itemIndex][rowIndex].active = true
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
postOpenCamera(false) postOpenCamera(false, user.uid)
break; break;
case '开启视频': case '开启视频':
footerListTemplate[itemIndex][rowIndex].title = '关闭视频' footerListTemplate[itemIndex][rowIndex].title = '关闭视频'
footerListTemplate[itemIndex][rowIndex].active = false footerListTemplate[itemIndex][rowIndex].active = false
setFooterList(footerListTemplate) setFooterList(footerListTemplate)
postOpenCamera(true) postOpenCamera(true, user.uid)
break; break;
case '设置向导': case '设置向导':
// stupWizardRef.current.changeModal()
break; break;
case '邀请人员': case '邀请人员':
invitingPersonnelRef.current.changeInvitingPersonnelModal() invitingPersonnelRef.current.changeInvitingPersonnelModal()
@ -477,19 +481,19 @@ const Meeting: React.FC = () => {
} }
} }
// 开关麦克风 // 开关麦克风
const postOpenMicr = async (enableMicr: boolean, isAll?: boolean): Promise<void> => { const postOpenMicr = async (enableMicr: boolean, uid: string, isAll?: boolean): Promise<void> => {
await PostOpenMicr({ await PostOpenMicr({
roomNum: state.channelId, roomNum: state.channelId,
uid: user.uid, uid,
enableMicr, enableMicr,
isAll, isAll,
}) })
} }
// 开关视频 // 开关视频
const postOpenCamera = async (enableCamera: boolean): Promise<void> => { const postOpenCamera = async (enableCamera: boolean, uid: string): Promise<void> => {
await PostOpenCamera({ await PostOpenCamera({
roomNum: state.channelId, roomNum: state.channelId,
uid: user.uid, uid,
enableCamera enableCamera
}) })
} }
@ -646,10 +650,10 @@ const Meeting: React.FC = () => {
</div> </div>
<div> <div>
<img src={item.enableMicr ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" onClick={() => { <img src={item.enableMicr ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" onClick={() => {
postOpenMicr(!item.enableMicr, item.id)
}} /> }} />
<img src={item.enableCamera ? ImageUrl.icon23 : ImageUrl.icon23Active} alt="" onClick={() => { <img src={item.enableCamera ? ImageUrl.icon23 : ImageUrl.icon23Active} alt="" onClick={() => {
postOpenCamera(!item.enableCamera, item.id)
}} /> }} />
</div> </div>
{item.account !== user.account && user.roleId === '1' ? <div className='drag'> {item.account !== user.account && user.roleId === '1' ? <div className='drag'>
@ -709,7 +713,7 @@ const Meeting: React.FC = () => {
</div> </div>
<div className={`${styles.meetingUserListFooter} drag`}> <div className={`${styles.meetingUserListFooter} drag`}>
<div onClick={() => invitingPersonnelRef.current.changeInvitingPersonnelModal()}></div> <div onClick={() => invitingPersonnelRef.current.changeInvitingPersonnelModal()}></div>
<div onClick={() => postOpenMicr(false, true)}></div> <div onClick={() => postOpenMicr(false, user.id, true)}></div>
</div> </div>
</div> </div>
: :
@ -825,6 +829,7 @@ const Meeting: React.FC = () => {
<SharedFilesModel ref={sharedFilesModelRef} /> <SharedFilesModel ref={sharedFilesModelRef} />
<SpeakerModeModal ref={speakerModeModalRef} /> <SpeakerModeModal ref={speakerModeModalRef} />
<InvitingPersonnelModal ref={invitingPersonnelRef} /> <InvitingPersonnelModal ref={invitingPersonnelRef} />
<StupWizard ref={stupWizardRef} />
</> </>
) )
} }

View File

@ -294,7 +294,10 @@ const agora = {
rtcEngine.enableVideo(); rtcEngine.enableVideo();
rtcEngine.startPreview(); rtcEngine.startPreview();
await GetRoomRtcToken(`${+new Date()}`).then(async (res) => { await GetRoomRtcToken(`${+new Date()}`).then(async (res) => {
await rtcEngine.joinChannel(res.data, `${+new Date()}`, uid, { await rtcEngine.joinChannelEx(res.data, {
channelId: `${+new Date()}`,
localUid: uid,
}, {
channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting, channelProfile: ChannelProfileType.ChannelProfileLiveBroadcasting,
clientRoleType: ClientRoleType.ClientRoleBroadcaster, clientRoleType: ClientRoleType.ClientRoleBroadcaster,
publishMicrophoneTrack: true, publishMicrophoneTrack: true,