2023-02-16 18:09:56 +03:00
|
|
|
import { useEffect, useState } from "react"
|
|
|
|
|
|
|
|
export type AudioConfigState = {
|
|
|
|
audioContext: AudioContext | null
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useAudioConfig = (): AudioConfigState => {
|
|
|
|
const [audioContext, setAudioContext] = useState<AudioContext | null>(null)
|
|
|
|
useEffect(() => {
|
2023-02-16 20:11:03 +03:00
|
|
|
const createAudioContext = () => {
|
2023-02-16 18:09:56 +03:00
|
|
|
const ctx = new AudioContext()
|
2023-02-16 20:11:03 +03:00
|
|
|
document.removeEventListener('touchstart', createAudioContext);
|
|
|
|
document.removeEventListener('mousedown', createAudioContext);
|
2023-02-16 18:09:56 +03:00
|
|
|
setAudioContext(ctx)
|
|
|
|
}
|
2023-02-16 20:11:03 +03:00
|
|
|
document.addEventListener('touchstart', createAudioContext);
|
|
|
|
document.addEventListener('mousedown', createAudioContext);
|
2023-02-16 18:09:56 +03:00
|
|
|
}, [])
|
|
|
|
|
|
|
|
const ret: AudioConfigState = {
|
|
|
|
audioContext
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret
|
|
|
|
|
|
|
|
}
|