import styles from '@/components/StupWizard/index.module.scss' import ImageUrl from '@/utils/package/imageUrl'; import { Button, Checkbox, Empty, Input, message, Modal, Popover, Radio, Select, Slider, Space } from 'antd'; import { forwardRef, useEffect, useImperativeHandle, useState } from "react"; import { agora } from '@/utils/package/agora' import { CloseOutlined, LoadingOutlined, QuestionCircleOutlined } from '@ant-design/icons'; import { storage } from '@/utils'; import path from 'path'; import { getKeyOpenChildWindow } from '@/utils/package/public'; const fs = require('fs').promises; const { exec } = require('child_process'); const StupWizard = forwardRef((props: any, ref: any) => { useImperativeHandle(ref, () => ({ changeModal: (index: number = 0) => { if (location.hash.indexOf('/meeting') === -1) { agora.init() } setList((res: any) => { res.forEach((item: any) => { item.active = false }); res[index].active = true; return res }) setIsStupWizard(true) } })) const [list, setList] = useState([ { title: '通用', icon: ImageUrl.icon45, iconActive: ImageUrl.icon45Active, active: true, }, { title: '视频', icon: ImageUrl.icon39, iconActive: ImageUrl.icon39Active, active: false, }, { title: '音频', icon: ImageUrl.icon40, iconActive: ImageUrl.icon40Active, active: false, }, { title: '录制', icon: ImageUrl.icon41, iconActive: ImageUrl.icon41Active, active: false, }, { title: '文件下载', icon: ImageUrl.icon42, iconActive: ImageUrl.icon42Active, active: false, } ]) const [isStupWizard, setIsStupWizard] = useState(false); return ( <>
{list.map((row: any, index: number) => { return (
{ const newList = [...list]; newList.forEach(item => item.active = false); newList[index].active = true; setList(newList) agora.stopPlaybackDeviceTest() agora.stopRecordingDeviceTest() }}> {row.title}
) })}
{ if (location.hash.indexOf('/meeting') === -1) { agora.release() } const isOpen = await getKeyOpenChildWindow('shareScreenWindow') if (isOpen) { window.electron.mainWindowHide() } setIsStupWizard(false) }} /> {list[0].active ? : null} {list[1].active ? : null} {list[2].active ? : null} {list[3].active ? : null} {list[4].active ? : null}
) }) const CurrencyComponents = () => { const [optionsValue, setOperationValue] = useState<'hide' | 'quit'>('hide'); const setting = JSON.parse(storage.getItem('setting') as string) useEffect(() => { setOperationValue(setting.closeSetting) }, []); return ( <>
通用
关闭按钮设置 { setting.closeSetting = e.target.value; storage.setItem('setting', JSON.stringify(setting)) setOperationValue(e.target.value) }} style={{ flexShrink: 0, margin: '10px 0' }} value={optionsValue}> 退出主程序 不退出程序,最小化到托盘
) } const VideoComponents = () => { const [videoDeviceManager, setVideoDeviceManager] = useState({ list: [], item: null, }); const setting = JSON.parse(storage.getItem('setting') as string) useEffect(() => { getVideoDeviceList() }, []); const getVideoDeviceList = async (): Promise => { const userInfo = JSON.parse(storage.getItem('user') as string) agora.getVideoDeviceManager().then(async (res) => { const { list } = res setVideoDeviceManager({ list: list.map((row: any) => { return { value: row.deviceId, label: row.deviceName } }), item: setting.videoDeviceId, }) if (setting.videoDeviceId && list.length) { await agora.setVideoDeviceManager(setting.videoDeviceId) await agora.startPreview('videoPreview', Number(userInfo.screenShareId)) } }) } return ( <>
视频
{ videoDeviceManager.item ?
:
}
摄像头: 解释说明:如未检测到摄像头请插拔后重试 } title="" > { setting.ecordingDeviceId = e; storage.setItem('setting', JSON.stringify(setting)) setAudioDeviceManager({ ...audioDeviceManager, ecordingItem: e }) agora.setRecordingDevice(e) }} />; {audioDeviceManager.ecordingActive ?
{ agora.stopRecordingDeviceTest() setAudioDeviceManager({ ...audioDeviceManager, playBackActive: false, ecordingActive: false, }) }}>结束
:
{ agora.stopPlaybackDeviceTest() agora.startRecordingDeviceTest(100) setAudioDeviceManager({ ...audioDeviceManager, playBackActive: false, ecordingActive: true, }) }}>测试
}
{audioDeviceManager.ecordingActive ?
: null}
输入音量: { setting.ecordingVolume = e; storage.setItem('setting', JSON.stringify(setting)) await agora.setRecordingDeviceVolume(e) setAudioDeviceManager({ ...audioDeviceManager, ecordingVolume: e, }) }} disabled={!audioDeviceManager.ecordingItem} />
{ setting.isAINoiseReduction = e.target.checked; storage.setItem('setting', JSON.stringify(setting)) setAudioDeviceManager({ ...audioDeviceManager, isAINoiseReduction: e.target.checked }) agora.setAINSMode(e.target.checked, audioDeviceManager.aINoiseReduction) }}> AI降噪
{ setting.aINoiseReduction = e.target.value; storage.setItem('setting', JSON.stringify(setting)) setAudioDeviceManager({ ...audioDeviceManager, aINoiseReduction: e.target.value }) agora.setAINSMode(audioDeviceManager.isAINoiseReduction, e.target.value) }} disabled={!audioDeviceManager.isAINoiseReduction} value={audioDeviceManager.aINoiseReduction}> 均衡降噪模式 强降噪模式 低延时强降噪模式
{/*
{ setting.autoEcordingVolume = e.target.checked; storage.setItem('setting', JSON.stringify(setting)) setAudioDeviceManager({ ...audioDeviceManager, autoEcordingVolume: e.target.checked }) }} checked={audioDeviceManager.autoEcordingVolume}>自动调整麦克风音量
*/}
扬声器: { setting.recordingFilesPath = e.target.value; storage.setItem('setting', JSON.stringify(setting)) setFilePath(e.target.value) }} />
录制设置
{ setting.isRecordingTips = e.target.checked; storage.setItem('setting', JSON.stringify(setting)) setIsRecordingTips(e.target.checked) }} checked={isRecordingTips}>开启入会录制提示
) } const FileComponents = () => { const [filePath, setFilePath] = useState('') const [isShareSavePath, setIsShareSavePath] = useState(true) const setting = JSON.parse(storage.getItem('setting') as string) useEffect(() => { if (!setting.shareFilesPath) { // 获取安装父目录 const currentDirectory = __dirname; const parentDirectory = path.resolve(currentDirectory, '../../Downloads') + '\\'; setting.shareFilesPath = parentDirectory setFilePath(setting.shareFilesPath) storage.setItem('setting', JSON.stringify(setting)) } else { setFilePath(setting.shareFilesPath); } setIsShareSavePath(setting.isShareSavePath) window.addEventListener('customStorageChange', handleCustomStorageChange); return () => { window.removeEventListener('customStorageChange', handleCustomStorageChange); }; }, []) const handleCustomStorageChange = (e: any): void => { if (e.key === 'setting') { const setting = JSON.parse(storage.getItem('setting') as string) setFilePath(setting.shareFilesPath) } }; return ( <>
文件下载
文件下载
保存位置 { setting.shareFilesPath = e.target.value; storage.setItem('setting', JSON.stringify(setting)) setFilePath(e.target.value) }} />
{ setting.isShareSavePath = e.target.checked; storage.setItem('setting', JSON.stringify(setting)) setIsShareSavePath(e.target.checked) }} checked={isShareSavePath}>下载前询问每个文件保存位置
) } export default StupWizard