import { useEffect, useState } from 'react' import './App.css' import q from 'qjuul' import Pagination from './components/Pagination' import { MovieTableRow } from './components' import type { movieObject } from './types/movie' import Modal from 'react-modal' function App() { const API_MOVIE_KEY = 'd92949d8' const [movies, setMovies] = useState([]) const [loading, setLoading] = useState(true) const [currentPage, setCurrentPage] = useState(1) const [totalPages, setTotalPages] = useState(0) const [modalOpen, setModalOpen] = useState(false) const [modalMovie, setModalMovie] = useState(null) const [movieType, setMovieType] = useState('') const [movieYear, setMovieYear] = useState('') const [movieTitle, setMovieTitle] = useState('') console.log('App mounted') useEffect(() => { fetch( `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=spider-man&page=${currentPage}` ) .then((response) => response.json()) .then((data) => { setMovies(data.Search) console.log(data) setTotalPages(data.totalResults) }) .then(() => setLoading(false)) .catch((error) => console.log(error)) }, [currentPage]) const calculatePages = (totalResults: number): number => { return Math.round(totalResults / 10) } const handlePageChange = (pageNumber: number) => { setCurrentPage(pageNumber) } const handleModalOpen = (movie: movieObject) => { setModalOpen(true) setModalMovie(movie) } const handleMovieSubmit = (event: any) => { event.preventDefault() fetch( `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=${movieTitle}&type=${movieType}&y=${movieYear}` ) .then((response) => response.json()) .then((data) => { setMovies(data.Search) console.log(data) setTotalPages(data.totalResults) }) .then(() => setLoading(false)) .catch((error) => console.log(error)) } return ( <> setModalOpen(false)} > {modalMovie?.Title} Year: {modalMovie?.Year} Type: {modalMovie?.Type} {`https://www.imdb.com/title/${modalMovie?.imdbID}`} All movies Choose a movie title: setMovieTitle(e.target.value)} className="border border-gray-300 rounded-md p-2 focus:outline-none focus:ring-2 focus:ring-blue-600 focus:border-transparent" /> Choose year movie was made: (OPTIONAL) setMovieYear(e.target.value)} > {/* Option for year 1923-2023 */} All years {Array.from(Array(100), (e, i) => { const year = 2023 - i return ( {year} ) })} Choose type: (OPTIONAL) setMovieType(e.target.value)} > All types Movies Series Episodes Find movies {!loading && totalPages && ( )} {!loading && movies ? ( Poster Title Year {movies.map((movie: any) => ( handleModalOpen(movie)} /> ))} ) : ( Loading... )} ) } export default App