Library wrapped with model suspender

This commit is contained in:
nklhrstv 2022-07-10 12:38:13 +03:00
parent 659a6f7531
commit 22ac3b68f7

View file

@ -5,7 +5,7 @@ const PropTypes = require('prop-types');
const classnames = require('classnames'); const classnames = require('classnames');
const Icon = require('@stremio/stremio-icons/dom'); const Icon = require('@stremio/stremio-icons/dom');
const NotFound = require('stremio/routes/NotFound'); const NotFound = require('stremio/routes/NotFound');
const { Button, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState } = require('stremio/common'); const { Button, DelayedRenderer, Multiselect, MainNavBars, LibItem, Image, ModalDialog, PaginationInput, useProfile, routesRegexp, useBinaryState, withModelSuspender } = require('stremio/common');
const useLibrary = require('./useLibrary'); const useLibrary = require('./useLibrary');
const useSelectableInputs = require('./useSelectableInputs'); const useSelectableInputs = require('./useSelectableInputs');
const styles = require('./styles'); const styles = require('./styles');
@ -85,14 +85,16 @@ const Library = ({ model, urlParams, queryParams }) => {
</div> </div>
: :
library.selected === null ? library.selected === null ?
<div className={styles['message-container']}> <DelayedRenderer delay={500}>
<Image <div className={styles['message-container']}>
className={styles['image']} <Image
src={require('/images/empty.png')} className={styles['image']}
alt={' '} src={require('/images/empty.png')}
/> alt={' '}
<div className={styles['message-label']}>{model === 'library' ? 'Library' : 'Continue Watching'} not loaded!</div> />
</div> <div className={styles['message-label']}>{model === 'library' ? 'Library' : 'Continue Watching'} not loaded!</div>
</div>
</DelayedRenderer>
: :
library.catalog.length === 0 ? library.catalog.length === 0 ?
<div className={styles['message-container']}> <div className={styles['message-container']}>
@ -104,7 +106,7 @@ const Library = ({ model, urlParams, queryParams }) => {
<div className={styles['message-label']}>Empty {model === 'library' ? 'Library' : 'Continue Watching'}</div> <div className={styles['message-label']}>Empty {model === 'library' ? 'Library' : 'Continue Watching'}</div>
</div> </div>
: :
<div className={styles['meta-items-container']}> <div className={classnames(styles['meta-items-container'], 'animation-fade-in')}>
{library.catalog.map((libItem, index) => ( {library.catalog.map((libItem, index) => (
<LibItem {...libItem} removable={model === 'library'} key={index} /> <LibItem {...libItem} removable={model === 'library'} key={index} />
))} ))}
@ -132,4 +134,10 @@ Library.propTypes = {
queryParams: PropTypes.instanceOf(URLSearchParams) queryParams: PropTypes.instanceOf(URLSearchParams)
}; };
module.exports = withModel(Library); const LibraryFallback = ({ model }) => (
<MainNavBars className={styles['library-container']} route={model} />
);
LibraryFallback.propTypes = Library.propTypes;
module.exports = withModel(withModelSuspender(Library, LibraryFallback));