🚧 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 q from 'qjuul'
|
||||
import { MovieForm, Pagination, MovieTable, MovieModal } from './components'
|
||||
import type { movieObject } from './types/movie'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import { fetchMovie } from './api/fetchMovie'
|
||||
|
||||
function App() {
|
||||
const API_MOVIE_KEY = 'd92949d8'
|
||||
const [movies, setMovies] = useState<movieObject[]>([])
|
||||
const [loading, setLoading] = useState(true)
|
||||
const [currentPage, setCurrentPage] = useState(1)
|
||||
|
@ -28,13 +28,13 @@ function App() {
|
|||
|
||||
useEffect(() => {
|
||||
handleMovieSubmit()
|
||||
}, [currentPage, title, type, year])
|
||||
}, [title, type, year])
|
||||
|
||||
const handleMovieSubmit = ({
|
||||
const handleMovieSubmit = async ({
|
||||
event,
|
||||
pageNumber,
|
||||
}: {
|
||||
event?: any
|
||||
event?: FormEvent
|
||||
pageNumber?: number
|
||||
} = {}) => {
|
||||
if (event) event.preventDefault()
|
||||
|
@ -50,26 +50,22 @@ function App() {
|
|||
setLoading(false)
|
||||
}
|
||||
|
||||
// navigate(
|
||||
// movieYear && movieType
|
||||
// ? `?title=${movieTitle}&type=${movieType}&y=${movieYear}&page=${currentPage}`
|
||||
// : movieYear
|
||||
// ? `?title=${movieTitle}&y=${movieYear}&page=${currentPage}`
|
||||
// : movieYear && movieType
|
||||
// ? `?title=${movieTitle}&type=${movieType}&page=${currentPage}`
|
||||
// : `?title=${movieTitle}&page=${currentPage}`
|
||||
// )
|
||||
|
||||
fetch(
|
||||
`http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=${title}&type=${type}&y=${year}&page=${pageNum}`
|
||||
navigate(
|
||||
movieYear && movieType
|
||||
? `?title=${movieTitle}&type=${movieType}&y=${movieYear}&page=${pageNum}`
|
||||
: movieYear
|
||||
? `?title=${movieTitle}&y=${movieYear}&page=${pageNum}`
|
||||
: movieYear && movieType
|
||||
? `?title=${movieTitle}&type=${movieType}&page=${pageNum}`
|
||||
: `?title=${movieTitle}&page=${pageNum}`
|
||||
)
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
setMovies(data.Search)
|
||||
setTotalPages(data.totalResults)
|
||||
})
|
||||
.then(() => setLoading(false))
|
||||
.catch((error) => console.log(error))
|
||||
|
||||
const response = await fetchMovie(title, type, year, pageNum)
|
||||
if (response.Response === 'True') {
|
||||
setMovies(response.Search)
|
||||
setTotalPages(response.totalResults)
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
if (!showLeftDots && !showRightDots) {
|
||||
setShowingNumbers(Array.from(Array(totalPages).keys()))
|
||||
setShowingNumbers(Array.from(Array(totalPages).keys()).map((n) => n + 1))
|
||||
}
|
||||
if (!showLeftDots && showRightDots) {
|
||||
setShowingNumbers([1, 2, 3, 4, 5])
|
||||
|
|
Reference in a new issue