import React, { useState, useEffect } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import "./SearchPage.css"; const SearchPage = () => { const [movieDetails, setMovieDetails] = useState(null); const [searchResults, setSearchResults] = useState([]); const [trailerKey, setTrailerKey] = useState(null); const location = useLocation(); const navigate = useNavigate(); const queryParams = new URLSearchParams(location.search); const query = queryParams.get("q"); const movieId = queryParams.get("id"); useEffect(() => { if (movieId) { const fetchMovieDetails = async () => { const movieResponse = await fetch( `https://api.themoviedb.org/3/movie/${movieId}?api_key=59690efd14e375225c4531fcdced2901` ); const movieData = await movieResponse.json(); setMovieDetails(movieData); const videoResponse = await fetch( `https://api.themoviedb.org/3/movie/${movieId}/videos?api_key=59690efd14e375225c4531fcdced2901` ); const videoData = await videoResponse?.json(); const trailer = videoData?.results?.find( (video) => video.type === "Trailer" ); if (trailer) { setTrailerKey(trailer?.key); } }; fetchMovieDetails(); } }, [movieId]); useEffect(() => { if (query) { const fetchSearchResults = async () => { const response = await fetch( `https://api.themoviedb.org/3/search/movie?api_key=59690efd14e375225c4531fcdced2901&query=${query}` ); const data = await response.json(); setSearchResults(data?.results); }; fetchSearchResults(); } }, [query]); if (movieDetails) { return (
{movieDetails?.title}

{movieDetails?.title}

Release Date: {movieDetails?.release_date}

{movieDetails?.tagline}

{movieDetails?.overview}

Genres:{" "} {movieDetails.genres.map((genre) => genre.name).join(", ")}

Runtime: {movieDetails?.runtime} minutes

Official Website {trailerKey && (

Watch Trailer:

)}
); } if (searchResults?.length > 0) { return (

Search Results for "{query}"

{searchResults.map((movie) => (
navigate(`/search?id=${movie?.id}`)} > {movie?.title}

{movie?.title}

))}
); } return

No results found.

; }; export default SearchPage;