fix: remove media session

This commit is contained in:
MAZE 2024-05-11 16:48:44 +03:30
parent 34d3f07581
commit 9338b1d30a

View file

@ -1,4 +1,4 @@
import { useMemo, useEffect, useRef } from 'react'; import { useMemo, useEffect } from 'react';
import { useShallow } from 'zustand/react/shallow'; import { useShallow } from 'zustand/react/shallow';
import { BiSolidHeart } from 'react-icons/bi/index'; import { BiSolidHeart } from 'react-icons/bi/index';
import { Howler } from 'howler'; import { Howler } from 'howler';
@ -85,63 +85,18 @@ export function App() {
return [...favorites, ...categories]; return [...favorites, ...categories];
}, [favoriteSounds, categories]); }, [favoriteSounds, categories]);
const audioElement = useRef<HTMLAudioElement | null>(null);
const play = useSoundStore(state => state.play);
const isPlaying = useSoundStore(state => state.isPlaying);
useEffect(() => {
const dest = Howler.ctx.createMediaStreamDestination();
Howler.masterGain.connect(dest);
if (audioElement.current) {
audioElement.current.volume = 0;
audioElement.current.srcObject = dest.stream;
}
}, []);
useEffect(() => {
try {
navigator.mediaSession.setActionHandler('play', play);
navigator.mediaSession.setActionHandler('pause', pause);
navigator.mediaSession.setActionHandler('stop', pause);
} catch (error) {
console.log('Media session is no supported yet');
}
}, [play, pause]);
useEffect(() => {
if (isPlaying) {
audioElement.current?.play().then(() => {
navigator.mediaSession.metadata = new MediaMetadata({
title: 'Moodist',
});
navigator.mediaSession.playbackState = 'playing';
});
} else {
audioElement.current?.pause();
navigator.mediaSession.playbackState = 'paused';
}
}, [isPlaying]);
return ( return (
<> <SnackbarProvider>
<SnackbarProvider> <StoreConsumer>
<StoreConsumer> <Container>
<Container> <div id="app" />
<div id="app" /> <Buttons />
<Buttons /> <Categories categories={allCategories} />
<Categories categories={allCategories} /> </Container>
</Container>
<Toolbar /> <Toolbar />
<SharedModal /> <SharedModal />
</StoreConsumer> </StoreConsumer>
</SnackbarProvider> </SnackbarProvider>
<audio aria-hidden={true} ref={audioElement} src="" />
</>
); );
} }