Files
jellyfin-audio-player/src/utility/useCurrentTrack.ts

35 lines
1.1 KiB
TypeScript
Raw Normal View History

2020-06-16 17:51:51 +02:00
import { useEffect, useState } from 'react';
import TrackPlayer, { usePlaybackState, Track } from 'react-native-track-player';
/**
* This hook retrieves the current playing track from TrackPlayer
*/
export default function useCurrentTrack(): Track | undefined {
const state = usePlaybackState();
const [track, setTrack] = useState<Track>();
useEffect(() => {
const fetchTrack = async () => {
const currentTrackId = await TrackPlayer.getCurrentTrack();
// GUARD: Only fetch current track if there is a current track
if (!currentTrackId) {
2020-08-28 12:45:00 +02:00
setTrack(undefined);
2020-06-16 17:51:51 +02:00
}
// GUARD: Only retrieve new track if it is different from the one we
// have currently in state.
if (currentTrackId === track?.id){
return;
}
// If it is different, retrieve the track and save it
2020-06-16 17:51:51 +02:00
const currentTrack = await TrackPlayer.getTrack(currentTrackId);
setTrack(currentTrack);
};
fetchTrack();
}, [state, track, setTrack]);
2020-06-16 17:51:51 +02:00
return track;
}