import { useEffect, useState } from 'react' import './App.css' import q from 'qjuul' import { MovieTableRow, MovieForm, Pagination } 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 {!loading && totalPages && ( )} {!loading && movies ? ( Poster Title Year {movies.map((movie: any) => ( handleModalOpen(movie)} /> ))} ) : ( Loading... )} ) } export default App