| import { useCallback } from 'react'; |
| import { useRecoilState, useSetRecoilState } from 'recoil'; |
| import { globalAudioId } from '~/common'; |
| import store from '~/store'; |
|
|
| function usePauseGlobalAudio(index = 0) { |
| |
| const setAudioRunId = useSetRecoilState(store.audioRunFamily(index)); |
| const setActiveRunId = useSetRecoilState(store.activeRunFamily(index)); |
| const setGlobalIsPlaying = useSetRecoilState(store.globalAudioPlayingFamily(index)); |
| const setIsGlobalAudioFetching = useSetRecoilState(store.globalAudioFetchingFamily(index)); |
| const [globalAudioURL, setGlobalAudioURL] = useRecoilState(store.globalAudioURLFamily(index)); |
|
|
| const pauseGlobalAudio = useCallback(() => { |
| if (globalAudioURL != null && globalAudioURL !== '') { |
| const globalAudio = document.getElementById(globalAudioId); |
| if (globalAudio) { |
| console.log('Pausing global audio', globalAudioURL); |
| (globalAudio as HTMLAudioElement).pause(); |
| setGlobalIsPlaying(false); |
| } |
| URL.revokeObjectURL(globalAudioURL); |
| setIsGlobalAudioFetching(false); |
| setGlobalAudioURL(null); |
| setActiveRunId(null); |
| setAudioRunId(null); |
| } |
| }, [ |
| setAudioRunId, |
| setActiveRunId, |
| globalAudioURL, |
| setGlobalAudioURL, |
| setGlobalIsPlaying, |
| setIsGlobalAudioFetching, |
| ]); |
|
|
| return { pauseGlobalAudio }; |
| } |
|
|
| export default usePauseGlobalAudio; |
|
|