diff --git a/app/playbackservice.ts b/app/playbackservice.ts index c926944..45c5b46 100644 --- a/app/playbackservice.ts +++ b/app/playbackservice.ts @@ -28,9 +28,9 @@ const setNetState = (netState: 'mobile' | 'wifi') => { }) } -const rebuildQueue = () => { +const rebuildQueue = (forcePlay?: boolean) => { unstable_batchedUpdates(() => { - useStore.getState().rebuildQueue(useStore.getState().playerState === State.Playing) + useStore.getState().rebuildQueue(forcePlay) }) } @@ -139,7 +139,7 @@ const createService = async () => { // fix for ExoPlayer aborting playback while esimating content length if (code === 'playback-source' && message.includes('416')) { - rebuildQueue() + rebuildQueue(true) } }) } diff --git a/app/state/trackplayer.ts b/app/state/trackplayer.ts index 0ea4431..eb1c5c8 100644 --- a/app/state/trackplayer.ts +++ b/app/state/trackplayer.ts @@ -274,6 +274,7 @@ export const createTrackPlayerSlice = (set: SetStore, get: GetStore): TrackPlaye const currentTrack = await getCurrentTrack() const playerState = await getPlayerState() const position = (await TrackPlayer.getPosition()) || 0 + const repeatMode = await getRepeatMode() const queueName = get().queueName const queueContextId = get().queueContextId @@ -304,6 +305,7 @@ export const createTrackPlayerSlice = (set: SetStore, get: GetStore): TrackPlaye await TrackPlayer.skip(currentTrack) } + await TrackPlayer.setRepeatMode(repeatMode) await TrackPlayer.seekTo(position) if (playerState === State.Playing || forcePlay) {