diff --git a/src/App.js b/src/App.js index cb66bfe6..cb31f6ca 100644 --- a/src/App.js +++ b/src/App.js @@ -11,6 +11,8 @@ import MovieHeader from './components/MovieHeader'; import AddMovieForm from './components/AddMovieForm'; import FavoriteMovieList from './components/FavoriteMovieList'; + + const App = props => { const displayFavorites = true; diff --git a/src/actions/movieActions.js b/src/actions/movieActions.js index 3fb8c9dd..3e7c8399 100644 --- a/src/actions/movieActions.js +++ b/src/actions/movieActions.js @@ -1,4 +1,5 @@ export const DELETE_MOVIE = "DELETE_MOVIE"; +export const ADD_MOVIE = "ADD_MOVIE" export const deleteMovie = (id)=>{ return({type: DELETE_MOVIE, payload:id}); diff --git a/src/components/Movie.js b/src/components/Movie.js index 373201e5..730df815 100644 --- a/src/components/Movie.js +++ b/src/components/Movie.js @@ -1,5 +1,7 @@ import React from 'react'; import { useParams, useHistory } from 'react-router-dom'; +import {deleteMovie} from '../actions/movieActions'; +import { connect } from 'react-redux'; const Movie = (props) => { const { id } = useParams(); @@ -7,7 +9,9 @@ const Movie = (props) => { const movies = []; const movie = movies.find(movie=>movie.id===Number(id)); - + const handleClick = () => { + props.deleteMovie() + } return(
@@ -38,7 +42,7 @@ const Movie = (props) => {
Favorite - +
@@ -47,4 +51,10 @@ const Movie = (props) => {
); } -export default Movie; \ No newline at end of file +const mapStateToProps = (state) => { + return{ + movies: state.movies + } +} + +export default connect (mapStateToProps, {deleteMovie}) (Movie); \ No newline at end of file diff --git a/src/components/MovieHeader.js b/src/components/MovieHeader.js index e3443e5f..18061214 100644 --- a/src/components/MovieHeader.js +++ b/src/components/MovieHeader.js @@ -1,5 +1,6 @@ import React from 'react'; import { Link } from 'react-router-dom'; +import { connect } from 'react-redux'; const MovieHeader = (props) => { const appTitle = ""; @@ -8,7 +9,7 @@ const MovieHeader = (props) => { return(
-

{appTitle}

+

{props.appTitle}

{ displayFavorites ? "Hide" : "Show"} Favorites
@@ -19,4 +20,10 @@ const MovieHeader = (props) => {
); } -export default MovieHeader; \ No newline at end of file +const mapStateToProps = (state) => { + return{ + appTitle: state.appTitle + } +} + +export default connect(mapStateToProps) (MovieHeader); \ No newline at end of file diff --git a/src/components/MovieList.js b/src/components/MovieList.js index 268c7809..0d42d455 100644 --- a/src/components/MovieList.js +++ b/src/components/MovieList.js @@ -1,5 +1,5 @@ import React from 'react'; - +import { connect } from 'react-redux'; import MovieListItem from './MovieListItem'; import MovieFooter from './MovieFooter'; @@ -31,4 +31,10 @@ const MovieList = (props)=> { ); } -export default MovieList; \ No newline at end of file +const mapStateToProps = (state) => { + return{ + movies: state.movies + } +} + +export default connect(mapStateToProps)(MovieList); \ No newline at end of file diff --git a/src/index.js b/src/index.js index dfc70e99..3da5e51f 100644 --- a/src/index.js +++ b/src/index.js @@ -9,9 +9,13 @@ import App from './App' import { BrowserRouter as Router } from 'react-router-dom'; import './index.css'; +const store = createStore(reducer); + ReactDOM.render( - - - , + + + + + , document.getElementById('root') ); diff --git a/src/reducers/movieReducer.js b/src/reducers/movieReducer.js index 16f33bcd..6ae794e3 100644 --- a/src/reducers/movieReducer.js +++ b/src/reducers/movieReducer.js @@ -1,17 +1,22 @@ import { ADD_MOVIE, DELETE_MOVIE } from '../actions/movieActions.js'; import movies from './../data.js'; -const initialState = { +export const initialState = { movies: movies, appTitle: "IMDB Movie Database" } -const reducer = (state, action) => { +const reducer = (state= initialState, action) => { switch(action.type) { case DELETE_MOVIE: return { movies: state.movies.filter(item=>(action.payload !== item.id)) } + case ADD_MOVIE: + return { + ...state, + movies: [...state.movies, {movies: action.payload}] + } default: return state; }