From 825d28da3f0d6f4655ffd6bc694dc5677a0e7b1d Mon Sep 17 00:00:00 2001 From: Anthony Climer Date: Wed, 29 Mar 2023 18:59:17 -0400 Subject: [PATCH] I have completed the mvp challenges --- src/App.js | 16 +++++-- src/components/AddMovieForm.js | 81 +++++++++++++++++++++++++++++++++ src/components/EditMovieForm.js | 17 ++++++- src/components/Movie.js | 18 ++++++-- 4 files changed, 124 insertions(+), 8 deletions(-) create mode 100644 src/components/AddMovieForm.js diff --git a/src/App.js b/src/App.js index edd0e16e..34782f2b 100644 --- a/src/App.js +++ b/src/App.js @@ -8,15 +8,21 @@ import MovieHeader from './components/MovieHeader'; import FavoriteMovieList from './components/FavoriteMovieList'; +import EditMovieForm from "./components/EditMovieForm"; + +import AddMovieForm from "./components/AddMovieForm"; + import axios from 'axios'; const App = (props) => { const [movies, setMovies] = useState([]); const [favoriteMovies, setFavoriteMovies] = useState([]); + console.log(movies) useEffect(() => { axios.get('http://localhost:9000/api/movies') .then(res => { + console.log(res) setMovies(res.data); }) .catch(err => { @@ -24,7 +30,9 @@ const App = (props) => { }); }, []); - const deleteMovie = (id) => { + const deleteMovie =(id)=> { + console.log('click') + setMovies(movies.filter(item=>(item.id!==id))) } const addToFavorites = (movie) => { @@ -43,9 +51,11 @@ const App = (props) => { - + }/> + + }/> - + }/> } /> diff --git a/src/components/AddMovieForm.js b/src/components/AddMovieForm.js new file mode 100644 index 00000000..94016904 --- /dev/null +++ b/src/components/AddMovieForm.js @@ -0,0 +1,81 @@ +import React, { useState, useEffect } from 'react'; +import {useNavigate } from 'react-router-dom'; +import { Link } from 'react-router-dom'; + +import axios from 'axios'; + +const AddMovieForm = (props) => { + const navigate = useNavigate(); + const { setMovies } = props; + + + const [movie, setMovie] = useState({ + title: "", + director: "", + genre: "", + metascore: 0, + description: "" + }); + + const handleChange = (e) => { + setMovie({ + ...movie, + [e.target.name]: e.target.value + }); + } + + const handleSubmit = (e) => { + e.preventDefault(); + axios.post(`http://localhost:9000/api/movies`, movie) + .then(res => { + + props.setMovies(res.data); + navigate(`/movies`); + }) + .catch(err => { + console.log(err); + }) + } + + const { title, director, genre, metascore, description } = movie; + + return ( +
+
+
+
+

Adding{movie.title}

+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ + +
+
+
+
); +} + +export default AddMovieForm; diff --git a/src/components/EditMovieForm.js b/src/components/EditMovieForm.js index 4a229e18..540de60b 100644 --- a/src/components/EditMovieForm.js +++ b/src/components/EditMovieForm.js @@ -6,8 +6,11 @@ import axios from 'axios'; const EditMovieForm = (props) => { const navigate = useNavigate(); - + const { id } = useParams(); const { setMovies } = props; + + console.log('current Id' , id) + const [movie, setMovie] = useState({ title: "", director: "", @@ -22,6 +25,16 @@ const EditMovieForm = (props) => { [e.target.name]: e.target.value }); } + console.log(props) + useEffect(()=>{ + axios.get(`http://localhost:9000/api/movies/${id}`) + .then(res => { + setMovie(res.data) + }) + .catch(err => { + console.error(err) + }) + },[]) const handleSubmit = (e) => { e.preventDefault(); @@ -69,7 +82,7 @@ const EditMovieForm = (props) => {
- +
diff --git a/src/components/Movie.js b/src/components/Movie.js index 9b2159f1..5cfdb3d8 100644 --- a/src/components/Movie.js +++ b/src/components/Movie.js @@ -4,22 +4,34 @@ import { Link, useParams, useNavigate } from 'react-router-dom'; import axios from 'axios'; const Movie = (props) => { - const { addToFavorites } = props; + const { addToFavorites} = props; const [movie, setMovie] = useState(''); const { id } = useParams(); const navigate = useNavigate(); - useEffect(() => { axios.get(`http://localhost:9000/api/movies/${id}`) .then(res => { + console.log(res, '2') setMovie(res.data); }) .catch(err => { console.log(err.response); }) }, [id]); + + const handleDeleteClick = () => { + axios.delete(`http://localhost:9000/api/movies/${id}`) + .then(res=>{ + props.deleteMovie(id) + console.log(movie) + navigate('/movies') + }) + .catch(err => { + console.error(err.response) + }) + } return (
@@ -52,7 +64,7 @@ const Movie = (props) => {
Favorite Edit - +