mirror of
https://github.com/Jellify-Music/App.git
synced 2026-03-17 10:40:38 -05:00
Also removing the jump forward from the control center since that's probably not the desired control scheme
90 lines
2.7 KiB
TypeScript
90 lines
2.7 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 } 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 progress = await TrackPlayer.getProgress();
|
|
const nowPlaying = await getActiveTrack() as JellifyTrack;
|
|
|
|
await getUserLibraryApi(Client.api!)
|
|
.markFavoriteItem({
|
|
itemId: nowPlaying.item.Id!
|
|
});
|
|
|
|
await TrackPlayer.updateOptions({
|
|
likeOptions: {
|
|
isActive: false,
|
|
title: "Favorite"
|
|
},
|
|
dislikeOptions: {
|
|
isActive: true,
|
|
title: "Unfavorite"
|
|
}
|
|
});
|
|
});
|
|
|
|
TrackPlayer.addEventListener(Event.RemoteDislike, async () => {
|
|
|
|
const progress = await TrackPlayer.getProgress();
|
|
const nowPlaying = await getActiveTrack() as JellifyTrack;
|
|
|
|
await getUserLibraryApi(Client.api!)
|
|
.markFavoriteItem({
|
|
itemId: nowPlaying.item.Id!
|
|
});
|
|
|
|
await TrackPlayer.updateNowPlayingMetadata({
|
|
elapsedTime: progress.position,
|
|
rating: undefined
|
|
});
|
|
|
|
await TrackPlayer.updateOptions({
|
|
likeOptions: {
|
|
isActive: true,
|
|
title: "Favorite"
|
|
},
|
|
dislikeOptions: {
|
|
isActive: false,
|
|
title: "Unfavorite"
|
|
}
|
|
});
|
|
});
|
|
} |