diff --git a/src/App.tsx b/src/App.tsx
index c57d9b1..61e6cdc 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -17,23 +17,24 @@ function App() {
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') || ''
- const handleFetchMovie = async () => {
- const response = await fetchMovie(title, page, type, year)
- if (response.Response == 'true') {
- setMovies(response.Search)
- setTotalPages(Number(response.totalResults))
- setLoading(false)
- }
- }
-
if (title) {
handleFetchMovie()
+ } else {
+ setLoading(false)
}
}, [])
@@ -78,16 +79,9 @@ function App() {
All movies
-
+
- {!loading && totalPages && (
+ {!loading && movies.length > 0 && (
{loading ? (
Loading...
- ) : movies ? (
+ ) : movies.length > 0 ? (
) : (
Find a list of movies by searching above ☝️
diff --git a/src/api/fetchMovie.ts b/src/api/fetchMovie.ts
index aaa92ff..83ff466 100644
--- a/src/api/fetchMovie.ts
+++ b/src/api/fetchMovie.ts
@@ -1,6 +1,6 @@
import { movieResponse } from '../types/movie'
-const API_MOVIE_KEY = 'd92949d8'
+const API_MOVIE_KEY = import.meta.env.VITE_API_MOVIE_KEY
export const fetchMovie = async (
title: string,
@@ -8,7 +8,7 @@ export const fetchMovie = async (
type?: string,
year?: string
): Promise => {
- let query = `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}s=${title}&page=${page}`
+ let query = `http://www.omdbapi.com/?apikey=${API_MOVIE_KEY}&s=${title}&page=${page}`
if (type) query += `&type=${type}`
if (year) query += `&year=${year}`
diff --git a/src/components/MovieForm/index.tsx b/src/components/MovieForm/index.tsx
index eaa65ba..1235ff6 100644
--- a/src/components/MovieForm/index.tsx
+++ b/src/components/MovieForm/index.tsx
@@ -1,24 +1,17 @@
-import type { movieObject } from '../../types/movie'
-import Modal from 'react-modal'
+import { useState } from 'react'
import q from 'qjuul'
+import { useNavigateToPage } from '../../util/navigate'
-interface MovieFormProps {
- handleMovieSubmit: (event: any) => void
- setMovieTitle: (title: string) => void
- setMovieYear: (year: string) => void
- setMovieType: (type: string) => void
-}
+const MovieForm: React.FC = () => {
+ const [movieTitle, setMovieTitle] = useState('')
+ const [movieYear, setMovieYear] = useState('')
+ const [movieType, setMovieType] = useState('')
+ const navigateToPage = useNavigateToPage()
-const MovieForm: React.FC = ({
- handleMovieSubmit,
- setMovieTitle,
- setMovieType,
- setMovieYear,
-}) => {
return (
navigateToPage(movieTitle, movieYear, movieType)}
>
Choose a movie title:
{
+ const navigate = useNavigate()
-export const navigateToPage = (
- title?: string,
- page: string = '1',
- type?: string,
- year?: string
-) => {
- if (!title) navigate('')
- else {
- let query = `?title=${title}&page=${page}`
+ return (title?: string, page: string = '1', type?: string, year?: string) => {
+ if (!title) navigate('')
+ else {
+ let query = `?title=${title}&page=${page}`
- if (type) query += `&type=${type}`
- if (year) query += `&year=${year}`
+ if (type) query += `&type=${type}`
+ if (year) query += `&year=${year}`
- navigate(query)
+ navigate(query)
+ }
}
}