mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 11:42:05 +00:00
feat: Player - use streamState
Signed-off-by: Lachezar Lechev <lachezar@ambire.com>
This commit is contained in:
parent
74c925ecb1
commit
5c97d6e3fc
1 changed files with 6 additions and 2 deletions
|
|
@ -68,6 +68,8 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
const [nextVideoPopupOpen, openNextVideoPopup, closeNextVideoPopup] = useBinaryState(false);
|
const [nextVideoPopupOpen, openNextVideoPopup, closeNextVideoPopup] = useBinaryState(false);
|
||||||
const [sideDrawerOpen, , closeSideDrawer, toggleSideDrawer] = useBinaryState(false);
|
const [sideDrawerOpen, , closeSideDrawer, toggleSideDrawer] = useBinaryState(false);
|
||||||
|
|
||||||
|
const [streamState, setStreamState] = React.useState(player.streamState ?? {});
|
||||||
|
|
||||||
const menusOpen = React.useMemo(() => {
|
const menusOpen = React.useMemo(() => {
|
||||||
return optionsMenuOpen || subtitlesMenuOpen || audioMenuOpen || speedMenuOpen || statisticsMenuOpen || sideDrawerOpen;
|
return optionsMenuOpen || subtitlesMenuOpen || audioMenuOpen || speedMenuOpen || statisticsMenuOpen || sideDrawerOpen;
|
||||||
}, [optionsMenuOpen, subtitlesMenuOpen, audioMenuOpen, speedMenuOpen, statisticsMenuOpen, sideDrawerOpen]);
|
}, [optionsMenuOpen, subtitlesMenuOpen, audioMenuOpen, speedMenuOpen, statisticsMenuOpen, sideDrawerOpen]);
|
||||||
|
|
@ -454,16 +456,17 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
defaultSubtitlesSelected.current = true;
|
defaultSubtitlesSelected.current = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const subtitlesTrack = findTrackByLang(video.state.subtitlesTracks, settings.subtitlesLanguage);
|
const subtitlesTrack = findTrackByLang(video.state.subtitlesTracks, settings.subtitlesLanguage);
|
||||||
const extraSubtitlesTrack = findTrackByLang(video.state.extraSubtitlesTracks, settings.subtitlesLanguage);
|
const extraSubtitlesTrack = findTrackByLang(video.state.extraSubtitlesTracks, settings.subtitlesLanguage);
|
||||||
|
|
||||||
if (subtitlesTrack && subtitlesTrack.id) {
|
if (subtitlesTrack && subtitlesTrack.id) {
|
||||||
onSubtitlesTrackSelected(subtitlesTrack.id);
|
onSubtitlesTrackSelected(subtitlesTrack.id);
|
||||||
defaultSubtitlesSelected.current = true;
|
defaultSubtitlesSelected.current = true;
|
||||||
|
setStreamState({ ...streamState, subtitlesTrack: { id: subtitlesTrack.id, embedded: true, language: subtitlesTrack.lang } });
|
||||||
} else if (extraSubtitlesTrack && extraSubtitlesTrack.id) {
|
} else if (extraSubtitlesTrack && extraSubtitlesTrack.id) {
|
||||||
onExtraSubtitlesTrackSelected(extraSubtitlesTrack.id);
|
onExtraSubtitlesTrackSelected(extraSubtitlesTrack.id);
|
||||||
defaultSubtitlesSelected.current = true;
|
defaultSubtitlesSelected.current = true;
|
||||||
|
setStreamState({ ...streamState, subtitlesTrack: { id: extraSubtitlesTrack.id, embedded: false, language: extraSubtitlesTrack.lang } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [video.state.subtitlesTracks, video.state.extraSubtitlesTracks]);
|
}, [video.state.subtitlesTracks, video.state.extraSubtitlesTracks]);
|
||||||
|
|
@ -481,6 +484,7 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
}, [video.state.audioTracks]);
|
}, [video.state.audioTracks]);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
|
// TODO: load from stream item state
|
||||||
defaultSubtitlesSelected.current = false;
|
defaultSubtitlesSelected.current = false;
|
||||||
defaultAudioTrackSelected.current = false;
|
defaultAudioTrackSelected.current = false;
|
||||||
nextVideoPopupDismissed.current = false;
|
nextVideoPopupDismissed.current = false;
|
||||||
|
|
@ -568,7 +572,7 @@ const Player = ({ urlParams, queryParams }) => {
|
||||||
const videoId = player.selected ? player.selected?.streamRequest?.path?.id : null;
|
const videoId = player.selected ? player.selected?.streamRequest?.path?.id : null;
|
||||||
const video = metaItem ? metaItem.videos.find(({ id }) => id === videoId) : null;
|
const video = metaItem ? metaItem.videos.find(({ id }) => id === videoId) : null;
|
||||||
|
|
||||||
const videoInfo = video && video.season && video.episode ? ` (${video.season}x${video.episode})`: null;
|
const videoInfo = video && video.season && video.episode ? ` (${video.season}x${video.episode})` : null;
|
||||||
const videoTitle = video ? `${video.title}${videoInfo}` : null;
|
const videoTitle = video ? `${video.title}${videoInfo}` : null;
|
||||||
const metaTitle = metaItem ? metaItem.name : null;
|
const metaTitle = metaItem ? metaItem.name : null;
|
||||||
const imageUrl = metaItem ? metaItem.logo : null;
|
const imageUrl = metaItem ? metaItem.logo : null;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue