| | 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; |
| |
|