import { useEffect, useState } from "react"
import { Link, useParams } from "react-router-dom"
import styles from "styles/Movie.module.css"
import config from "config"
import useLocalStorage from "hooks/useLocalStorage"
import Rate from "components/Rate"
import TopBar from "components/TopBar"
const Movie = () => {
const { movieId } = useParams()
const [movie, setMovie] = useState()
const [cast, setCast] = useState()
const [ratings, setRatings] = useLocalStorage("ratings", [])
const rating = ratings.find(({ id }) => id == movieId)?.rating
const setRating = (rating) =>
setRatings((currentRatings) => [
...currentRatings.filter(({ id }) => id != movieId),
{ ...movie, rating },
])
useEffect(() => {
const run = async () => {
const response = await fetch(
`https://api.themoviedb.org/3/movie/${movieId}?api_key=${config.apiKey}`
)
const data = await response.json()
setMovie({
id: data.id,
overview: data.overview,
adult: data.adult,
posterUrl: `https://image.tmdb.org/t/p/w342${data.poster_path}`,
backdropUrl: `https://image.tmdb.org/t/p/original${data.backdrop_path}`,
genres: data.genres.map((genre) => genre.name),
title: data.title,
releaseDate: data.release_date,
year: data.release_date.split("-")[0],
averageVote: data.vote_average / 2,
voteCount: data.vote_count,
popularity: data.popularity,
tagline: data.tagline,
})
}
run()
}, [movieId])
useEffect(() => {
const run = async () => {
const response = await fetch(
`https://api.themoviedb.org/3/movie/${movieId}/credits?api_key=${config.apiKey}`
)
const data = await response.json()
setCast(data.cast)
}
run()
}, [movieId])
return (
<>
{movie?.tagline}
{movie?.overview}
{genre}
))}Average Rating: {movie?.averageVote.toFixed(1)}
Image Unavailable
)}