mirror of
https://github.com/Jellify-Music/App.git
synced 2026-01-31 15:38:47 -06:00
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import Client from "../api/client";
|
|
import { JellifyTrack } from "../types/JellifyTrack";
|
|
import { getUserLibraryApi } from "@jellyfin/sdk/lib/utils/api";
|
|
import TrackPlayer, { Event, RatingType } from "react-native-track-player";
|
|
import { getActiveTrack, getActiveTrackIndex } from "react-native-track-player/lib/src/trackPlayer";
|
|
|
|
/**
|
|
* Jellify Playback Service.
|
|
*
|
|
* Sets up event listeners for remote control events and
|
|
* runs for the duration of the app lifecycle
|
|
*/
|
|
export async function PlaybackService() {
|
|
|
|
TrackPlayer.addEventListener(Event.RemotePlay, async () => {
|
|
await TrackPlayer.play();
|
|
});
|
|
TrackPlayer.addEventListener(Event.RemotePause, async () => {
|
|
await TrackPlayer.pause();
|
|
});
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteNext, async () => {
|
|
await TrackPlayer.skipToNext();
|
|
});
|
|
|
|
TrackPlayer.addEventListener(Event.RemotePrevious, async () => {
|
|
await TrackPlayer.skipToPrevious();
|
|
});
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteSeek, async (event) => {
|
|
await TrackPlayer.seekTo(event.position);
|
|
});
|
|
|
|
// TrackPlayer.addEventListener(Event.RemoteJumpForward, async (event) => {
|
|
// await TrackPlayer.seekBy(event.interval)
|
|
// });
|
|
|
|
// TrackPlayer.addEventListener(Event.RemoteJumpBackward, async (event) => {
|
|
// await TrackPlayer.seekBy(-event.interval)
|
|
// });
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteLike, async () => {
|
|
|
|
const nowPlaying = await getActiveTrack() as JellifyTrack;
|
|
const nowPlayingIndex = await getActiveTrackIndex();
|
|
|
|
await getUserLibraryApi(Client.api!)
|
|
.markFavoriteItem({
|
|
itemId: nowPlaying.item.Id!
|
|
});
|
|
|
|
await TrackPlayer.updateMetadataForTrack(nowPlayingIndex!, {
|
|
rating: RatingType.Heart
|
|
})
|
|
});
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteDislike, async () => {
|
|
|
|
const nowPlaying = await getActiveTrack() as JellifyTrack;
|
|
const nowPlayingIndex = await getActiveTrackIndex();
|
|
|
|
await getUserLibraryApi(Client.api!)
|
|
.markFavoriteItem({
|
|
itemId: nowPlaying.item.Id!
|
|
});
|
|
|
|
await TrackPlayer.updateMetadataForTrack(nowPlayingIndex!, {
|
|
rating: undefined
|
|
});
|
|
});
|
|
} |