From 3d9b403cb839c34f6f229ed29f4c2bbaee6bc20f Mon Sep 17 00:00:00 2001 From: "Timothy Z." Date: Mon, 27 Apr 2026 10:30:37 +0000 Subject: [PATCH] fix(player): derive subtitles toggle state from live track selection The C shortcut tracked enabled/disabled via a ref that was never reset on stream change and was not updated when the user picked tracks via the menu, so the toggle could become inverted or no-op until pressed twice. Read selectedSubtitlesTrackId / selectedExtraSubtitlesTrackId directly instead. --- src/routes/Player/Player.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 7d5098e65..f9b2ecde6 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -91,7 +91,6 @@ const Player = ({ urlParams, queryParams }) => { const nextVideoPopupDismissed = React.useRef(false); const defaultSubtitlesSelected = React.useRef(false); - const subtitlesEnabled = React.useRef(true); const defaultAudioTrackSelected = React.useRef(false); const playingOnExternalDevice = React.useRef(false); const [error, setError] = React.useState(null); @@ -673,17 +672,18 @@ const Player = ({ urlParams, queryParams }) => { }, [onUpdateSubtitlesSize, onUpdateSubtitlesSize], !menusOpen); onShortcut('toggleSubtitles', () => { - const savedTrack = player.streamState?.subtitleTrack; + const isEnabled = video.state.selectedSubtitlesTrackId !== null || video.state.selectedExtraSubtitlesTrackId !== null; - if (subtitlesEnabled.current) { + if (isEnabled) { video.setSubtitlesTrack(null); video.setExtraSubtitlesTrack(null); - } else if (savedTrack?.id) { - savedTrack.embedded ? video.setSubtitlesTrack(savedTrack.id) : video.setExtraSubtitlesTrack(savedTrack.id); + } else { + const savedTrack = player.streamState?.subtitleTrack; + if (savedTrack?.id) { + savedTrack.embedded ? video.setSubtitlesTrack(savedTrack.id) : video.setExtraSubtitlesTrack(savedTrack.id); + } } - - subtitlesEnabled.current = !subtitlesEnabled.current; - }, [player.streamState], !menusOpen); + }, [player.streamState, video.state.selectedSubtitlesTrackId, video.state.selectedExtraSubtitlesTrackId], !menusOpen); onShortcut('subtitlesMenu', () => { closeMenus();