mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-19 05:32:09 +00:00
error and loading cases handled in videos list
This commit is contained in:
parent
187faba125
commit
40660a01d7
2 changed files with 54 additions and 32 deletions
|
|
@ -8,39 +8,20 @@ const VideoPlaceholder = require('./VideoPlaceholder');
|
|||
const useSeasons = require('./useSeasons');
|
||||
const styles = require('./styles');
|
||||
|
||||
const VideosList = ({ className, metaItem }) => {
|
||||
const [season, seasons, setSeason] = useSeasons(metaItem);
|
||||
const VideosList = ({ className, meta }) => {
|
||||
const [season, seasons, setSeason] = useSeasons(meta !== null && meta.content.type === 'Ready' ? meta.content.content : null);
|
||||
const videos = React.useMemo(() => {
|
||||
return meta !== null && meta.content.type === 'Ready' ?
|
||||
meta.content.content.videos.filter((video) => {
|
||||
return isNaN(season) || video.season === season;
|
||||
})
|
||||
:
|
||||
[];
|
||||
}, [meta, season]);
|
||||
return (
|
||||
<div className={classnames(className, styles['videos-list-container'])}>
|
||||
{
|
||||
metaItem !== null ?
|
||||
<React.Fragment>
|
||||
{
|
||||
seasons.length > 1 ?
|
||||
<SeasonsBar
|
||||
className={styles['seasons-bar']}
|
||||
season={season}
|
||||
seasons={seasons}
|
||||
onSeasonChange={setSeason}
|
||||
/>
|
||||
:
|
||||
null
|
||||
}
|
||||
<div className={styles['videos-scroll-container']}>
|
||||
{
|
||||
metaItem.videos
|
||||
.filter((video) => isNaN(season) || video.season === season)
|
||||
.map((video) => (
|
||||
<Video
|
||||
{...video}
|
||||
key={video.id}
|
||||
className={styles['video']}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</React.Fragment>
|
||||
:
|
||||
meta === null ?
|
||||
<React.Fragment>
|
||||
<SeasonsBarPlaceholder className={styles['seasons-bar']} />
|
||||
<div className={styles['videos-scroll-container']}>
|
||||
|
|
@ -54,6 +35,41 @@ const VideosList = ({ className, metaItem }) => {
|
|||
<VideoPlaceholder className={styles['video']} />
|
||||
</div>
|
||||
</React.Fragment>
|
||||
:
|
||||
meta.content.type === 'Ready' ?
|
||||
<React.Fragment>
|
||||
{
|
||||
seasons.length > 1 ?
|
||||
<SeasonsBar
|
||||
className={styles['seasons-bar']}
|
||||
season={season}
|
||||
seasons={seasons}
|
||||
onSeasonChange={setSeason}
|
||||
/>
|
||||
:
|
||||
null
|
||||
}
|
||||
{
|
||||
videos.length > 0 ?
|
||||
<div className={styles['videos-scroll-container']}>
|
||||
{videos.map((video, index) => (
|
||||
<Video
|
||||
{...video}
|
||||
key={index}
|
||||
className={styles['video']}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
:
|
||||
<div className={styles['message-label']}>
|
||||
No videos
|
||||
</div>
|
||||
}
|
||||
</React.Fragment>
|
||||
:
|
||||
<div className={styles['message-label']}>
|
||||
No videos
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
);
|
||||
|
|
@ -61,7 +77,7 @@ const VideosList = ({ className, metaItem }) => {
|
|||
|
||||
VideosList.propTypes = {
|
||||
className: PropTypes.string,
|
||||
metaItem: PropTypes.object
|
||||
meta: PropTypes.object
|
||||
};
|
||||
|
||||
module.exports = VideosList;
|
||||
|
|
|
|||
|
|
@ -3,12 +3,18 @@
|
|||
flex-direction: column;
|
||||
background: var(--color-backgrounddark80);
|
||||
|
||||
.seasons-bar {
|
||||
.seasons-bar, .message-label {
|
||||
flex: none;
|
||||
width: var(--item-size);
|
||||
margin: 2rem 2rem 1rem 2rem;
|
||||
}
|
||||
|
||||
.message-label {
|
||||
font-size: 2rem;
|
||||
text-align: center;
|
||||
color: var(--color-surfacelighter);
|
||||
}
|
||||
|
||||
.videos-scroll-container {
|
||||
flex: 1;
|
||||
align-self: stretch;
|
||||
|
|
|
|||
Loading…
Reference in a new issue