import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { icons } from 'Helpers/Props'; import HeartRating from 'Components/HeartRating'; import IconButton from 'Components/Link/IconButton'; import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell'; import RelativeDateCellConnector from 'Components/Table/Cells/RelativeDateCellConnector'; import ListMovieStatusCell from './ListMovieStatusCell'; import Link from 'Components/Link/Link'; import AddNewDiscoverMovieModal from 'DiscoverMovie/AddNewDiscoverMovieModal'; import ExcludeMovieModal from 'DiscoverMovie/Exclusion/ExcludeMovieModal'; import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell'; import styles from './AddListMovieRow.css'; class AddListMovieRow extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isNewAddMovieModalOpen: false, isExcludeMovieModalOpen: false }; } // // Listeners onAddMoviePress = () => { this.setState({ isNewAddMovieModalOpen: true }); } onAddMovieModalClose = () => { this.setState({ isNewAddMovieModalOpen: false }); } onExcludeMoviePress = () => { this.setState({ isExcludeMovieModalOpen: true }); } onExcludeMovieModalClose = () => { this.setState({ isExcludeMovieModalOpen: false }); } // // Render render() { const { status, tmdbId, title, titleSlug, studio, inCinemas, physicalRelease, year, overview, folder, images, genres, ratings, certification, columns, isExisting, isExcluded, isSelected, onSelectedChange } = this.props; const { isNewAddMovieModalOpen, isExcludeMovieModalOpen } = this.state; const linkProps = isExisting ? { to: `/movie/${titleSlug}` } : { onPress: this.onAddMoviePress }; return ( <> { columns.map((column) => { const { name, isVisible } = column; if (!isVisible) { return null; } if (name === 'status') { return ( ); } if (name === 'sortTitle') { return ( {title} ); } if (name === 'studio') { return ( {studio} ); } if (name === 'inCinemas') { return ( ); } if (name === 'physicalRelease') { return ( ); } if (name === 'genres') { const joinedGenres = genres.join(', '); return ( {joinedGenres} ); } if (name === 'ratings') { return ( ); } if (name === 'certification') { return ( {certification} ); } if (name === 'actions') { return ( ); } return null; }) } ); } } AddListMovieRow.propTypes = { tmdbId: PropTypes.number.isRequired, status: PropTypes.string.isRequired, title: PropTypes.string.isRequired, year: PropTypes.number.isRequired, overview: PropTypes.string.isRequired, folder: PropTypes.string.isRequired, images: PropTypes.arrayOf(PropTypes.object).isRequired, titleSlug: PropTypes.string.isRequired, studio: PropTypes.string, inCinemas: PropTypes.string, physicalRelease: PropTypes.string, genres: PropTypes.arrayOf(PropTypes.string).isRequired, ratings: PropTypes.object.isRequired, certification: PropTypes.string, columns: PropTypes.arrayOf(PropTypes.object).isRequired, isExisting: PropTypes.bool.isRequired, isExcluded: PropTypes.bool.isRequired, isSelected: PropTypes.bool, onSelectedChange: PropTypes.func.isRequired }; AddListMovieRow.defaultProps = { genres: [], tags: [] }; export default AddListMovieRow;