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

View file

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

View file

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