diff --git a/src/containers/ActionMovies.js b/src/containers/ActionMovies.js deleted file mode 100644 index 2809993..0000000 --- a/src/containers/ActionMovies.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { fetchActionMovies } from '../store/actions/index'; -import { getMovieRows } from '../getMovie'; - -class ActionMovies extends Component { - componentWillMount() { - this.props.fetchActionMovies(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.actionMovies.data) { - const url = `/discover/movie?api_key=${process.env.API_KEY}&with_genres=28`; - movies = getMovieRows(this.props.actionMovies.data, url); - } - return ( - <> -

Action Movies

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { actionMovies: state.action }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchActionMovies }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(ActionMovies); diff --git a/src/containers/ComedyMovies.js b/src/containers/ComedyMovies.js deleted file mode 100644 index 8290e45..0000000 --- a/src/containers/ComedyMovies.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { getMovieRows } from '../getMovie'; -import { fetchComedyMovies } from '../store/actions/index'; - -class ComedyMovies extends Component { - componentWillMount() { - this.props.fetchComedyMovies(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.movies.data) { - const url = `/discover/tv?api_key=${process.env.API_KEY}&with_genres=35`; - movies = getMovieRows(this.props.movies.data, url); - } - return ( - <> -

Comedy Movies

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { movies: state.comedy }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchComedyMovies }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(ComedyMovies); diff --git a/src/containers/DisplayMovieRow.js b/src/containers/DisplayMovieRow.js index 685a548..6cd3a41 100644 --- a/src/containers/DisplayMovieRow.js +++ b/src/containers/DisplayMovieRow.js @@ -1,9 +1,7 @@ import React from 'react'; -// import MovieGenre from './components/MovieGenre'; import MovieGenre from '../components/MovieGenre'; const getMovieRows = (movies, url) => { - console.log('getMovieRow() ', movies, url); const movieRow = movies.map((movie) => { let movieImageUrl = 'https://image.tmdb.org/t/p/w500/' + movie.backdrop_path; @@ -31,7 +29,6 @@ const getMovieRows = (movies, url) => { }; export default function DisplayMovieRow(props) { - console.log('DisplayMovieRow.render()', props.movies); let movies = getMovieRows(props.movies, props.url); return ( <> diff --git a/src/containers/Documentaries.js b/src/containers/Documentaries.js deleted file mode 100644 index 4f1f82b..0000000 --- a/src/containers/Documentaries.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { getMovieRows } from '../getMovie'; -import { fetchDocumentaries } from '../store/actions/index'; - -class Documentaries extends Component { - componentWillMount() { - this.props.fetchDocumentaries(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.movies.data) { - const url = `/discover/tv?api_key=${process.env.API_KEY}&with_genres=99`; - movies = getMovieRows(this.props.movies.data, url); - } - return ( - <> -

Documentaries

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { movies: state.documentary }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchDocumentaries }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(Documentaries); diff --git a/src/containers/HorrorMovies.js b/src/containers/HorrorMovies.js deleted file mode 100644 index 164a7fb..0000000 --- a/src/containers/HorrorMovies.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { getMovieRows } from '../getMovie'; -import { fetchHorrorMovies } from '../store/actions/index'; - -class HorrorMovies extends Component { - componentWillMount() { - this.props.fetchHorrorMovies(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.movies.data) { - const url = `/discover/tv?api_key=${process.env.API_KEY}&with_genres=27`; - movies = getMovieRows(this.props.movies.data, url); - } - return ( - <> -

Horror Movies

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { movies: state.horror }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchHorrorMovies }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(HorrorMovies); diff --git a/src/containers/MainContent.js b/src/containers/MainContent.js index fe90ad7..b4062c0 100644 --- a/src/containers/MainContent.js +++ b/src/containers/MainContent.js @@ -1,17 +1,19 @@ import React, { Component } from 'react'; import axios from 'axios'; -import Header from '../components/Header'; -import Footer from '../components/Footer'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import TrendingMovies from './TrendingMovies'; -import NetflixOriginals from './NetflixOriginals'; -import { fetchNetflixOriginals } from '../store/actions/index'; -import TopRated from './TopRated'; -import ActionMovies from './ActionMovies'; -import ComedyMovies from './ComedyMovies'; -import Documentaries from './Documentaries'; +import Header from '../components/Header'; +import Footer from '../components/Footer'; +import { + fetchNetflixOriginals, + fetchTrending, + fetchTopRated, + fetchActionMovies, + fetchComedyMovies, + fetchDocumentaries, + fetchHorrorMovies +} from '../store/actions/index'; import DisplayMovieRow from './DisplayMovieRow'; @@ -24,21 +26,76 @@ class MainContent extends Component { { title: 'Netflix Originals', url: `/discover/tv?api_key=${process.env.API_KEY}&with_networks=213`, - movies: [] - } + movies: [], + }, + { + title: 'Trending Now', + url: `/trending/all/week?api_key=${process.env.API_KEY}&language=en-US`, + movies: [], + }, + { + title: 'Top Rated', + url: `/movie/top_rated?api_key=${process.env.API_KEY}&language=en-US`, + movies: [], + }, + { + title: 'Action Movies', + url: `/discover/movie?api_key=${process.env.API_KEY}&with_genres=28`, + movies: [], + }, + { + title: 'Comedy Movies', + url: `/discover/tv?api_key=${process.env.API_KEY}&with_genres=35`, + movies: [], + }, + { + title: 'Horror Movies', + url: `/discover/tv?api_key=${process.env.API_KEY}&with_genres=27`, + movies: [], + }, + { + title: 'Documentaries', + url: `/discover/tv?api_key=${process.env.API_KEY}&with_genres=99`, + movies: [], + }, ], - netflixOriginals: [] }; componentDidMount = async () => { await this.getMovie(); await this.props.fetchNetflixOriginals(); - this.state.movieInfo.forEach((movie) => { + await this.props.fetchTrending(); + await this.props.fetchTopRated(); + await this.props.fetchActionMovies(); + await this.props.fetchComedyMovies(); + await this.props.fetchDocumentaries(); + await this.props.fetchHorrorMovies(); + + const newMoviesArray = this.state.movieInfo.map((movie) => { if (movie.title === 'Netflix Originals') { movie.movies.push(...this.props.netflixOriginals.data) } + if (movie.title === 'Trending Now') { + movie.movies.push(...this.props.trending.data) + } + if (movie.title === 'Top Rated') { + movie.movies.push(...this.props.topRated.data) + } + if (movie.title === 'Action Movies') { + movie.movies.push(...this.props.actionMovies.data) + } + if (movie.title === 'Comedy Movies') { + movie.movies.push(...this.props.comedyMovies.data) + } + if (movie.title === 'Documentaries') { + movie.movies.push(...this.props.documentaries.data) + } + if (movie.title === 'Horror Movies') { + movie.movies.push(...this.props.horrorMovies.data) + } + return movie }) - // await this.setState({ movieInfo: this.props.netflixOriginals.data }) + await this.setState({ movieInfo: newMoviesArray }) }; getMovie = () => { @@ -58,32 +115,23 @@ class MainContent extends Component { }; render() { - // console.log('render().state', this.state) return (
{ this.state.movieInfo.map((info) => { - // console.log('render()----', info) - return ( - ) + if (info.movies.length > 0) { + return ( + ) + } }) } - {/* */} - {/* */} - - - - -
@@ -92,15 +140,30 @@ class MainContent extends Component { } const mapStateToProps = (state) => { - return { netflixOriginals: state.netflixOriginals }; + return { + netflixOriginals: state.netflixOriginals, + trending: state.trending, + topRated: state.topRated, + actionMovies: state.action, + comedyMovies: state.comedy, + documentaries: state.documentary, + horrorMovies: state.horror + }; }; const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchNetflixOriginals }, dispatch); + return bindActionCreators({ + fetchNetflixOriginals, + fetchTrending, + fetchTopRated, + fetchActionMovies, + fetchComedyMovies, + fetchDocumentaries, + fetchHorrorMovies + }, dispatch); } export default connect( mapStateToProps, mapDispatchToProps -) - (MainContent); \ No newline at end of file +)(MainContent); \ No newline at end of file diff --git a/src/containers/NetflixOriginals.js b/src/containers/NetflixOriginals.js deleted file mode 100644 index cc7786e..0000000 --- a/src/containers/NetflixOriginals.js +++ /dev/null @@ -1,58 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; -import OwlCarousel from 'react-owl-carousel2'; - -import { getMovieRows } from '../getMovie'; -import { fetchNetflixOriginals } from '../store/actions/index'; - -const options = { - items: 1, - nav: true, - rewind: true, - autoplay: true, -}; - -const events = { - onDragged: [], - onChanged: [], -}; - -class NetflixOriginals extends Component { - componentWillMount() { - this.props.fetchNetflixOriginals(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.movies.data) { - const url = `/discover/tv?api_key=${process.env.API_KEY}&with_networks=213`; - movies = getMovieRows(this.props.movies.data, url); - } - return ( - <> -

NETFLIX ORIGINALS

-
{movies}
- {/* - {movies} - */} - - ); - } -} - -const mapStateToProps = (state) => { - return { movies: state.netflixOriginals }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchNetflixOriginals }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(NetflixOriginals); diff --git a/src/containers/RomanceMovies.js b/src/containers/RomanceMovies.js deleted file mode 100644 index e230697..0000000 --- a/src/containers/RomanceMovies.js +++ /dev/null @@ -1,39 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { getMovieRows } from '../getMovie'; -import { fetchRomanceMovies } from '../store/actions/index'; - -class RomanceMovies extends Component { - componentWillMount() { - this.props.fetchRomanceMovies(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.movies.data) { - const url = `/discover/tv?api_key=${process.env.API_KEY}&with_genres=10749`; - movies = getMovieRows(this.props.movies.data, url); - } - - return ( - <> -

Romance Movies

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { movies: state.romance }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchRomanceMovies }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(RomanceMovies); diff --git a/src/containers/TopRated.js b/src/containers/TopRated.js deleted file mode 100644 index b2d9c50..0000000 --- a/src/containers/TopRated.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { fetchTopRated } from '../store/actions/index'; -import { getMovieRows } from '../getMovie'; - -class TopRated extends Component { - componentWillMount() { - this.props.fetchTopRated(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.topRated.data) { - const url = `/movie/top_rated?api_key=${process.env.API_KEY}&language=en-US`; - movies = getMovieRows(this.props.topRated.data, url); - } - return ( - <> -

Top Rated

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { topRated: state.topRated }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchTopRated }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(TopRated); diff --git a/src/containers/TrendingMovies.js b/src/containers/TrendingMovies.js deleted file mode 100644 index 7c14cd1..0000000 --- a/src/containers/TrendingMovies.js +++ /dev/null @@ -1,38 +0,0 @@ -import React, { Component } from 'react'; -import { bindActionCreators } from 'redux'; -import { connect } from 'react-redux'; - -import { fetchTrending } from '../store/actions/index'; -import { getMovieRows } from '../getMovie'; - -class TrendingMovies extends Component { - componentWillMount() { - this.props.fetchTrending(); - } - - render() { - let movies; - // Call getMoviesRows function only when we get the data back - // from the API through redux - if (this.props.trending.data) { - const url = `/trending/all/week?api_key=${process.env.API_KEY}&language=en-US`; - movies = getMovieRows(this.props.trending.data, url); - } - return ( - <> -

Trending Now

-
{movies}
- - ); - } -} - -const mapStateToProps = (state) => { - return { trending: state.trending }; -}; - -const mapDispatchToProps = (dispatch) => { - return bindActionCreators({ fetchTrending }, dispatch); -}; - -export default connect(mapStateToProps, mapDispatchToProps)(TrendingMovies);