import PropTypes from 'prop-types'; import React, { Component } from 'react'; import Link from 'Components/Link/Link'; import MonitorToggleButton from 'Components/MonitorToggleButton'; import EditMovieModalConnector from 'Movie/Edit/EditMovieModalConnector'; import MovieIndexProgressBar from 'Movie/Index/ProgressBar/MovieIndexProgressBar'; import MoviePoster from 'Movie/MoviePoster'; import AddNewCollectionMovieModal from './../AddNewCollectionMovieModal'; import styles from './CollectionMovie.css'; class CollectionMovie extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { hasPosterError: false, isEditMovieModalOpen: false, isNewAddMovieModalOpen: false }; } // // Listeners onEditMoviePress = () => { this.setState({ isEditMovieModalOpen: true }); }; onEditMovieModalClose = () => { this.setState({ isEditMovieModalOpen: false }); }; onAddMoviePress = () => { this.setState({ isNewAddMovieModalOpen: true }); }; onAddMovieModalClose = () => { this.setState({ isNewAddMovieModalOpen: false }); }; onPosterLoad = () => { if (this.state.hasPosterError) { this.setState({ hasPosterError: false }); } }; onPosterLoadError = () => { if (!this.state.hasPosterError) { this.setState({ hasPosterError: true }); } }; // // Render render() { const { id, title, overview, year, tmdbId, images, monitored, hasFile, folder, isAvailable, isExistingMovie, posterWidth, posterHeight, detailedProgressBar, onMonitorTogglePress, collectionId } = this.props; const { isEditMovieModalOpen, isNewAddMovieModalOpen } = this.state; const linkProps = id ? { to: `/movie/${tmdbId}` } : { onPress: this.onAddMoviePress }; const elementStyle = { width: `${posterWidth}px`, height: `${posterHeight}px`, borderRadius: '5px' }; return (
{ isExistingMovie &&
}
{title}
{ id &&
}
); } } CollectionMovie.propTypes = { id: PropTypes.number, title: PropTypes.string.isRequired, year: PropTypes.number.isRequired, overview: PropTypes.string.isRequired, monitored: PropTypes.bool, collectionId: PropTypes.number.isRequired, hasFile: PropTypes.bool, folder: PropTypes.string, isAvailable: PropTypes.bool, images: PropTypes.arrayOf(PropTypes.object).isRequired, posterWidth: PropTypes.number.isRequired, posterHeight: PropTypes.number.isRequired, detailedProgressBar: PropTypes.bool.isRequired, isExistingMovie: PropTypes.bool, tmdbId: PropTypes.number.isRequired, imdbId: PropTypes.string, youTubeTrailerId: PropTypes.string, onMonitorTogglePress: PropTypes.func.isRequired }; export default CollectionMovie;