stremio-web/src/routes/Search/Search.js
NikolaBorislavovHristov 7dbfce62b6 useRouteActive dropped
2019-12-18 16:59:24 +02:00

78 lines
4.1 KiB
JavaScript

const React = require('react');
const PropTypes = require('prop-types');
const Icon = require('stremio-icons/dom');
const { MainNavBar, MetaRow } = require('stremio/common');
const useSearch = require('./useSearch');
const styles = require('./styles');
const Search = ({ queryParams }) => {
const search = useSearch(queryParams);
return (
<div className={styles['search-container']}>
<MainNavBar className={styles['nav-bar']} route={'search'} />
<div className={styles['search-content']}>
{
search.selected === null || search.selected.extra.every(([name]) => name !== 'search') ?
<div className={styles['message-container']}>
<div className={styles['message-content']}>
<Icon className={styles['icon']} icon={'ic_movies'} />
<div className={styles['label']}>Search for movies, series, YouTube and TV channels</div>
</div>
<div className={styles['message-content']}>
<Icon className={styles['icon']} icon={'ic_actor'} />
<div className={styles['label']}>Search for actors, directors and writers</div>
</div>
</div>
:
search.catalog_resources.length === 0 ?
<div className={styles['message-container']}>
<div className={styles['message-content']}>
<div className={styles['label']}> No addons were requested for catalogs</div>
</div>
</div>
:
search.catalog_resources.map((catalog_resource, index) => {
switch (catalog_resource.content.type) {
case 'Ready':
return (
<MetaRow
key={index}
className={styles['search-row']}
title={catalog_resource.addon_name}
items={catalog_resource.content.content}
href={catalog_resource.href}
limit={10}
/>
);
case 'Err':
return (
<MetaRow
key={index}
className={styles['search-row']}
title={catalog_resource.addon_name}
message={`Error(${catalog_resource.content.content.type})${typeof catalog_resource.content.content.content === 'string' ? ` - ${catalog_resource.content.content.content}` : ''}`}
limit={10}
/>
);
case 'Loading':
return (
<MetaRow.Placeholder
key={index}
className={styles['search-row-placeholder']}
title={catalog_resource.addon_name}
limit={10}
/>
);
}
})
}
</div>
</div>
);
};
Search.propTypes = {
queryParams: PropTypes.instanceOf(URLSearchParams)
};
module.exports = Search;