diff --git a/package.json b/package.json index 90c9e5f4d..f93083d7b 100755 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "filter-invalid-dom-props": "2.1.0", "langs": "^2.0.0", "hat": "0.0.3", + "langs": "^2.0.0", "lodash.debounce": "4.0.8", "lodash.intersection": "4.4.0", "lodash.isequal": "4.5.0", diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 9eeccc000..61a583256 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -43,6 +43,7 @@ const Player = ({ urlParams, queryParams }) => { const [infoMenuOpen, , closeInfoMenu, toggleInfoMenu] = useBinaryState(false); const [speedMenuOpen, , closeSpeedMenu, toggleSpeedMenu] = useBinaryState(false); const [videosMenuOpen, , closeVideosMenu, toggleVideosMenu] = useBinaryState(false); + const defaultSubtitlesSelected = React.useRef(false); const defaultAudioTrackSelected = React.useRef(false); const [error, setError] = React.useState(null); const [videoState, setVideoState] = React.useReducer( @@ -327,6 +328,22 @@ const Player = ({ urlParams, queryParams }) => { pausedChanged(videoState.paused); } }, [videoState.paused]); + React.useEffect(() => { + if (!defaultSubtitlesSelected.current) { + const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang); + + const subtitlesTrack = findTrackByLang(videoState.subtitlesTracks, settings.subtitlesLanguage); + const extraSubtitlesTrack = findTrackByLang(videoState.extraSubtitlesTracks, settings.subtitlesLanguage); + + if (subtitlesTrack && subtitlesTrack.id) { + onSubtitlesTrackSelected(subtitlesTrack.id); + defaultSubtitlesSelected.current = true; + } else if (extraSubtitlesTrack && extraSubtitlesTrack.id) { + onExtraSubtitlesTrackSelected(extraSubtitlesTrack.id); + defaultSubtitlesSelected.current = true; + } + } + }, [videoState.subtitlesTracks, videoState.extraSubtitlesTracks]); React.useEffect(() => { if (!defaultAudioTrackSelected.current) { const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang); @@ -339,6 +356,7 @@ const Player = ({ urlParams, queryParams }) => { } }, [videoState.audioTracks]); React.useEffect(() => { + defaultSubtitlesSelected.current = false; defaultAudioTrackSelected.current = false; }, [videoState.stream]); React.useEffect(() => {