feat: naive scrobbling integration

This commit is contained in:
Lei Nelissen
2023-04-27 15:08:10 +02:00
parent fb4d3932e5
commit 0bf2775c93
10 changed files with 176 additions and 9 deletions

View File

@@ -7,7 +7,9 @@
* such as processing media buttons or analytics
*/
import TrackPlayer, { Event } from 'react-native-track-player';
import TrackPlayer, { Event, State } from 'react-native-track-player';
import store from 'store';
import { sendPlaybackEvent } from './JellyfinApi';
export default async function() {
TrackPlayer.addEventListener(Event.RemotePlay, () => {
@@ -33,5 +35,38 @@ export default async function() {
TrackPlayer.addEventListener(Event.RemoteSeek, (event) => {
TrackPlayer.seekTo(event.position);
});
TrackPlayer.addEventListener(Event.PlaybackTrackChanged, () => {
// Retrieve the current settings from the Redux store
const settings = store.getState().settings;
// GUARD: Only report playback when the settings is enabled
if (settings.enablePlaybackReporting) {
sendPlaybackEvent('/Sessions/Playing', settings.jellyfin);
}
});
TrackPlayer.addEventListener(Event.PlaybackProgressUpdated, () => {
// Retrieve the current settings from the Redux store
const settings = store.getState().settings;
// GUARD: Only report playback when the settings is enabled
if (settings.enablePlaybackReporting) {
sendPlaybackEvent('/Sessions/Playing/Progress', settings.jellyfin);
}
});
TrackPlayer.addEventListener(Event.PlaybackState, (event) => {
// GUARD: Only respond to paused and stopped events
if (event.state === State.Paused || event.state === State.Stopped) {
// Retrieve the current settings from the Redux store
const settings = store.getState().settings;
// GUARD: Only report playback when the settings is enabled
if (settings.enablePlaybackReporting) {
sendPlaybackEvent('/Sessions/Playing/Stopped', settings.jellyfin);
}
}
});
}