This commit is contained in:
yj 2024-08-27 17:28:37 +08:00
parent 39f5031a9d
commit bb388a7fc4
6 changed files with 21 additions and 43 deletions

View File

@ -14,7 +14,7 @@ import JoinMeetingModal from "@/components/JoinMeetingModal";
import UpdateModal from "@/components/UpdateModal"; import UpdateModal from "@/components/UpdateModal";
import * as CryptoJS from 'crypto-js'; import * as CryptoJS from 'crypto-js';
import { PostLogin } from "@/api/Login"; import { PostLogin } from "@/api/Login";
import agora from "@/utils/package/agora"; import { agora } from "@/utils/package/agora";
import QuitTips from "@/components/QuitTips"; import QuitTips from "@/components/QuitTips";
import { GetLeave } from "@/api/Meeting"; import { GetLeave } from "@/api/Meeting";
import UserVideo from "./page/UserVideo"; import UserVideo from "./page/UserVideo";
@ -33,7 +33,7 @@ const App: React.FC = () => {
}); });
const [spinning, setSpinning] = useState(false); const [spinning, setSpinning] = useState(false);
const [isState, setIsState] = useState(true); const [isState, setIsState] = useState(true);
if (location.href.indexOf('#/userVideo') === -1) { if (location.href.indexOf('/userVideo') === -1) {
useEffect(() => { useEffect(() => {
let userInfo = JSON.parse(storage.getItem('user') as string) let userInfo = JSON.parse(storage.getItem('user') as string)
let loginInfo = JSON.parse(storage.getItem('login') as string) let loginInfo = JSON.parse(storage.getItem('login') as string)
@ -150,7 +150,7 @@ const App: React.FC = () => {
if (location.href.indexOf('/login') !== -1) { if (location.href.indexOf('/login') !== -1) {
onStop() onStop()
} }
if (location.href.indexOf('#/meeting') === -1) { if (location.href.indexOf('/meeting') === -1) {
window.electron.closeMonitorWindow() window.electron.closeMonitorWindow()
} }
}, [navigate]) }, [navigate])

View File

@ -7,7 +7,7 @@ import { useState, useImperativeHandle, forwardRef } from "react";
import { PostRefresh } from '@/api/Login'; import { PostRefresh } from '@/api/Login';
import Avatar from '@/components/Avatar'; import Avatar from '@/components/Avatar';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import agora from '@/utils/package/agora'; import { agora } from '@/utils/package/agora';
let time = null as any; let time = null as any;
const JoinSetting = forwardRef((_props: any, ref: any) => { const JoinSetting = forwardRef((_props: any, ref: any) => {
useImperativeHandle(ref, () => ({ useImperativeHandle(ref, () => ({

View File

@ -2,7 +2,7 @@ import styles from '@/components/StupWizard/index.module.scss'
import ImageUrl from '@/utils/package/imageUrl'; import ImageUrl from '@/utils/package/imageUrl';
import { Button, Checkbox, Empty, Input, message, Modal, Popover, Radio, Select, Slider } from 'antd'; import { Button, Checkbox, Empty, Input, message, Modal, Popover, Radio, Select, Slider } from 'antd';
import { forwardRef, useEffect, useImperativeHandle, useState } from "react"; import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
import agora from '@/utils/package/agora' import { agora } from '@/utils/package/agora'
import { CloseOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons'; import { CloseOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { storage } from '@/utils'; import { storage } from '@/utils';
import path from 'path'; import path from 'path';

View File

@ -10,7 +10,7 @@ import { thumbImageBufferToBase64 } from '@/utils/package/base64'
import { storage } from '@/utils'; import { storage } from '@/utils';
import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, GetJoin, GetLeave, PostMuteAll, GetRoomUserItem, GetApplySpeak } from '@/api/Meeting'; import { GetRoomUser, PostOpenMicr, PostOpenCamera, GetLeaveAll, PostRoomManager, DeleteRoomManager, GetRoomKickout, GetShowUser, PostShowUser, GetJoin, GetLeave, PostMuteAll, GetRoomUserItem, GetApplySpeak } from '@/api/Meeting';
import ImageUrl from '@/utils/package/imageUrl' import ImageUrl from '@/utils/package/imageUrl'
import agora from '@/utils/package/agora' import { agora } from '@/utils/package/agora'
import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signalr'; import { onInvoke, onSignalr, offSignalr, onStart } from '@/utils/package/signalr';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import durationPlugin from 'dayjs/plugin/duration'; import durationPlugin from 'dayjs/plugin/duration';

View File

@ -2,9 +2,9 @@
import { GetPolling } from '@/api/Meeting'; import { GetPolling } from '@/api/Meeting';
import styles from '@/page/UserVideo/index.module.scss' import styles from '@/page/UserVideo/index.module.scss'
import { storage } from '@/utils'; import { storage } from '@/utils';
import agora from '@/utils/package/agora'; import { agora } from '@/utils/package/agora';
import { CloseOutlined } from '@ant-design/icons'; import { CloseOutlined } from '@ant-design/icons';
import { Button, Select, message } from 'antd'; import { Button, Empty, Select, message } from 'antd';
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
const UserVideo: React.FC = () => { const UserVideo: React.FC = () => {
let userInfo = JSON.parse(storage.getItem('user') as string) let userInfo = JSON.parse(storage.getItem('user') as string)
@ -32,7 +32,6 @@ const UserVideo: React.FC = () => {
useEffect(() => { useEffect(() => {
setUser(userInfo) setUser(userInfo)
window.addEventListener('customStorageChange', handleCustomStorageChange); window.addEventListener('customStorageChange', handleCustomStorageChange);
agora.meetingMonitoringInit();
return () => { return () => {
window.removeEventListener('customStorageChange', handleCustomStorageChange); window.removeEventListener('customStorageChange', handleCustomStorageChange);
} }
@ -65,11 +64,11 @@ const UserVideo: React.FC = () => {
useEffect(() => { useEffect(() => {
userList.forEach((item: any) => { userList.forEach((item: any) => {
agora.meetingMonitoringSetupRemoteVideoJoin({ // agora.meetingMonitoringSetupRemoteVideoJoin({
uid: Number('1' + item.screenShareId), // uid: Number('1' + item.screenShareId),
view: document.getElementById(`video-${item.uid}`), // view: document.getElementById(`video-${item.uid}`),
channelId: getQueryParameterRegex('channelId'), // channelId: getQueryParameterRegex('channelId'),
}) // })
}) })
}, [userList]) }, [userList])
// 监听缓存变化 // 监听缓存变化
@ -142,7 +141,7 @@ const UserVideo: React.FC = () => {
></Button>} ></Button>}
</div> </div>
</div> </div>
<div className={styles.userVideoContentList}> {userList.length ? <div className={styles.userVideoContentList}>
{ {
userList.map((item: any, index: number) => { userList.map((item: any, index: number) => {
return <div className={styles.userVideoContentListItem} key={index}> return <div className={styles.userVideoContentListItem} key={index}>
@ -152,7 +151,8 @@ const UserVideo: React.FC = () => {
</div> </div>
}) })
} }
</div> </div> :
<Empty style={{ margin: 'auto' }} />}
</div> </div>
</div> </div>
</> </>

View File

@ -18,9 +18,7 @@ const option: any = {
screenShareId: '', screenShareId: '',
} }
let rtcEngine: any = ''; let rtcEngine: any = '';
let meetingMonitoringrtcEngine: any = ''; export const agora = {
const agora = {
// 初始化 // 初始化
init: async (bool: boolean = false) => { init: async (bool: boolean = false) => {
rtcEngine = createAgoraRtcEngine(); rtcEngine = createAgoraRtcEngine();
@ -29,27 +27,9 @@ const agora = {
}); });
await agora.setDeviceManager(bool) await agora.setDeviceManager(bool)
}, },
// 会议监控初始化 // 获取rtcEngine
meetingMonitoringInit: async () => { getRtcEngine: () => {
meetingMonitoringrtcEngine = createAgoraRtcEngine(); return rtcEngine
await meetingMonitoringrtcEngine.initialize({
appId: option.appId,
});
},
// 会议监控远端加入
meetingMonitoringSetupRemoteVideoJoin: async (item: any) => {
if (item.view?.childNodes.length === 1) {
await meetingMonitoringrtcEngine.setupRemoteVideo(
{
renderMode: agora.getRrenderMode(item.uid),
sourceType: VideoSourceType.VideoSourceRemote,
uid: item.uid,
view: item.view,
setupMode: VideoViewSetupMode.VideoViewSetupAdd,
},
{ channelId: item.channelId },
);
}
}, },
// 获取当前设备是否存在不存在就获取默认设备 // 获取当前设备是否存在不存在就获取默认设备
setDeviceManager: async (bool: boolean = false) => { setDeviceManager: async (bool: boolean = false) => {
@ -431,6 +411,4 @@ const agora = {
await rtcEngine.getAudioDeviceManager().stopRecordingDeviceTest() await rtcEngine.getAudioDeviceManager().stopRecordingDeviceTest()
}, },
} }
export default agora;