[go: nahoru, domu]

Skip to content

Commit

Permalink
Selecting a Movie
Browse files Browse the repository at this point in the history
  • Loading branch information
AmirrMahmoudi committed Jan 4, 2024
1 parent d5852d2 commit 5d0da12
Showing 1 changed file with 41 additions and 9 deletions.
50 changes: 41 additions & 9 deletions src/components/App.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { func } from "prop-types";
import { useEffect, useState } from "react";

const tempMovieData = [
Expand Down Expand Up @@ -58,7 +59,8 @@ export default function App() {
const [watched, setWatched] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState("");
const tempQuery = "interstellar";
const [selectedId, setSelectedId] = useState(null);

/*
useEffect(function () {
console.log("after inital render");
Expand All @@ -77,6 +79,13 @@ export default function App() {
console.log("During render");
*/

function handleSelectMovie(id) {
setSelectedId((selectedId) => (id === selectedId ? null : id));
}

function handleCloseMovie() {
setSelectedId(null);
}
useEffect(
function () {
async function fetchMovies() {
Expand All @@ -95,6 +104,7 @@ export default function App() {
const data = await res.json();
if (data.Response === "False") throw new Error("Movie not found");
setMovies(data.Search);
console.log(data.Search);
} catch (err) {
console.error(err.message);
setError(err.message);
Expand Down Expand Up @@ -123,12 +133,23 @@ export default function App() {
<Box>
{/* {isLoading ? <Loader /> : <MovieList movies={movies} />} */}
{isLoading && <Loader />}
{!isLoading && !error && <MovieList movies={movies} />}
{!isLoading && !error && (
<MovieList movies={movies} onSelectMovie={handleSelectMovie} />
)}
{error && <ErrorMessage message={error} />}
</Box>
<Box>
<WatchedSummary watched={watched} />
<WatchedMoviesList watched={watched} />
{selectedId ? (
<MovieDetails
selectedId={selectedId}
onCloseMovie={handleCloseMovie}
/>
) : (
<>
<WatchedSummary watched={watched} />
<WatchedMoviesList watched={watched} />
</>
)}
</Box>
</Main>
</>
Expand Down Expand Up @@ -225,19 +246,19 @@ const WatchedBox = () => {
);
};
*/
const MovieList = ({ movies }) => {
const MovieList = ({ movies, onSelectMovie }) => {
return (
<ul className="list">
<ul className="list list-movies">
{movies?.map((movie) => (
<Movie movie={movie} key={movie.imdbID} />
<Movie movie={movie} key={movie.imdbID} onSelectMovie={onSelectMovie} />
))}
</ul>
);
};

const Movie = ({ movie }) => {
const Movie = ({ movie, onSelectMovie }) => {
return (
<li>
<li onClick={() => onSelectMovie(movie.imdbID)}>
<img src={movie.Poster} alt={`${movie.Title} poster`} />
<h3>{movie.Title}</h3>
<div>
Expand All @@ -250,6 +271,17 @@ const Movie = ({ movie }) => {
);
};

function MovieDetails({ selectedId, onCloseMovie }) {
return (
<div className="details">
<button className="btn-back" onClick={onCloseMovie}>
&larr;
</button>
{selectedId}
</div>
);
}

const WatchedSummary = ({ watched }) => {
const avgImdbRating = average(watched.map((movie) => movie.imdbRating));
const avgUserRating = average(watched.map((movie) => movie.userRating));
Expand Down

0 comments on commit 5d0da12

Please sign in to comment.