update pause playback when timer completes

This commit is contained in:
Benard Mathu
2023-07-21 15:54:57 +03:00
committed by Lei Nelissen
parent 9cbc5a26ba
commit 85383f2447
9 changed files with 175 additions and 66 deletions

View File

@@ -8,10 +8,15 @@
*/
import TrackPlayer, { Event, State } from 'react-native-track-player';
import store from '@/store';
import store, { useTypedSelector } from '@/store';
import { sendPlaybackEvent } from './JellyfinApi';
import { useDispatch } from 'react-redux';
import { setSleepTime } from '@/store/settings/actions';
import internal from 'stream';
export default async function() {
let interval = setInterval(() => {}, 0);
TrackPlayer.addEventListener(Event.RemotePlay, () => {
TrackPlayer.play();
});
@@ -59,6 +64,11 @@ export default async function() {
if (settings.enablePlaybackReporting) {
sendPlaybackEvent('/Sessions/Playing/Progress', settings.jellyfin);
}
// regularly check if sleeper is enabled, then disable the timer
if (!settings.enabledSleeper) {
clearInterval(interval);
}
});
TrackPlayer.addEventListener(Event.PlaybackState, (event) => {
@@ -72,6 +82,24 @@ export default async function() {
sendPlaybackEvent('/Sessions/Playing/Stopped', settings.jellyfin);
}
}
// Handle is playback state is playing
if (event.state === State.Playing) {
const settings = store.getState().settings;
// Start timer is sleeper is enabled
if (settings.enabledSleeper) {
let time = settings.sleepTime;
interval = setInterval(() => {
if (time > 0) {
time -= 1;
} else {
TrackPlayer.pause();
clearInterval(interval);
}
}, 1000);
}
}
});
}