mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 03:22:11 +00:00
feat(Player): select default audio track
This commit is contained in:
parent
a198fe635b
commit
efa9e20186
1 changed files with 13 additions and 0 deletions
|
|
@ -4,6 +4,7 @@ const React = require('react');
|
||||||
const PropTypes = require('prop-types');
|
const PropTypes = require('prop-types');
|
||||||
const classnames = require('classnames');
|
const classnames = require('classnames');
|
||||||
const debounce = require('lodash.debounce');
|
const debounce = require('lodash.debounce');
|
||||||
|
const langs = require('langs');
|
||||||
const { useRouteFocused } = require('stremio-router');
|
const { useRouteFocused } = require('stremio-router');
|
||||||
const { useServices } = require('stremio/services');
|
const { useServices } = require('stremio/services');
|
||||||
const { HorizontalNavBar, Button, useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender } = require('stremio/common');
|
const { HorizontalNavBar, Button, useFullscreen, useBinaryState, useToast, useStreamingServer, withCoreSuspender } = require('stremio/common');
|
||||||
|
|
@ -40,6 +41,7 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
const [subtitlesMenuOpen, , closeSubtitlesMenu, toggleSubtitlesMenu] = useBinaryState(false);
|
const [subtitlesMenuOpen, , closeSubtitlesMenu, toggleSubtitlesMenu] = useBinaryState(false);
|
||||||
const [infoMenuOpen, , closeInfoMenu, toggleInfoMenu] = useBinaryState(false);
|
const [infoMenuOpen, , closeInfoMenu, toggleInfoMenu] = useBinaryState(false);
|
||||||
const [videosMenuOpen, , closeVideosMenu, toggleVideosMenu] = useBinaryState(false);
|
const [videosMenuOpen, , closeVideosMenu, toggleVideosMenu] = useBinaryState(false);
|
||||||
|
const defaultAudioTrackSelected = React.useRef(false);
|
||||||
const [error, setError] = React.useState(null);
|
const [error, setError] = React.useState(null);
|
||||||
const [videoState, setVideoState] = React.useReducer(
|
const [videoState, setVideoState] = React.useReducer(
|
||||||
(videoState, nextVideoState) => ({ ...videoState, ...nextVideoState }),
|
(videoState, nextVideoState) => ({ ...videoState, ...nextVideoState }),
|
||||||
|
|
@ -313,6 +315,17 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
pausedChanged(videoState.paused);
|
pausedChanged(videoState.paused);
|
||||||
}
|
}
|
||||||
}, [videoState.paused]);
|
}, [videoState.paused]);
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (defaultAudioTrackSelected.current === false) {
|
||||||
|
const findTrackByLang = (tracks, lang) => tracks.find((track) => track.lang === lang || langs.where('1', track.lang)?.[2] === lang);
|
||||||
|
const audioTrack = findTrackByLang(videoState.audioTracks, settings.audioLanguage);
|
||||||
|
|
||||||
|
if (audioTrack && audioTrack.id) {
|
||||||
|
onAudioTrackSelected(audioTrack.id);
|
||||||
|
defaultAudioTrackSelected.current = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [videoState.audioTracks, settings.audioLanguage]);
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if ((!Array.isArray(videoState.subtitlesTracks) || videoState.subtitlesTracks.length === 0) &&
|
if ((!Array.isArray(videoState.subtitlesTracks) || videoState.subtitlesTracks.length === 0) &&
|
||||||
(!Array.isArray(videoState.extraSubtitlesTracks) || videoState.extraSubtitlesTracks.length === 0) &&
|
(!Array.isArray(videoState.extraSubtitlesTracks) || videoState.extraSubtitlesTracks.length === 0) &&
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue