🚧 still working on query params
Co-authored-by: Sindre Kjelsrud <kjelsrudsindre@gmail.com>
This commit is contained in:
		
							parent
							
								
									a87cfe4d7b
								
							
						
					
					
						commit
						cc2979bace
					
				
					 3 changed files with 41 additions and 25 deletions
				
			
		
							
								
								
									
										44
									
								
								src/App.tsx
									
										
									
									
									
								
							
							
						
						
									
										44
									
								
								src/App.tsx
									
										
									
									
									
								
							|  | @ -1,12 +1,12 @@ | ||||||
| import { useEffect, useState } from 'react' | import { useEffect, useState, FormEvent } from 'react' | ||||||
| import './App.css' | import './App.css' | ||||||
| import q from 'qjuul' | import q from 'qjuul' | ||||||
| import { MovieForm, Pagination, MovieTable, MovieModal } from './components' | import { MovieForm, Pagination, MovieTable, MovieModal } from './components' | ||||||
| import type { movieObject } from './types/movie' | import type { movieObject } from './types/movie' | ||||||
| import { useLocation, useNavigate } from 'react-router-dom' | import { useLocation, useNavigate } from 'react-router-dom' | ||||||
|  | import { fetchMovie } from './api/fetchMovie' | ||||||
| 
 | 
 | ||||||
| function App() { | function App() { | ||||||
|   const API_MOVIE_KEY = 'd92949d8' |  | ||||||
|   const [movies, setMovies] = useState<movieObject[]>([]) |   const [movies, setMovies] = useState<movieObject[]>([]) | ||||||
|   const [loading, setLoading] = useState(true) |   const [loading, setLoading] = useState(true) | ||||||
|   const [currentPage, setCurrentPage] = useState(1) |   const [currentPage, setCurrentPage] = useState(1) | ||||||
|  | @ -28,13 +28,13 @@ function App() { | ||||||
| 
 | 
 | ||||||
|   useEffect(() => { |   useEffect(() => { | ||||||
|     handleMovieSubmit() |     handleMovieSubmit() | ||||||
|   }, [currentPage, title, type, year]) |   }, [title, type, year]) | ||||||
| 
 | 
 | ||||||
|   const handleMovieSubmit = ({ |   const handleMovieSubmit = async ({ | ||||||
|     event, |     event, | ||||||
|     pageNumber, |     pageNumber, | ||||||
|   }: { |   }: { | ||||||
|     event?: any |     event?: FormEvent | ||||||
|     pageNumber?: number |     pageNumber?: number | ||||||
|   } = {}) => { |   } = {}) => { | ||||||
|     if (event) event.preventDefault() |     if (event) event.preventDefault() | ||||||
|  | @ -50,26 +50,22 @@ function App() { | ||||||
|       setLoading(false) |       setLoading(false) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // navigate(
 |     navigate( | ||||||
|     //   movieYear && movieType
 |       movieYear && movieType | ||||||
|     //     ? `?title=${movieTitle}&type=${movieType}&y=${movieYear}&page=${currentPage}`
 |         ? `?title=${movieTitle}&type=${movieType}&y=${movieYear}&page=${pageNum}` | ||||||
|     //     : movieYear
 |         : movieYear | ||||||
|     //     ? `?title=${movieTitle}&y=${movieYear}&page=${currentPage}`
 |         ? `?title=${movieTitle}&y=${movieYear}&page=${pageNum}` | ||||||
|     //     : movieYear && movieType
 |         : movieYear && movieType | ||||||
|     //     ? `?title=${movieTitle}&type=${movieType}&page=${currentPage}`
 |         ? `?title=${movieTitle}&type=${movieType}&page=${pageNum}` | ||||||
|     //     : `?title=${movieTitle}&page=${currentPage}`
 |         : `?title=${movieTitle}&page=${pageNum}` | ||||||
|     // )
 |  | ||||||
| 
 |  | ||||||
|     fetch( |  | ||||||
|       `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=${title}&type=${type}&y=${year}&page=${pageNum}` |  | ||||||
|     ) |     ) | ||||||
|       .then((response) => response.json()) | 
 | ||||||
|       .then((data) => { |     const response = await fetchMovie(title, type, year, pageNum) | ||||||
|         setMovies(data.Search) |     if (response.Response === 'True') { | ||||||
|         setTotalPages(data.totalResults) |       setMovies(response.Search) | ||||||
|       }) |       setTotalPages(response.totalResults) | ||||||
|       .then(() => setLoading(false)) |       setLoading(false) | ||||||
|       .catch((error) => console.log(error)) |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   const calculatePages = (totalResults: number): number => { |   const calculatePages = (totalResults: number): number => { | ||||||
|  |  | ||||||
							
								
								
									
										20
									
								
								src/api/fetchMovie.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/api/fetchMovie.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | const API_MOVIE_KEY = import.meta.env.VITE_MOVIE_API_KEY | ||||||
|  | 
 | ||||||
|  | export const fetchMovie = async ( | ||||||
|  |   title: string, | ||||||
|  |   type: string, | ||||||
|  |   year: string, | ||||||
|  |   pageNum: number | ||||||
|  | ) => { | ||||||
|  |   const response = await fetch( | ||||||
|  |     `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=${title}&type=${type}&y=${year}&page=${pageNum}` | ||||||
|  |   ) | ||||||
|  |     .then((response) => response.json()) | ||||||
|  |     .then((data) => { | ||||||
|  |       return data | ||||||
|  |     }) | ||||||
|  |     .catch((error) => { | ||||||
|  |       console.error('Error:', error) | ||||||
|  |     }) | ||||||
|  |   return response | ||||||
|  | } | ||||||
|  | @ -23,7 +23,7 @@ const Pagination: React.FC<PaginationProps> = ({ | ||||||
|       setShowRightDots(currentPage < totalPages - 3 ? true : false) |       setShowRightDots(currentPage < totalPages - 3 ? true : false) | ||||||
|     } |     } | ||||||
|     if (!showLeftDots && !showRightDots) { |     if (!showLeftDots && !showRightDots) { | ||||||
|       setShowingNumbers(Array.from(Array(totalPages).keys())) |       setShowingNumbers(Array.from(Array(totalPages).keys()).map((n) => n + 1)) | ||||||
|     } |     } | ||||||
|     if (!showLeftDots && showRightDots) { |     if (!showLeftDots && showRightDots) { | ||||||
|       setShowingNumbers([1, 2, 3, 4, 5]) |       setShowingNumbers([1, 2, 3, 4, 5]) | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 haraldnilsen
						haraldnilsen