import React, { useCallback, useState } from 'react'; import { useSelector } from 'react-redux'; import AddSeries from 'AddSeries/AddSeries'; import HeartRating from 'Components/HeartRating'; import Icon from 'Components/Icon'; import Label from 'Components/Label'; import Link from 'Components/Link/Link'; import MetadataAttribution from 'Components/MetadataAttribution'; import { icons, kinds, sizes } from 'Helpers/Props'; import { Statistics } from 'Series/Series'; import SeriesGenres from 'Series/SeriesGenres'; import SeriesPoster from 'Series/SeriesPoster'; import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector'; import createExistingSeriesSelector from 'Store/Selectors/createExistingSeriesSelector'; import translate from 'Utilities/String/translate'; import AddNewSeriesModal from './AddNewSeriesModal'; import styles from './AddNewSeriesSearchResult.css'; interface AddNewSeriesSearchResultProps { series: AddSeries; } function AddNewSeriesSearchResult({ series }: AddNewSeriesSearchResultProps) { const { tvdbId, titleSlug, title, year, network, originalLanguage, genres = [], status, statistics = {} as Statistics, ratings, overview, seriesType, images, } = series; const isExistingSeries = useSelector(createExistingSeriesSelector(tvdbId)); const { isSmallScreen } = useSelector(createDimensionsSelector()); const [isNewAddSeriesModalOpen, setIsNewAddSeriesModalOpen] = useState(false); const seasonCount = statistics.seasonCount; const handlePress = useCallback(() => { setIsNewAddSeriesModalOpen(true); }, []); const handleAddSeriesModalClose = useCallback(() => { setIsNewAddSeriesModalOpen(false); }, []); const handleTvdbLinkPress = useCallback((event: React.SyntheticEvent) => { event.stopPropagation(); }, []); const linkProps = isExistingSeries ? { to: `/series/${titleSlug}` } : { onPress: handlePress }; let seasons = translate('OneSeason'); if (seasonCount > 1) { seasons = translate('CountSeasons', { count: seasonCount }); } return (
{isSmallScreen ? null : ( )}
{title} {!title.includes(String(year)) && year ? ( ({year}) ) : null}
{isExistingSeries ? ( ) : null}
{originalLanguage?.name ? ( ) : null} {network ? ( ) : null} {genres.length > 0 ? ( ) : null} {seasonCount ? : null} {status === 'ended' ? ( ) : null} {status === 'upcoming' ? ( ) : null}
{overview}
); } export default AddNewSeriesSearchResult;