fix: don't restart stream on next-track media key when no next video

The 'next-track' media-key handler called video.setTime(0) before
checking whether a next video existed. onNextVideoRequested() no-ops
when player.nextVideo is null, but the unconditional setTime(0) had
already rewound the current stream — causing movies (which have no
next video) to restart from the beginning when the Windows next-track
media key was pressed.

Guard both calls with the same player.nextVideo check that the
navigator.mediaSession 'nexttrack' handler already uses.
This commit is contained in:
Timothy Z. 2026-04-23 16:17:38 +02:00
parent 17d823565a
commit f579873e1b

View file

@ -650,8 +650,10 @@ const Player = ({ urlParams, queryParams }) => {
video.state.paused ? onPlayRequested() : onPauseRequested();
break;
case 'next-track':
video.setTime(0);
onNextVideoRequested();
if (player.nextVideo !== null) {
video.setTime(0);
onNextVideoRequested();
}
break;
case 'previous-track':
if (video.state.time !== null && video.state.time > 5000) {
@ -662,7 +664,7 @@ const Player = ({ urlParams, queryParams }) => {
};
shell.on('media-key', onMediaKey);
return () => shell.off('media-key', onMediaKey);
}, [video.state.paused, video.state.time, onPlayRequested, onPauseRequested, onNextVideoRequested, onSeekRequested]);
}, [video.state.paused, video.state.time, player.nextVideo, onPlayRequested, onPauseRequested, onNextVideoRequested, onSeekRequested]);
onShortcut('seekForward', (combo) => {
if (video.state.time !== null) {