| import { useEffect, useRef } from 'react'; |
|
|
| export default function useCustomAudioRef({ |
| setIsPlaying, |
| }: { |
| setIsPlaying: (isPlaying: boolean) => void; |
| }) { |
| const audioRef = useRef<HTMLAudioElement | null>(null); |
| useEffect(() => { |
| const handleEnded = () => { |
| setIsPlaying(false); |
| console.log('message audio ended'); |
| if (audioRef.current) { |
| URL.revokeObjectURL(audioRef.current.src); |
| } |
| }; |
|
|
| const handleStart = () => { |
| setIsPlaying(true); |
| console.log('message audio started'); |
| }; |
|
|
| const handlePause = () => { |
| setIsPlaying(false); |
| console.log('message audio paused'); |
| }; |
|
|
| const audioElement = audioRef.current; |
|
|
| if (audioRef.current) { |
| audioRef.current.muted = true; |
| audioRef.current.addEventListener('ended', handleEnded); |
| audioRef.current.addEventListener('play', handleStart); |
| audioRef.current.addEventListener('pause', handlePause); |
| } |
|
|
| return () => { |
| if (audioElement) { |
| audioElement.removeEventListener('ended', handleEnded); |
| audioElement.removeEventListener('play', handleStart); |
| audioElement.removeEventListener('pause', handlePause); |
| URL.revokeObjectURL(audioElement.src); |
| } |
| }; |
| }, [setIsPlaying]); |
|
|
| return { audioRef }; |
| } |
|
|