send series info to player after metaitem gets loaded

This commit is contained in:
nklhrstv 2022-04-19 14:04:57 +03:00
parent 35c9955725
commit e42065efbf
3 changed files with 25 additions and 22 deletions

View file

@ -19,7 +19,7 @@ const ControlBar = ({
muted,
subtitlesTracks,
audioTracks,
infoAvailable,
metaItem,
onPlayRequested,
onPauseRequested,
onMuteRequested,
@ -115,7 +115,7 @@ const ControlBar = ({
<Button className={classnames(styles['control-bar-button'], 'disabled')} tabIndex={-1}>
<Icon className={styles['icon']} icon={'ic_network'} />
</Button>
<Button className={classnames(styles['control-bar-button'], { 'disabled': !infoAvailable })} tabIndex={-1} onMouseDown={onInfoButtonMouseDown} onClick={onInfoButtonClick}>
<Button className={classnames(styles['control-bar-button'], { 'disabled': metaItem === null || metaItem.type !== 'Ready' })} tabIndex={-1} onMouseDown={onInfoButtonMouseDown} onClick={onInfoButtonClick}>
<Icon className={styles['icon']} icon={'ic_info'} />
</Button>
<Button className={classnames(styles['control-bar-button'], { 'disabled': !chromecastServiceActive })} tabIndex={-1} onClick={onChromecastButtonClick}>
@ -141,7 +141,7 @@ ControlBar.propTypes = {
muted: PropTypes.bool,
subtitlesTracks: PropTypes.array,
audioTracks: PropTypes.array,
infoAvailable: PropTypes.bool,
metaItem: PropTypes.object,
onPlayRequested: PropTypes.func,
onPauseRequested: PropTypes.func,
onMuteRequested: PropTypes.func,

View file

@ -224,7 +224,7 @@ const Player = ({ urlParams, queryParams }) => {
setError(null);
if (player.selected === null) {
dispatch({ type: 'command', commandName: 'unload' });
} else if (streamingServer.baseUrl !== null && streamingServer.baseUrl.type !== 'Loading') {
} else if (streamingServer.baseUrl !== null && streamingServer.baseUrl.type !== 'Loading' && player.metaItem !== null && player.metaItem.type !== 'Loading') {
dispatch({
type: 'command',
commandName: 'load',
@ -264,7 +264,7 @@ const Player = ({ urlParams, queryParams }) => {
}
});
}
}, [streamingServer.baseUrl, player.selected, player.seriesInfo, forceTranscoding, maxAudioChannels, casting]);
}, [streamingServer.baseUrl, player.selected, player.metaItem && player.metaItem.type, forceTranscoding, maxAudioChannels, casting]);
useDeepEqualEffect(() => {
if (videoState.stream !== null) {
dispatch({
@ -312,7 +312,7 @@ const Player = ({ urlParams, queryParams }) => {
}
}, [videoState.audioTracks, videoState.subtitlesTracks, videoState.extraSubtitlesTracks]);
React.useEffect(() => {
if (player.metaItem === null) {
if (player.metaItem === null || player.metaItem.type !== 'Ready') {
closeInfoMenu();
}
}, [player]);
@ -405,7 +405,7 @@ const Player = ({ urlParams, queryParams }) => {
}
case 'KeyI': {
closeSubtitlesMenu();
if (player.metaItem !== null) {
if (player.metaItem !== null && player.metaItem.type === 'Ready') {
toggleInfoMenu();
}
@ -500,7 +500,7 @@ const Player = ({ urlParams, queryParams }) => {
muted={videoState.muted}
subtitlesTracks={videoState.subtitlesTracks.concat(videoState.extraSubtitlesTracks)}
audioTracks={videoState.audioTracks}
infoAvailable={player.metaItem !== null}
metaItem={player.metaItem}
onPlayRequested={onPlayRequested}
onPauseRequested={onPauseRequested}
onMuteRequested={onMuteRequested}
@ -545,7 +545,7 @@ const Player = ({ urlParams, queryParams }) => {
className={classnames(styles['layer'], styles['menu-layer'])}
stream={player.selected !== null ? player.selected.stream : null}
addon={player.addon}
metaItem={player.metaItem}
metaItem={player.metaItem !== null && player.metaItem.type === 'Ready' ? player.metaItem.content : null}
/>
:
null

View file

@ -18,27 +18,30 @@ const init = () => ({
const map = (player) => ({
...player,
metaItem: player.metaItem !== null ?
metaItem: player.metaItem !== null && player.metaItem.type === 'Ready' ?
{
...player.metaItem,
released: new Date(
typeof player.metaItem.released === 'string' ?
player.metaItem.released
:
NaN
),
videos: player.metaItem.videos.map((video) => ({
...video,
content: {
...player.metaItem.content,
released: new Date(
typeof video.released === 'string' ?
video.released
typeof player.metaItem.content.released === 'string' ?
player.metaItem.content.released
:
NaN
),
}))
videos: player.metaItem.content.videos.map((video) => ({
...video,
released: new Date(
typeof video.released === 'string' ?
video.released
:
NaN
),
}))
}
}
:
null,
player.metaItem,
});
const usePlayer = (urlParams) => {