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;