formatted code

This commit is contained in:
andres alcocer
2022-02-03 19:06:02 -05:00
parent da9414a7c9
commit 4b72e0cfc1
5 changed files with 115 additions and 147 deletions

View File

@@ -1,10 +1,10 @@
import React from 'react'; import React from 'react'
import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom'; import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom'
import Footer from './components/Footer'; import Footer from './components/Footer'
import Navbar from './components/Navbar'; import Navbar from './components/Navbar'
import Home from './pages/Home'; import Home from './pages/Home'
import NotFound from './pages/NotFound'; import NotFound from './pages/NotFound'
import Search from './pages/Search'; import Search from './pages/Search'
const AppRouter = () => ( const AppRouter = () => (
<BrowserRouter> <BrowserRouter>
@@ -17,6 +17,6 @@ const AppRouter = () => (
</Switch> </Switch>
<Footer /> <Footer />
</BrowserRouter> </BrowserRouter>
); )
export default AppRouter; export default AppRouter

View File

@@ -1,23 +1,13 @@
import React from 'react' import React from 'react'
const NotFound = () => { const NotFound = () => {
<<<<<<< HEAD
return (
<div>
<h1>NOT FOUND</h1>
</div>
)
}
export default NotFound
=======
return ( return (
<div className='not-found__message'> <div className='not-found__message'>
{/* TODO: add css to match netflix not found page */} {/* TODO: add css to match netflix not found page */}
<h1>LOST YOUR WAY?</h1> <h1>LOST YOUR WAY?</h1>
<p> <p>
Sorry, we can't find that page. You'll find lots to explore on Sorry, we can't find that page. You'll find lots to explore on the home
the home page. page.
</p> </p>
<button>Netflix Home</button> <button>Netflix Home</button>
<span> <span>
@@ -27,8 +17,7 @@ export default NotFound
FROM <strong>LOST IN SPACE</strong> FROM <strong>LOST IN SPACE</strong>
</span> </span>
</div> </div>
); )
}; }
export default NotFound; export default NotFound
>>>>>>> e91ba1936642090199bf3c2946edc8cc861f864f

View File

@@ -1,70 +1,58 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react'
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux'
import { useLocation } from 'react-router-dom'; import { useLocation } from 'react-router-dom'
import ModalMovieDetails from '../components/ModalMovieDetails'; import ModalMovieDetails from '../components/ModalMovieDetails'
import Modal from '../components/UI/Modal'; import Modal from '../components/UI/Modal'
import { useDebounce } from '../hooks/useDebounce'; import { useDebounce } from '../hooks/useDebounce'
import * as movieActions from '../store/actions'; import * as movieActions from '../store/actions'
// A custom hook that builds on useLocation to parse // A custom hook that builds on useLocation to parse
// the query string for you. // the query string for you.
const useQuery = () => { const useQuery = () => {
return new URLSearchParams(useLocation().search); return new URLSearchParams(useLocation().search)
}; }
const Search = () => { const Search = () => {
let query = useQuery(); let query = useQuery()
const debouncedSearchTerm = useDebounce(query.get('q'), 500); const debouncedSearchTerm = useDebounce(query.get('q'), 500)
const [isToggleModal, setIsToggleModal] = useState(false); const [isToggleModal, setIsToggleModal] = useState(false)
const { searchResults, isLoading } = useSelector( const { searchResults, isLoading } = useSelector((state) => state.searchMovie)
(state) => state.searchMovie const { movieDetails } = useSelector((state) => state.movieDetails)
); const dispatch = useDispatch()
const { movieDetails } = useSelector((state) => state.movieDetails);
const dispatch = useDispatch();
useEffect(() => { useEffect(() => {
if (debouncedSearchTerm) { if (debouncedSearchTerm) {
dispatch(movieActions.fetchSearchMovie(debouncedSearchTerm)); dispatch(movieActions.fetchSearchMovie(debouncedSearchTerm))
} }
}, [debouncedSearchTerm]); }, [debouncedSearchTerm])
const onCloseModalHandler = () => { const onCloseModalHandler = () => {
setIsToggleModal(false); setIsToggleModal(false)
}; }
const onSelectMovieHandler = (movie) => { const onSelectMovieHandler = (movie) => {
dispatch(movieActions.fetchMovieDetails(movie.media_type, movie.id)); dispatch(movieActions.fetchMovieDetails(movie.media_type, movie.id))
setIsToggleModal(true); setIsToggleModal(true)
}; }
const renderSearchResults = () => { const renderSearchResults = () => {
return searchResults.length > 0 ? ( return searchResults.length > 0 ? (
<> <>
<div className='search-container'> <div className='search-container'>
{searchResults.map((movie) => { {searchResults.map((movie) => {
if ( if (movie.backdrop_path !== null && movie.media_type !== 'person') {
movie.backdrop_path !== null &&
movie.media_type !== 'person'
) {
const movieImageUrl = const movieImageUrl =
'https://image.tmdb.org/t/p/w500' + 'https://image.tmdb.org/t/p/w500' + movie.backdrop_path
movie.backdrop_path;
return ( return (
<div className='movie'> <div className='movie'>
<div <div
onClick={() => onClick={() => onSelectMovieHandler(movie)}
onSelectMovieHandler(movie)
}
className='movie__column-poster' className='movie__column-poster'
> >
<img <img src={movieImageUrl} alt='' className='movie__poster' />
src={movieImageUrl}
alt=''
className='movie__poster'
/>
</div> </div>
</div> </div>
); )
} }
})} })}
</div> </div>
@@ -82,27 +70,21 @@ const Search = () => {
<div className='no-results'> <div className='no-results'>
<div className='no-results__text'> <div className='no-results__text'>
<p> <p>
Your search for "{debouncedSearchTerm}" did not have any Your search for "{debouncedSearchTerm}" did not have any matches.
matches.
</p> </p>
<p>Suggestions:</p> <p>Suggestions:</p>
<ul> <ul>
<li>Try different keywords</li> <li>Try different keywords</li>
<li>Looking for a movie or TV show?</li> <li>Looking for a movie or TV show?</li>
<li> <li>Try using a movie, TV show title, an actor or director</li>
Try using a movie, TV show title, an actor or <li>Try a genre, like comedy, romance, sports, or drama</li>
director
</li>
<li>
Try a genre, like comedy, romance, sports, or drama
</li>
</ul> </ul>
</div> </div>
</div> </div>
); )
}; }
return !isLoading ? renderSearchResults() : <h1>Loading...</h1>; return !isLoading ? renderSearchResults() : <h1>Loading...</h1>
}; }
export default Search; export default Search

View File

@@ -8,10 +8,7 @@
@import 'components/search'; @import 'components/search';
@import 'components/movie'; @import 'components/movie';
@import 'components/movieShowcase'; @import 'components/movieShowcase';
<<<<<<< HEAD
=======
@import 'components/notfound'; @import 'components/notfound';
>>>>>>> e91ba1936642090199bf3c2946edc8cc861f864f
@import 'layout/footer'; @import 'layout/footer';
@import 'layout/header'; @import 'layout/header';