2023-01-07 14:07:39 +03:00
|
|
|
import * as React from "react";
|
2023-01-07 18:25:21 +03:00
|
|
|
import { useEffect, useMemo, useState } from "react";
|
2023-01-08 10:18:20 +03:00
|
|
|
import { AUDIO_ELEMENT_FOR_PLAY_RESULT } from "./const";
|
2023-01-07 14:07:39 +03:00
|
|
|
import { useServerSetting } from "./101_server_setting";
|
|
|
|
import { useDeviceSetting } from "./102_device_setting";
|
|
|
|
import { useConvertSetting } from "./104_convert_setting";
|
|
|
|
import { useAdvancedSetting } from "./105_advanced_setting";
|
|
|
|
import { useSpeakerSetting } from "./103_speaker_setting";
|
|
|
|
import { useClient } from "./hooks/useClient";
|
|
|
|
import { useServerControl } from "./106_server_control";
|
|
|
|
|
|
|
|
export const useMicrophoneOptions = () => {
|
|
|
|
const [audioContext, setAudioContext] = useState<AudioContext | null>(null)
|
2023-01-10 18:59:09 +03:00
|
|
|
|
2023-01-07 18:25:21 +03:00
|
|
|
const clientState = useClient({
|
|
|
|
audioContext: audioContext,
|
|
|
|
audioOutputElementId: AUDIO_ELEMENT_FOR_PLAY_RESULT
|
|
|
|
})
|
2023-01-10 20:19:54 +03:00
|
|
|
console.log("cs", clientState)
|
2023-01-07 18:25:21 +03:00
|
|
|
|
2023-01-10 18:59:09 +03:00
|
|
|
const serverSetting = useServerSetting({ clientState })
|
|
|
|
const deviceSetting = useDeviceSetting(audioContext, { clientState })
|
|
|
|
const speakerSetting = useSpeakerSetting({ clientState })
|
|
|
|
const convertSetting = useConvertSetting({ clientState })
|
|
|
|
const advancedSetting = useAdvancedSetting({ clientState })
|
|
|
|
const serverControl = useServerControl({ clientState })
|
2023-01-07 14:07:39 +03:00
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const createAudioContext = () => {
|
|
|
|
const ctx = new AudioContext()
|
|
|
|
setAudioContext(ctx)
|
|
|
|
document.removeEventListener('touchstart', createAudioContext);
|
|
|
|
document.removeEventListener('mousedown', createAudioContext);
|
|
|
|
}
|
|
|
|
document.addEventListener('touchstart', createAudioContext);
|
|
|
|
document.addEventListener('mousedown', createAudioContext);
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
|
|
|
|
const voiceChangerSetting = useMemo(() => {
|
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<div className="body-row left-padding-1">
|
|
|
|
<div className="body-section-title">Virtual Microphone</div>
|
|
|
|
</div>
|
|
|
|
{serverControl.serverControl}
|
|
|
|
{serverSetting.serverSetting}
|
|
|
|
{deviceSetting.deviceSetting}
|
|
|
|
{speakerSetting.speakerSetting}
|
|
|
|
{convertSetting.convertSetting}
|
|
|
|
{advancedSetting.advancedSetting}
|
|
|
|
</>
|
|
|
|
)
|
|
|
|
}, [serverControl.serverControl,
|
|
|
|
serverSetting.serverSetting,
|
|
|
|
deviceSetting.deviceSetting,
|
|
|
|
speakerSetting.speakerSetting,
|
|
|
|
convertSetting.convertSetting,
|
|
|
|
advancedSetting.advancedSetting])
|
|
|
|
|
|
|
|
return {
|
|
|
|
voiceChangerSetting,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|