import { useEffect, useState } from 'react' import './App.css' import q from 'qjuul' import { MovieForm, Pagination, MovieTable, MovieModal } from './components' import type { movieObject } from './types/movie' import { fetchMovie } from './api/fetchMovie' import { useLocation } from 'react-router' function App() { 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 [sortAscending, setSortAscending] = useState(true) const location = useLocation() useEffect(() => { const handleFetchMovie = async () => { const response = await fetchMovie(title, page, type, year) if (response.Response == 'True') { setMovies(response.Search) setTotalPages(Number(response.totalResults)) setLoading(false) } } const searchParams = new URLSearchParams(location.search) const title = searchParams.get('title') || '' const page = searchParams.get('page') || '' const type = searchParams.get('type') || '' const year = searchParams.get('y') || '' if (title) { handleFetchMovie() } else { setLoading(false) } }, [location.search]) 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 sortHandler = (sortType: string) => { let sortedMovies: movieObject[] = [] if (sortType === 'title') { sortedMovies = [...movies].sort((m1, m2) => sortAscending ? m1.Title.localeCompare(m2.Title) : m2.Title.localeCompare(m1.Title) ) } if (sortType === 'year') { sortedMovies = [...movies].sort((m1, m2) => sortAscending ? m1.Year.localeCompare(m2.Year) : m2.Year.localeCompare(m1.Year) ) } setSortAscending(!sortAscending) setMovies(sortedMovies) } return ( <> All movies {!loading && movies.length > 0 && ( )} {loading ? ( Loading... ) : movies.length > 0 ? ( ) : ( Find a list of movies by searching above ☝️ )} ) } export default App