mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-05-10 15:30:40 +00:00
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.
This commit is contained in:
parent
c849c6ccd2
commit
3d9b403cb8
1 changed files with 8 additions and 8 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Reference in a new issue