From 07ab8414c5022fb02031ad7ea1c978ef559338bf Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Wed, 4 Nov 2020 21:14:26 -0300 Subject: [PATCH 01/12] WJ-102 - New: Convert Movie to EntityImage; --- .../dtos/ContainerProps.ts | 0 .../{Movie => EntityImage}/dtos/index.ts | 0 .../{Movie => EntityImage}/index.spec.tsx | 2 +- .../{Movie => EntityImage}/index.stories.tsx | 10 ++--- .../{Movie => EntityImage}/index.tsx | 37 ++++++++----------- .../{Movie => EntityImage}/styles.ts | 0 src/components/index.ts | 2 +- src/containers/Filmography/dtos/index.ts | 2 +- src/containers/Filmography/index.tsx | 26 +++++-------- src/containers/MovieList/dtos/index.ts | 2 +- src/containers/MovieList/index.tsx | 2 +- src/containers/Result/index.tsx | 16 +++----- src/domains/Favorites/enums/index.ts | 1 - src/domains/Favorites/helpers/getByType.ts | 12 +++--- src/domains/Movie/api/Details/index.ts | 6 +-- src/domains/Movie/api/NowPlaying/index.ts | 4 +- src/domains/Movie/api/Popular/index.ts | 4 +- .../Movie/api/Recommendations/index.ts | 4 +- src/domains/Search/api/Multi/index.ts | 7 +++- src/domains/Tv/api/Details/index.ts | 6 +-- src/domains/Tv/api/Popular/index.ts | 4 +- src/pages/Home/index.tsx | 6 ++- src/pages/Movie/index.tsx | 4 +- src/pages/Tv/index.tsx | 22 +++++------ .../utils/enums/EntityType.ts} | 4 +- src/shared/utils/enums/index.ts | 2 + src/shared/utils/getEntityRoute.ts | 18 +++++++++ src/shared/utils/getMediaTypeId.ts | 8 ++-- src/shared/utils/index.ts | 1 + 29 files changed, 110 insertions(+), 102 deletions(-) rename src/components/{Movie => EntityImage}/dtos/ContainerProps.ts (100%) rename src/components/{Movie => EntityImage}/dtos/index.ts (100%) rename src/components/{Movie => EntityImage}/index.spec.tsx (99%) rename src/components/{Movie => EntityImage}/index.stories.tsx (72%) rename src/components/{Movie => EntityImage}/index.tsx (57%) rename src/components/{Movie => EntityImage}/styles.ts (100%) delete mode 100644 src/domains/Favorites/enums/index.ts rename src/{domains/Favorites/enums/Type.ts => shared/utils/enums/EntityType.ts} (69%) create mode 100644 src/shared/utils/enums/index.ts create mode 100644 src/shared/utils/getEntityRoute.ts diff --git a/src/components/Movie/dtos/ContainerProps.ts b/src/components/EntityImage/dtos/ContainerProps.ts similarity index 100% rename from src/components/Movie/dtos/ContainerProps.ts rename to src/components/EntityImage/dtos/ContainerProps.ts diff --git a/src/components/Movie/dtos/index.ts b/src/components/EntityImage/dtos/index.ts similarity index 100% rename from src/components/Movie/dtos/index.ts rename to src/components/EntityImage/dtos/index.ts diff --git a/src/components/Movie/index.spec.tsx b/src/components/EntityImage/index.spec.tsx similarity index 99% rename from src/components/Movie/index.spec.tsx rename to src/components/EntityImage/index.spec.tsx index c20cf98..0eec945 100644 --- a/src/components/Movie/index.spec.tsx +++ b/src/components/EntityImage/index.spec.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { render, fireEvent, waitFor, act } from '@testing-library/react'; import { Color } from 'shared/enums'; -import Movie from 'components/Movie'; +import Movie from 'components/EntityImage'; const mockedUpdateFavorite = jest.fn(); const mockedHistoryPush = jest.fn(); diff --git a/src/components/Movie/index.stories.tsx b/src/components/EntityImage/index.stories.tsx similarity index 72% rename from src/components/Movie/index.stories.tsx rename to src/components/EntityImage/index.stories.tsx index 97f6b27..effd101 100644 --- a/src/components/Movie/index.stories.tsx +++ b/src/components/EntityImage/index.stories.tsx @@ -1,13 +1,13 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'components/Movie/dtos'; -import Movie from 'components/Movie'; +import Props from 'components/EntityImage/dtos'; +import EntityImage from 'components/EntityImage'; // Config and Controls export default { - title: 'Components/Movie', - component: Movie, + title: 'Components/EntityImage', + component: EntityImage, argTypes: { favorite: { control: 'boolean' }, poster: { control: 'text' }, @@ -23,7 +23,7 @@ export default { // Component const Template: Story = args => { - return ; + return ; }; // Stories diff --git a/src/components/Movie/index.tsx b/src/components/EntityImage/index.tsx similarity index 57% rename from src/components/Movie/index.tsx rename to src/components/EntityImage/index.tsx index 79b0f0a..c27abf7 100644 --- a/src/components/Movie/index.tsx +++ b/src/components/EntityImage/index.tsx @@ -2,20 +2,19 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useHistory } from 'react-router-dom'; import { BsHeartFill } from 'react-icons/bs'; -import { Type } from 'domains/Favorites/enums'; +import { getEntityRoute } from 'shared/utils'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import Route from 'routes/enums'; import { Color } from 'shared/enums'; import { Container, IconButton, Poster } from './styles'; import Props from './dtos'; -const Movie: React.FC = ({ size, ...movie }) => { +const EntityImage: React.FC = ({ size, ...entity }) => { const history = useHistory(); const { user } = useAuth(); const { favoriteList = [], UpdateFavorite } = useFavorite(); - const [isFavorite, setIsFavorite] = useState(movie.favorite); + const [isFavorite, setIsFavorite] = useState(entity.favorite); const handleFavorite = useCallback(async () => { try { @@ -24,36 +23,32 @@ const Movie: React.FC = ({ size, ...movie }) => { return; } - await UpdateFavorite(movie.id, movie.mediaType); + await UpdateFavorite(entity.id, entity.mediaType); } catch (error) { console.log('handleFavorite -> error', error); } - }, [user, UpdateFavorite, movie.id, movie.mediaType]); + }, [user, UpdateFavorite, entity.id, entity.mediaType]); const handleRedirect = useCallback(() => { - if (movie.mediaType === Type.TV) { - history.push(`${Route.TV}/${movie.id}`); + const entityRoute = getEntityRoute(entity.mediaType); + history.push(`${entityRoute}/${entity.id}`); + }, [history, entity.id, entity.mediaType]); - return; - } - - history.push(`${Route.MOVIE}/${movie.id}`); - }, [history, movie.id, movie.mediaType]); - - // Check if movie is in favorite list and change status + // Check if entity is in favorite list and change status useEffect(() => { - // console.log('movie', movie); + // console.log('entity', entity); if (user) { const response = favoriteList.find( favorite => - favorite.entityId === movie.id && favorite.typeId === movie.mediaType, + favorite.entityId === entity.id && + favorite.typeId === entity.mediaType, ); setIsFavorite(!!response); } - }, [user, favoriteList, movie.id, movie.mediaType]); + }, [user, favoriteList, entity.id, entity.mediaType]); - if (!movie.poster && !movie.backdrop) { + if (!entity.poster && !entity.backdrop) { return null; } @@ -62,9 +57,9 @@ const Movie: React.FC = ({ size, ...movie }) => { - + ); }; -export default Movie; +export default EntityImage; diff --git a/src/components/Movie/styles.ts b/src/components/EntityImage/styles.ts similarity index 100% rename from src/components/Movie/styles.ts rename to src/components/EntityImage/styles.ts diff --git a/src/components/index.ts b/src/components/index.ts index 32841b2..438e722 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -3,7 +3,7 @@ export { ColumnLayout, RowLayout, Wrapper, Container } from 'components/Layout'; export { default as Button } from './Button'; export { default as EnvironmentLabel } from './EnvironmentLabel'; export { default as Input } from './Input'; -export { default as Movie } from './Movie'; +export { default as EntityImage } from './EntityImage'; export { default as MovieHighlight } from './MovieHighlight'; export { default as Person } from './Person'; export { default as Profile } from './Profile'; diff --git a/src/containers/Filmography/dtos/index.ts b/src/containers/Filmography/dtos/index.ts index bfc1e5d..bd5b9f5 100644 --- a/src/containers/Filmography/dtos/index.ts +++ b/src/containers/Filmography/dtos/index.ts @@ -1,5 +1,5 @@ import DefaultProps from 'shared/dtos'; -import MovieProps from 'components/Movie/dtos'; +import MovieProps from 'components/EntityImage/dtos'; import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; diff --git a/src/containers/Filmography/index.tsx b/src/containers/Filmography/index.tsx index c12d352..d714517 100644 --- a/src/containers/Filmography/index.tsx +++ b/src/containers/Filmography/index.tsx @@ -1,8 +1,7 @@ import React, { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; -import Route from 'routes/enums'; -import { Type } from 'domains/Favorites/enums'; +import { getEntityRoute } from 'shared/utils'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { Wrapper } from 'components/Layout'; @@ -33,14 +32,9 @@ const Filmography: React.FC = ({ const history = useHistory(); const handleRedirect = useCallback( - (movie: any) => { - if (movie.mediaType === Type.TV) { - history.push(`${Route.TV}/${movie.id}`); - - return; - } - - history.push(`${Route.MOVIE}/${movie.id}`); + (entity: any) => { + const entityRoute = getEntityRoute(entity.mediaType); + history.push(`${entityRoute}/${entity.id}`); }, [history], ); @@ -62,15 +56,15 @@ const Filmography: React.FC = ({ {!isLoading && data.length > 0 && ( - {data.map(movie => ( + {data.map(entity => ( handleRedirect(movie)} + key={entity.id} + onClick={() => handleRedirect(entity)} > - {movie.year} - - {movie.title || movie.name} + {entity.year} - + {entity.title || entity.name} - {movie.character && ` como ${movie.character}`} + {entity.character && ` como ${entity.character}`} ))} diff --git a/src/containers/MovieList/dtos/index.ts b/src/containers/MovieList/dtos/index.ts index bfc1e5d..bd5b9f5 100644 --- a/src/containers/MovieList/dtos/index.ts +++ b/src/containers/MovieList/dtos/index.ts @@ -1,5 +1,5 @@ import DefaultProps from 'shared/dtos'; -import MovieProps from 'components/Movie/dtos'; +import MovieProps from 'components/EntityImage/dtos'; import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; diff --git a/src/containers/MovieList/index.tsx b/src/containers/MovieList/index.tsx index 97e827a..c78b6f9 100644 --- a/src/containers/MovieList/index.tsx +++ b/src/containers/MovieList/index.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { Wrapper } from 'components/Layout'; -import Movie from 'components/Movie'; +import Movie from 'components/EntityImage'; import { Container, Title, diff --git a/src/containers/Result/index.tsx b/src/containers/Result/index.tsx index e7b61f1..a89353d 100644 --- a/src/containers/Result/index.tsx +++ b/src/containers/Result/index.tsx @@ -1,11 +1,10 @@ import React, { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; -import Route from 'routes/enums'; +import { getEntityRoute } from 'shared/utils'; import Props from 'containers/Result/dtos'; -import { Type } from 'domains/Favorites/enums'; -import { Movie } from 'components'; +import { EntityImage } from 'components'; import { Container, ImageContainer, @@ -19,19 +18,14 @@ const Result: React.FC = ({ data }) => { const history = useHistory(); const handleRedirect = useCallback(() => { - if (data.mediaType === Type.TV) { - history.push(`${Route.TV}/${data.id}`); - - return; - } - - history.push(`${Route.MOVIE}/${data.id}`); + const entityRoute = getEntityRoute(data.mediaType); + history.push(`${entityRoute}/${data.id}`); }, [history, data.id, data.mediaType]); return ( - + {data.title} diff --git a/src/domains/Favorites/enums/index.ts b/src/domains/Favorites/enums/index.ts deleted file mode 100644 index ef5fd40..0000000 --- a/src/domains/Favorites/enums/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Type } from './Type'; diff --git a/src/domains/Favorites/helpers/getByType.ts b/src/domains/Favorites/helpers/getByType.ts index 054bf23..d03587f 100644 --- a/src/domains/Favorites/helpers/getByType.ts +++ b/src/domains/Favorites/helpers/getByType.ts @@ -1,18 +1,18 @@ -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import { Details as MovieDetails } from 'domains/Movie/api'; import { Details as TvDetails } from 'domains/Tv/api'; import { Details as PersonDetails } from 'domains/Person/api'; const getByType = async (favorite: any): Promise => { - if (favorite.type_id === Type.MOVIE) { - return MovieDetails(favorite.entity_id); + if (favorite.type_id === EntityType.TV) { + return TvDetails(favorite.entity_id); } - if (favorite.type_id === Type.TV) { - return TvDetails(favorite.entity_id); + if (favorite.type_id === EntityType.MOVIE) { + return MovieDetails(favorite.entity_id); } - if (favorite.type_id === Type.PERSON) { + if (favorite.type_id === EntityType.PERSON) { return PersonDetails(favorite.entity_id); } }; diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index 224e1f2..ce5ead3 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Movie/api/Details/Params'; import RawResponse from 'domains/Movie/api/Details/RawResponse'; import Response from 'domains/Movie/api/Details/Response'; @@ -52,7 +52,7 @@ const parseResponse = (movie: RawResponse): Response => { poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), favorite: false, - mediaType: Type.MOVIE, + mediaType: EntityType.MOVIE, } as Response; const recommendations = movie.recommendations?.results.map( @@ -62,7 +62,7 @@ const parseResponse = (movie: RawResponse): Response => { id: recommendation.id, title: recommendation.title, favorite: false, - mediaType: Type.MOVIE, + mediaType: EntityType.MOVIE, }), ) as Recommendations[]; diff --git a/src/domains/Movie/api/NowPlaying/index.ts b/src/domains/Movie/api/NowPlaying/index.ts index eff632a..beaeaac 100644 --- a/src/domains/Movie/api/NowPlaying/index.ts +++ b/src/domains/Movie/api/NowPlaying/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Movie/api/NowPlaying/Params'; import RawResponse from 'domains/Movie/api/NowPlaying/RawResponse'; import Response from 'domains/Movie/api/NowPlaying/Response'; @@ -41,7 +41,7 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), favorite: false, - mediaType: Type.MOVIE, + mediaType: EntityType.MOVIE, } as Response; response = [...response, parsedMovie]; diff --git a/src/domains/Movie/api/Popular/index.ts b/src/domains/Movie/api/Popular/index.ts index b771e4a..6754178 100644 --- a/src/domains/Movie/api/Popular/index.ts +++ b/src/domains/Movie/api/Popular/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Movie/api/Popular/Params'; import RawResponse from 'domains/Movie/api/Popular/RawResponse'; import Response from 'domains/Movie/api/Popular/Response'; @@ -39,7 +39,7 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), favorite: false, - mediaType: Type.MOVIE, + mediaType: EntityType.MOVIE, } as Response; response = [...response, parsedMovie]; diff --git a/src/domains/Movie/api/Recommendations/index.ts b/src/domains/Movie/api/Recommendations/index.ts index d517c61..08b881a 100644 --- a/src/domains/Movie/api/Recommendations/index.ts +++ b/src/domains/Movie/api/Recommendations/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import RawResponse from 'domains/Movie/api/Recommendations/RawResponse'; import Response from 'domains/Movie/api/Recommendations/Response'; @@ -36,7 +36,7 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), favorite: false, - mediaType: Type.MOVIE, + mediaType: EntityType.MOVIE, } as Response; response = [...response, parsedMovie]; diff --git a/src/domains/Search/api/Multi/index.ts b/src/domains/Search/api/Multi/index.ts index 7c63e81..047a501 100644 --- a/src/domains/Search/api/Multi/index.ts +++ b/src/domains/Search/api/Multi/index.ts @@ -1,6 +1,6 @@ import tmdb from 'services/api/tmdb'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Search/api/Multi/Params'; import RawResponse from 'domains/Search/api/Multi/RawResponse'; import Response from 'domains/Search/api/Multi/Response'; @@ -51,7 +51,10 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { }); response = [...response] - .filter(item => item.mediaType === Type.MOVIE || item.mediaType === Type.TV) + .filter( + item => + item.mediaType === EntityType.MOVIE || item.mediaType === EntityType.TV, + ) .sort((a, b) => (a.popularity < b.popularity ? 1 : -1)); return response; diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index 728a9e8..c98df6f 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Tv/api/Details/Params'; import RawResponse from 'domains/Tv/api/Details/RawResponse'; import Response from 'domains/Tv/api/Details/Response'; @@ -50,7 +50,7 @@ const parseResponse = (tv: RawResponse): Response => { poster: formatTmdbImage({ value: tv.poster_path }), backdrop: formatTmdbImage({ value: tv.backdrop_path }), favorite: false, - mediaType: Type.TV, + mediaType: EntityType.TV, } as Response; const recommendations = tv.recommendations?.results.map(recommendation => ({ @@ -59,7 +59,7 @@ const parseResponse = (tv: RawResponse): Response => { id: recommendation.id, title: recommendation.title, favorite: false, - mediaType: Type.TV, + mediaType: EntityType.TV, })) as Recommendations[]; const cast = tv.credits?.cast.slice(0, 15).map(person => ({ diff --git a/src/domains/Tv/api/Popular/index.ts b/src/domains/Tv/api/Popular/index.ts index ad61887..f6f4ca8 100644 --- a/src/domains/Tv/api/Popular/index.ts +++ b/src/domains/Tv/api/Popular/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; import Params from 'domains/Tv/api/Popular/Params'; import RawResponse from 'domains/Tv/api/Popular/RawResponse'; import Response from 'domains/Tv/api/Popular/Response'; @@ -38,7 +38,7 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { poster: formatTmdbImage({ value: tv.poster_path }), backdrop: formatTmdbImage({ value: tv.backdrop_path }), favorite: false, - mediaType: Type.TV, + mediaType: EntityType.TV, } as Response; response = [...response, parsedMovie]; diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 79f59b4..0bd3519 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -1,12 +1,12 @@ import React, { useCallback, useEffect, useState } from 'react'; +import { EntityType } from 'shared/utils/enums'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { NowPlaying, Popular } from 'domains/Movie/api'; import { Popular as TvPopular } from 'domains/Tv/api'; import MovieResponse from 'domains/Movie/api/Popular/Response'; import TvPopularResponse from 'domains/Tv/api/Popular/Response'; -import { Type } from 'domains/Favorites/enums'; import { ColumnLayout } from 'components'; import { Footer, Header, Highlights, MovieList } from 'containers'; @@ -86,7 +86,9 @@ const Home: React.FC = () => { item.typeId === Type.MOVIE || item.typeId === Type.TV, + item => + item.typeId === EntityType.MOVIE || + item.typeId === EntityType.TV, )} isLoading={isFavoriteLoading} message="Você ainda não possui favoritos." diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index 4bcab58..3273fee 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -8,7 +8,7 @@ import { Details } from 'domains/Movie/api'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import { ColumnLayout, Container, Movie as Poster } from 'components'; +import { ColumnLayout, Container, EntityImage } from 'components'; import { Header, PersonList, MovieList, Footer } from 'containers'; import { ContentContainer, @@ -79,7 +79,7 @@ const Movie: React.FC = () => { - + diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index b763715..2bf8726 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -8,7 +8,7 @@ import { Details } from 'domains/Tv/api'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import { ColumnLayout, Container, Movie as Poster } from 'components'; +import { ColumnLayout, Container, EntityImage } from 'components'; import { Header, PersonList, MovieList, Footer } from 'containers'; import { ContentContainer, @@ -30,7 +30,7 @@ import { const Tv: React.FC = () => { const { id } = useParams(); - const [movie, setMovie] = useState({} as MovieDetails); + const [tv, setMovie] = useState({} as MovieDetails); const [isLoading, setIsLoading] = useState(false); const { user } = useAuth(); @@ -71,33 +71,33 @@ const Tv: React.FC = () => {
- backdrop + backdrop - + - {movie.title} + {tv.title} - {movie.releaseDate} | {movie.genresNames} | {movie.runtime} + {tv.releaseDate} | {tv.genresNames} | {tv.runtime} Sinopse - {movie.overview} + {tv.overview} Votação do público:{' '} - {movie.voteAverage} + {tv.voteAverage} Diretor: - {movie.directorName} + {tv.directorName} @@ -105,14 +105,14 @@ const Tv: React.FC = () => { diff --git a/src/domains/Favorites/enums/Type.ts b/src/shared/utils/enums/EntityType.ts similarity index 69% rename from src/domains/Favorites/enums/Type.ts rename to src/shared/utils/enums/EntityType.ts index 896d904..1069803 100644 --- a/src/domains/Favorites/enums/Type.ts +++ b/src/shared/utils/enums/EntityType.ts @@ -1,4 +1,4 @@ -enum Type { +enum EntityType { MOVIE = 1, TV = 2, PERSON = 3, @@ -8,4 +8,4 @@ enum Type { KEYWORD = 7, } -export default Type; +export default EntityType; diff --git a/src/shared/utils/enums/index.ts b/src/shared/utils/enums/index.ts new file mode 100644 index 0000000..fed9c12 --- /dev/null +++ b/src/shared/utils/enums/index.ts @@ -0,0 +1,2 @@ +export { default as EntityType } from './EntityType'; +export { default as TmdbImageSize } from './TmdbImageSize'; diff --git a/src/shared/utils/getEntityRoute.ts b/src/shared/utils/getEntityRoute.ts new file mode 100644 index 0000000..5b549fb --- /dev/null +++ b/src/shared/utils/getEntityRoute.ts @@ -0,0 +1,18 @@ +import Route from 'routes/enums'; +import { EntityType } from 'shared/utils/enums'; + +const getEntityRoute = (mediaTypeId?: number): string | undefined => { + if (mediaTypeId === EntityType.TV) { + return Route.TV; + } + + if (mediaTypeId === EntityType.MOVIE) { + return Route.MOVIE; + } + + if (mediaTypeId === EntityType.PERSON) { + return Route.PERSON; + } +}; + +export default getEntityRoute; diff --git a/src/shared/utils/getMediaTypeId.ts b/src/shared/utils/getMediaTypeId.ts index 6022e9d..7b9878e 100644 --- a/src/shared/utils/getMediaTypeId.ts +++ b/src/shared/utils/getMediaTypeId.ts @@ -1,16 +1,16 @@ -import { Type } from 'domains/Favorites/enums'; +import { EntityType } from 'shared/utils/enums'; const getMediaTypeId = (mediaType?: string): number | undefined => { if (mediaType === 'tv') { - return Type.TV; + return EntityType.TV; } if (mediaType === 'movie') { - return Type.MOVIE; + return EntityType.MOVIE; } if (mediaType === 'person') { - return Type.PERSON; + return EntityType.PERSON; } }; diff --git a/src/shared/utils/index.ts b/src/shared/utils/index.ts index 17bc6e0..68ead60 100644 --- a/src/shared/utils/index.ts +++ b/src/shared/utils/index.ts @@ -5,5 +5,6 @@ export { default as getBackground } from './colors/getBackground'; export { default as getBackgroundByTheme } from './colors/getBackgroundByTheme'; export { default as getColor } from './colors/getColor'; export { default as getColorByTheme } from './colors/getColorByTheme'; +export { default as getEntityRoute } from './getEntityRoute'; export { default as getMediaTypeId } from './getMediaTypeId'; export { default as getValidationErrors } from './getValidationErrors'; From 2b6906e4426515ba0ca246cb88c80160023099d2 Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Wed, 4 Nov 2020 21:21:50 -0300 Subject: [PATCH 02/12] WJ-102 - Update: Move enum from utils to shared; --- src/components/EntityImage/index.spec.tsx | 52 +++++++++++++++---- src/domains/Favorites/helpers/getByType.ts | 2 +- src/domains/Movie/api/Details/index.ts | 2 +- src/domains/Movie/api/NowPlaying/index.ts | 2 +- src/domains/Movie/api/Popular/index.ts | 2 +- .../Movie/api/Recommendations/index.ts | 2 +- src/domains/Search/api/Multi/index.ts | 2 +- src/domains/Tv/api/Details/index.ts | 2 +- src/domains/Tv/api/Popular/index.ts | 2 +- src/pages/Home/index.tsx | 2 +- src/shared/{utils => }/enums/EntityType.ts | 0 src/shared/enums/index.ts | 1 + src/shared/utils/enums/index.ts | 1 - src/shared/utils/getEntityRoute.ts | 2 +- src/shared/utils/getMediaTypeId.ts | 2 +- 15 files changed, 54 insertions(+), 22 deletions(-) rename src/shared/{utils => }/enums/EntityType.ts (100%) diff --git a/src/components/EntityImage/index.spec.tsx b/src/components/EntityImage/index.spec.tsx index 0eec945..992c96c 100644 --- a/src/components/EntityImage/index.spec.tsx +++ b/src/components/EntityImage/index.spec.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { render, fireEvent, waitFor, act } from '@testing-library/react'; -import { Color } from 'shared/enums'; -import Movie from 'components/EntityImage'; +import { Color, EntityType } from 'shared/enums'; +import EntityImage from 'components/EntityImage'; const mockedUpdateFavorite = jest.fn(); const mockedHistoryPush = jest.fn(); @@ -15,11 +15,16 @@ jest.mock('react-router-dom', () => { }; }); -describe('Movie Component', () => { +describe('EntityImage Component', () => { it('should render a movie with poster.', () => { // Arrange const { container, getByRole } = render( - , + , ); // Act @@ -33,7 +38,12 @@ describe('Movie Component', () => { it('should render a movie with backdrop.', () => { // Arrange const { container, getByRole } = render( - , + , ); // Act @@ -46,7 +56,9 @@ describe('Movie Component', () => { it('should not render a movie when poster and backdrop are null.', () => { // Arrange and Act - const { container } = render(); + const { container } = render( + , + ); // Assert expect(container).toBeEmptyDOMElement(); @@ -57,7 +69,12 @@ describe('Movie Component', () => { // Arrange const handleRedirect = jest.fn(); const { getByRole } = render( - , + , ); // Act @@ -92,7 +109,12 @@ describe('Movie Component', () => { }); const { getByRole } = render( - , + , ); // Act @@ -125,7 +147,12 @@ describe('Movie Component', () => { }); const { getByRole } = render( - , + , ); // Act @@ -158,7 +185,12 @@ describe('Movie Component', () => { }); const { getByRole } = render( - , + , ); // Act diff --git a/src/domains/Favorites/helpers/getByType.ts b/src/domains/Favorites/helpers/getByType.ts index d03587f..34e395d 100644 --- a/src/domains/Favorites/helpers/getByType.ts +++ b/src/domains/Favorites/helpers/getByType.ts @@ -1,4 +1,4 @@ -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import { Details as MovieDetails } from 'domains/Movie/api'; import { Details as TvDetails } from 'domains/Tv/api'; import { Details as PersonDetails } from 'domains/Person/api'; diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index ce5ead3..b50d6be 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/Details/Params'; import RawResponse from 'domains/Movie/api/Details/RawResponse'; import Response from 'domains/Movie/api/Details/Response'; diff --git a/src/domains/Movie/api/NowPlaying/index.ts b/src/domains/Movie/api/NowPlaying/index.ts index beaeaac..108ec14 100644 --- a/src/domains/Movie/api/NowPlaying/index.ts +++ b/src/domains/Movie/api/NowPlaying/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/NowPlaying/Params'; import RawResponse from 'domains/Movie/api/NowPlaying/RawResponse'; import Response from 'domains/Movie/api/NowPlaying/Response'; diff --git a/src/domains/Movie/api/Popular/index.ts b/src/domains/Movie/api/Popular/index.ts index 6754178..33334b3 100644 --- a/src/domains/Movie/api/Popular/index.ts +++ b/src/domains/Movie/api/Popular/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/Popular/Params'; import RawResponse from 'domains/Movie/api/Popular/RawResponse'; import Response from 'domains/Movie/api/Popular/Response'; diff --git a/src/domains/Movie/api/Recommendations/index.ts b/src/domains/Movie/api/Recommendations/index.ts index 08b881a..53ab239 100644 --- a/src/domains/Movie/api/Recommendations/index.ts +++ b/src/domains/Movie/api/Recommendations/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import RawResponse from 'domains/Movie/api/Recommendations/RawResponse'; import Response from 'domains/Movie/api/Recommendations/Response'; diff --git a/src/domains/Search/api/Multi/index.ts b/src/domains/Search/api/Multi/index.ts index 047a501..4bddb4d 100644 --- a/src/domains/Search/api/Multi/index.ts +++ b/src/domains/Search/api/Multi/index.ts @@ -1,6 +1,6 @@ import tmdb from 'services/api/tmdb'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Search/api/Multi/Params'; import RawResponse from 'domains/Search/api/Multi/RawResponse'; import Response from 'domains/Search/api/Multi/Response'; diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index c98df6f..406d2b7 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Tv/api/Details/Params'; import RawResponse from 'domains/Tv/api/Details/RawResponse'; import Response from 'domains/Tv/api/Details/Response'; diff --git a/src/domains/Tv/api/Popular/index.ts b/src/domains/Tv/api/Popular/index.ts index f6f4ca8..5a71ab1 100644 --- a/src/domains/Tv/api/Popular/index.ts +++ b/src/domains/Tv/api/Popular/index.ts @@ -2,7 +2,7 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import Params from 'domains/Tv/api/Popular/Params'; import RawResponse from 'domains/Tv/api/Popular/RawResponse'; import Response from 'domains/Tv/api/Popular/Response'; diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 0bd3519..1e11181 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { NowPlaying, Popular } from 'domains/Movie/api'; diff --git a/src/shared/utils/enums/EntityType.ts b/src/shared/enums/EntityType.ts similarity index 100% rename from src/shared/utils/enums/EntityType.ts rename to src/shared/enums/EntityType.ts diff --git a/src/shared/enums/index.ts b/src/shared/enums/index.ts index 780d00b..25eab32 100644 --- a/src/shared/enums/index.ts +++ b/src/shared/enums/index.ts @@ -1,4 +1,5 @@ export { default as Color } from './Color'; +export { default as EntityType } from './EntityType'; export { default as PosterHeight } from './PosterHeight'; export { default as PosterWidth } from './PosterWidth'; export { default as Size } from './Size'; diff --git a/src/shared/utils/enums/index.ts b/src/shared/utils/enums/index.ts index fed9c12..2c99b60 100644 --- a/src/shared/utils/enums/index.ts +++ b/src/shared/utils/enums/index.ts @@ -1,2 +1 @@ -export { default as EntityType } from './EntityType'; export { default as TmdbImageSize } from './TmdbImageSize'; diff --git a/src/shared/utils/getEntityRoute.ts b/src/shared/utils/getEntityRoute.ts index 5b549fb..5d9f924 100644 --- a/src/shared/utils/getEntityRoute.ts +++ b/src/shared/utils/getEntityRoute.ts @@ -1,5 +1,5 @@ import Route from 'routes/enums'; -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; const getEntityRoute = (mediaTypeId?: number): string | undefined => { if (mediaTypeId === EntityType.TV) { diff --git a/src/shared/utils/getMediaTypeId.ts b/src/shared/utils/getMediaTypeId.ts index 7b9878e..8622e5c 100644 --- a/src/shared/utils/getMediaTypeId.ts +++ b/src/shared/utils/getMediaTypeId.ts @@ -1,4 +1,4 @@ -import { EntityType } from 'shared/utils/enums'; +import { EntityType } from 'shared/enums'; const getMediaTypeId = (mediaType?: string): number | undefined => { if (mediaType === 'tv') { From 710b28d6546266252199e637e9235cd37a09e6ec Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Wed, 4 Nov 2020 21:31:16 -0300 Subject: [PATCH 03/12] WJ-102 - Update: Move EntityImage to containers; --- src/components/index.ts | 1 - .../EntityImage/dtos/ContainerProps.ts | 0 src/{components => containers}/EntityImage/dtos/index.ts | 0 src/{components => containers}/EntityImage/index.spec.tsx | 2 +- .../EntityImage/index.stories.tsx | 6 +++--- src/{components => containers}/EntityImage/index.tsx | 0 src/{components => containers}/EntityImage/styles.ts | 0 src/containers/Filmography/dtos/index.ts | 4 ++-- src/containers/MovieList/dtos/index.ts | 4 ++-- src/containers/MovieList/index.tsx | 6 +++--- src/containers/Result/index.tsx | 2 +- src/containers/index.ts | 1 + src/pages/Movie/index.tsx | 4 ++-- src/pages/Tv/index.tsx | 4 ++-- 14 files changed, 17 insertions(+), 17 deletions(-) rename src/{components => containers}/EntityImage/dtos/ContainerProps.ts (100%) rename src/{components => containers}/EntityImage/dtos/index.ts (100%) rename src/{components => containers}/EntityImage/index.spec.tsx (98%) rename src/{components => containers}/EntityImage/index.stories.tsx (81%) rename src/{components => containers}/EntityImage/index.tsx (100%) rename src/{components => containers}/EntityImage/styles.ts (100%) diff --git a/src/components/index.ts b/src/components/index.ts index 438e722..6a5e49a 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -3,7 +3,6 @@ export { ColumnLayout, RowLayout, Wrapper, Container } from 'components/Layout'; export { default as Button } from './Button'; export { default as EnvironmentLabel } from './EnvironmentLabel'; export { default as Input } from './Input'; -export { default as EntityImage } from './EntityImage'; export { default as MovieHighlight } from './MovieHighlight'; export { default as Person } from './Person'; export { default as Profile } from './Profile'; diff --git a/src/components/EntityImage/dtos/ContainerProps.ts b/src/containers/EntityImage/dtos/ContainerProps.ts similarity index 100% rename from src/components/EntityImage/dtos/ContainerProps.ts rename to src/containers/EntityImage/dtos/ContainerProps.ts diff --git a/src/components/EntityImage/dtos/index.ts b/src/containers/EntityImage/dtos/index.ts similarity index 100% rename from src/components/EntityImage/dtos/index.ts rename to src/containers/EntityImage/dtos/index.ts diff --git a/src/components/EntityImage/index.spec.tsx b/src/containers/EntityImage/index.spec.tsx similarity index 98% rename from src/components/EntityImage/index.spec.tsx rename to src/containers/EntityImage/index.spec.tsx index 992c96c..2b249ca 100644 --- a/src/components/EntityImage/index.spec.tsx +++ b/src/containers/EntityImage/index.spec.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { render, fireEvent, waitFor, act } from '@testing-library/react'; import { Color, EntityType } from 'shared/enums'; -import EntityImage from 'components/EntityImage'; +import EntityImage from 'containers/EntityImage'; const mockedUpdateFavorite = jest.fn(); const mockedHistoryPush = jest.fn(); diff --git a/src/components/EntityImage/index.stories.tsx b/src/containers/EntityImage/index.stories.tsx similarity index 81% rename from src/components/EntityImage/index.stories.tsx rename to src/containers/EntityImage/index.stories.tsx index effd101..9fa49b7 100644 --- a/src/components/EntityImage/index.stories.tsx +++ b/src/containers/EntityImage/index.stories.tsx @@ -1,12 +1,12 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'components/EntityImage/dtos'; -import EntityImage from 'components/EntityImage'; +import Props from 'containers/EntityImage/dtos'; +import { EntityImage } from 'containers'; // Config and Controls export default { - title: 'Components/EntityImage', + title: 'Containers/EntityImage', component: EntityImage, argTypes: { favorite: { control: 'boolean' }, diff --git a/src/components/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx similarity index 100% rename from src/components/EntityImage/index.tsx rename to src/containers/EntityImage/index.tsx diff --git a/src/components/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts similarity index 100% rename from src/components/EntityImage/styles.ts rename to src/containers/EntityImage/styles.ts diff --git a/src/containers/Filmography/dtos/index.ts b/src/containers/Filmography/dtos/index.ts index bd5b9f5..a84b857 100644 --- a/src/containers/Filmography/dtos/index.ts +++ b/src/containers/Filmography/dtos/index.ts @@ -1,6 +1,6 @@ import DefaultProps from 'shared/dtos'; -import MovieProps from 'components/EntityImage/dtos'; -import FavoriteProps from 'domains/Favorites/api/List/Response'; +// import MovieProps from 'containers/EntityImage/dtos'; +// import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; export default interface Props extends DefaultProps { diff --git a/src/containers/MovieList/dtos/index.ts b/src/containers/MovieList/dtos/index.ts index bd5b9f5..a84b857 100644 --- a/src/containers/MovieList/dtos/index.ts +++ b/src/containers/MovieList/dtos/index.ts @@ -1,6 +1,6 @@ import DefaultProps from 'shared/dtos'; -import MovieProps from 'components/EntityImage/dtos'; -import FavoriteProps from 'domains/Favorites/api/List/Response'; +// import MovieProps from 'containers/EntityImage/dtos'; +// import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; export default interface Props extends DefaultProps { diff --git a/src/containers/MovieList/index.tsx b/src/containers/MovieList/index.tsx index c78b6f9..f75819e 100644 --- a/src/containers/MovieList/index.tsx +++ b/src/containers/MovieList/index.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { Wrapper } from 'components/Layout'; -import Movie from 'components/EntityImage'; +import { EntityImage } from 'containers'; import { Container, Title, @@ -43,8 +43,8 @@ const MovieList: React.FC = ({ {!isLoading && data.length > 0 && ( - {data.map(movie => ( - + {data.map(entity => ( + ))} diff --git a/src/containers/Result/index.tsx b/src/containers/Result/index.tsx index a89353d..396404b 100644 --- a/src/containers/Result/index.tsx +++ b/src/containers/Result/index.tsx @@ -4,7 +4,7 @@ import { useHistory } from 'react-router-dom'; import { getEntityRoute } from 'shared/utils'; import Props from 'containers/Result/dtos'; -import { EntityImage } from 'components'; +import { EntityImage } from 'containers'; import { Container, ImageContainer, diff --git a/src/containers/index.ts b/src/containers/index.ts index 0f94c36..ea9884b 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -1,3 +1,4 @@ +export { default as EntityImage } from './EntityImage'; export { default as Filmography } from './Filmography'; export { default as Footer } from './Footer'; export { default as Header } from './Header'; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index 3273fee..fddcd9a 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -8,8 +8,8 @@ import { Details } from 'domains/Movie/api'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import { ColumnLayout, Container, EntityImage } from 'components'; -import { Header, PersonList, MovieList, Footer } from 'containers'; +import { ColumnLayout, Container } from 'components'; +import { Header, EntityImage, PersonList, MovieList, Footer } from 'containers'; import { ContentContainer, MovieContainer, diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index 2bf8726..966d94a 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -8,8 +8,8 @@ import { Details } from 'domains/Tv/api'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import { ColumnLayout, Container, EntityImage } from 'components'; -import { Header, PersonList, MovieList, Footer } from 'containers'; +import { ColumnLayout, Container } from 'components'; +import { Header, EntityImage, PersonList, MovieList, Footer } from 'containers'; import { ContentContainer, MovieContainer, From 9ab90ad5b5c20964736f915023b0e15306bc9b7a Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Wed, 4 Nov 2020 21:36:51 -0300 Subject: [PATCH 04/12] WJ-102 - Update: MovieList to EntityImageList; --- .../{MovieList => EntityImageList}/dtos/index.ts | 0 .../{MovieList => EntityImageList}/index.stories.tsx | 10 +++++----- .../{MovieList => EntityImageList}/index.tsx | 4 ++-- .../{MovieList => EntityImageList}/styles.ts | 0 src/containers/index.ts | 2 +- src/pages/Home/index.tsx | 10 +++++----- src/pages/Movie/index.tsx | 10 ++++++++-- src/pages/Person/index.tsx | 4 ++-- src/pages/Tv/index.tsx | 10 ++++++++-- 9 files changed, 31 insertions(+), 19 deletions(-) rename src/containers/{MovieList => EntityImageList}/dtos/index.ts (100%) rename src/containers/{MovieList => EntityImageList}/index.stories.tsx (92%) rename src/containers/{MovieList => EntityImageList}/index.tsx (94%) rename src/containers/{MovieList => EntityImageList}/styles.ts (100%) diff --git a/src/containers/MovieList/dtos/index.ts b/src/containers/EntityImageList/dtos/index.ts similarity index 100% rename from src/containers/MovieList/dtos/index.ts rename to src/containers/EntityImageList/dtos/index.ts diff --git a/src/containers/MovieList/index.stories.tsx b/src/containers/EntityImageList/index.stories.tsx similarity index 92% rename from src/containers/MovieList/index.stories.tsx rename to src/containers/EntityImageList/index.stories.tsx index 4554c9d..9b829fb 100644 --- a/src/containers/MovieList/index.stories.tsx +++ b/src/containers/EntityImageList/index.stories.tsx @@ -1,13 +1,13 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'containers/MovieList/dtos'; -import MovieList from 'containers/MovieList'; +import Props from 'containers/EntityImageList/dtos'; +import EntityImageList from 'containers/EntityImageList'; // Config and Controls export default { - title: 'Containers/MovieList', - component: MovieList, + title: 'Containers/EntityImageList', + component: EntityImageList, argTypes: { data: { control: 'object' }, title: { control: 'text' }, @@ -95,7 +95,7 @@ export default { // Component const Template: Story = args => { - return ; + return ; }; // Stories diff --git a/src/containers/MovieList/index.tsx b/src/containers/EntityImageList/index.tsx similarity index 94% rename from src/containers/MovieList/index.tsx rename to src/containers/EntityImageList/index.tsx index f75819e..c2d7d45 100644 --- a/src/containers/MovieList/index.tsx +++ b/src/containers/EntityImageList/index.tsx @@ -15,7 +15,7 @@ import { import Props from './dtos'; -const MovieList: React.FC = ({ +const EntityImageList: React.FC = ({ theme, background, color, @@ -58,4 +58,4 @@ const MovieList: React.FC = ({ ); }; -export default MovieList; +export default EntityImageList; diff --git a/src/containers/MovieList/styles.ts b/src/containers/EntityImageList/styles.ts similarity index 100% rename from src/containers/MovieList/styles.ts rename to src/containers/EntityImageList/styles.ts diff --git a/src/containers/index.ts b/src/containers/index.ts index ea9884b..6034ead 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -1,9 +1,9 @@ export { default as EntityImage } from './EntityImage'; +export { default as EntityImageList } from './EntityImageList'; export { default as Filmography } from './Filmography'; export { default as Footer } from './Footer'; export { default as Header } from './Header'; export { default as Highlights } from './Highlights'; -export { default as MovieList } from './MovieList'; export { default as PersonList } from './PersonList'; export { default as Result } from './Result'; export { default as ResultList } from './ResultList'; diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 1e11181..86ded55 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -9,7 +9,7 @@ import MovieResponse from 'domains/Movie/api/Popular/Response'; import TvPopularResponse from 'domains/Tv/api/Popular/Response'; import { ColumnLayout } from 'components'; -import { Footer, Header, Highlights, MovieList } from 'containers'; +import { Footer, Header, Highlights, EntityImageList } from 'containers'; import { HeaderBackground, ContentContainer } from './styles'; const Home: React.FC = () => { @@ -65,17 +65,17 @@ const Home: React.FC = () => {
- - - { /> {user && ( - diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index fddcd9a..c95942b 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -9,7 +9,13 @@ import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { ColumnLayout, Container } from 'components'; -import { Header, EntityImage, PersonList, MovieList, Footer } from 'containers'; +import { + Header, + EntityImage, + PersonList, + EntityImageList, + Footer, +} from 'containers'; import { ContentContainer, MovieContainer, @@ -112,7 +118,7 @@ const Movie: React.FC = () => { message="Sem informações de elenco." /> - = () => { - = () => { message="Sem informações de elenco." /> - Date: Wed, 4 Nov 2020 23:34:27 -0300 Subject: [PATCH 05/12] WJ-102 - New: EntityImage custom props; WJ-102 - New: Parse API response for EntityImage; --- .../EntityImage/dtos/ContainerProps.ts | 3 + src/containers/EntityImage/dtos/index.ts | 5 +- src/containers/EntityImage/index.tsx | 41 ++++++++++--- src/containers/EntityImage/styles.ts | 58 +++++++++++++++++-- src/containers/EntityImageList/dtos/index.ts | 3 +- src/containers/EntityImageList/index.tsx | 11 +++- src/containers/EntityImageList/styles.ts | 4 +- src/domains/Movie/api/Details/Response.ts | 7 ++- src/domains/Movie/api/Details/index.ts | 12 +++- src/domains/Movie/api/NowPlaying/Response.ts | 7 ++- src/domains/Movie/api/NowPlaying/index.ts | 8 ++- src/domains/Movie/api/Popular/Response.ts | 7 ++- src/domains/Movie/api/Popular/index.ts | 8 ++- .../Movie/api/Recommendations/Response.ts | 7 ++- src/domains/Tv/api/Details/RawResponse.ts | 4 +- src/domains/Tv/api/Details/Response.ts | 8 ++- src/domains/Tv/api/Details/index.ts | 14 +++-- src/domains/Tv/api/Popular/Response.ts | 6 +- src/domains/Tv/api/Popular/index.ts | 6 +- .../Tv/api/Recommendations/Response.ts | 6 +- 20 files changed, 177 insertions(+), 48 deletions(-) diff --git a/src/containers/EntityImage/dtos/ContainerProps.ts b/src/containers/EntityImage/dtos/ContainerProps.ts index e1ea761..7df9e60 100644 --- a/src/containers/EntityImage/dtos/ContainerProps.ts +++ b/src/containers/EntityImage/dtos/ContainerProps.ts @@ -1,3 +1,6 @@ export default interface ContainerProps { size?: 'small' | 'large'; + hideFavoriteButton?: boolean; + showInfo?: boolean; + hideSubtitle?: boolean; } diff --git a/src/containers/EntityImage/dtos/index.ts b/src/containers/EntityImage/dtos/index.ts index bc61813..6d28a03 100644 --- a/src/containers/EntityImage/dtos/index.ts +++ b/src/containers/EntityImage/dtos/index.ts @@ -4,6 +4,9 @@ export default interface MovieProps extends ContainerProps { id: number; favorite: boolean; mediaType: number; - poster?: string; backdrop?: string; + + featuredImage?: string; + title?: string; + subtitle?: string; } diff --git a/src/containers/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx index c27abf7..e1d3f3c 100644 --- a/src/containers/EntityImage/index.tsx +++ b/src/containers/EntityImage/index.tsx @@ -6,11 +6,25 @@ import { getEntityRoute } from 'shared/utils'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { Color } from 'shared/enums'; -import { Container, IconButton, Poster } from './styles'; +import { + Container, + EntityContainer, + IconButton, + FeaturedImage, + InfoContainer, + InfoTitle, + InfoSubtitle, +} from './styles'; import Props from './dtos'; -const EntityImage: React.FC = ({ size, ...entity }) => { +const EntityImage: React.FC = ({ + size, + hideFavoriteButton, + showInfo, + hideSubtitle, + ...entity +}) => { const history = useHistory(); const { user } = useAuth(); const { favoriteList = [], UpdateFavorite } = useFavorite(); @@ -48,16 +62,27 @@ const EntityImage: React.FC = ({ size, ...entity }) => { } }, [user, favoriteList, entity.id, entity.mediaType]); - if (!entity.poster && !entity.backdrop) { + if (!entity.featuredImage && !entity.backdrop) { return null; } return ( - - - - - + + {!hideFavoriteButton && ( + + + + )} + + + + {showInfo && ( + + {entity.title} + {!hideSubtitle && {entity?.subtitle}} + + )} + ); }; diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index deb90db..c534846 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -3,14 +3,20 @@ import styled, { css } from 'styled-components'; import { Color, PosterHeight, PosterWidth, Size } from 'shared/enums'; import ContainerProps from './dtos/ContainerProps'; -export const Container = styled.div` +export const Container = styled.div` position: relative; +`; + +export const EntityContainer = styled.div` + display: flex; + align-items: center; + justify-content: center; + border-radius: ${Size.Smallest}; overflow: hidden; width: ${PosterWidth.Default}; height: ${PosterHeight.Default}; - border: 1px solid ${Color.FillSecondary}; ${props => props?.size === 'small' && @@ -28,9 +34,14 @@ export const Container = styled.div` border: 0; `} - display: flex; - align-items: center; - justify-content: center; + + ${props => + props.showInfo && + css` + overflow: hidden; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); + background: rgba(0, 0, 0, 0.5); + `} &:hover { cursor: pointer; @@ -55,9 +66,44 @@ export const IconButton = styled.button` } `; -export const Poster = styled.img` +export const FeaturedImage = styled.img` width: 100%; height: 100%; object-fit: cover; transition: width 0.2s, height 0.2s; `; + +export const InfoContainer = styled.div` + position: absolute; + bottom: 0; + width: 100%; + line-height: ${Size.Default}; + background: ${Color.Fill}; + overflow: hidden; + padding: ${Size.Smallest}; + border-radius: 0 0 ${Size.Smallest} ${Size.Smallest}; + height: ${props => (props.hideSubtitle ? '5.4rem' : '7rem')}; +`; + +export const InfoTitle = styled.p` + font-size: ${Size.Small}; + color: ${Color.Secondary}; + + ${props => + props.hideSubtitle === false && + css` + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + `} +`; + +export const InfoSubtitle = styled.p` + font-size: ${Size.Small}; + color: ${Color.Text}; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +`; diff --git a/src/containers/EntityImageList/dtos/index.ts b/src/containers/EntityImageList/dtos/index.ts index a84b857..c0613de 100644 --- a/src/containers/EntityImageList/dtos/index.ts +++ b/src/containers/EntityImageList/dtos/index.ts @@ -2,8 +2,9 @@ import DefaultProps from 'shared/dtos'; // import MovieProps from 'containers/EntityImage/dtos'; // import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; +import ContainerProps from 'containers/EntityImage/dtos/ContainerProps'; -export default interface Props extends DefaultProps { +export default interface Props extends DefaultProps, ContainerProps { title?: string; data: any[]; isLoading?: boolean; diff --git a/src/containers/EntityImageList/index.tsx b/src/containers/EntityImageList/index.tsx index c2d7d45..84fe57a 100644 --- a/src/containers/EntityImageList/index.tsx +++ b/src/containers/EntityImageList/index.tsx @@ -24,6 +24,9 @@ const EntityImageList: React.FC = ({ isLoading = false, loaderColor, message = 'Não há resultados.', + hideFavoriteButton, + showInfo, + hideSubtitle, }) => { return ( @@ -44,7 +47,13 @@ const EntityImageList: React.FC = ({ {data.map(entity => ( - + ))} diff --git a/src/containers/EntityImageList/styles.ts b/src/containers/EntityImageList/styles.ts index 508922f..718429f 100644 --- a/src/containers/EntityImageList/styles.ts +++ b/src/containers/EntityImageList/styles.ts @@ -38,7 +38,7 @@ export const LoadingContainer = styled.div` `; export const ListContainer = styled.div` - height: ${PosterHeight.Default}; + height: calc(${PosterHeight.Default} + 10px); overflow-y: hidden; overflow-x: auto; @@ -56,6 +56,8 @@ export const ListContainer = styled.div` export const ListContent = styled.div` display: inline-flex; + padding: 0 2px; + margin-top: 2px; @media (max-width: 1280px) { margin-left: ${Size.Medium}; diff --git a/src/domains/Movie/api/Details/Response.ts b/src/domains/Movie/api/Details/Response.ts index a72a8b6..4725a6d 100644 --- a/src/domains/Movie/api/Details/Response.ts +++ b/src/domains/Movie/api/Details/Response.ts @@ -17,17 +17,20 @@ export default interface Response { homepage?: string; id: number; originalTitle: string; - title: string; popularity: number; runtime: string; voteCount: number; voteAverage: number; tagline: string; - favorite: boolean; recommendations?: Recommendations[]; credits?: Credits; directorName?: string; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index b50d6be..9b1b24d 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -37,7 +37,6 @@ const parseResponse = (movie: RawResponse): Response => { genresNames: arrayToString(movie.genres, 'name'), id: movie.id, originalTitle: movie.original_title, - title: movie.title, popularity: movie.popularity, voteCount: movie.vote_count, voteAverage: movie.vote_average, @@ -49,17 +48,24 @@ const parseResponse = (movie: RawResponse): Response => { )?.name, releaseDate: formatDate({ value: movie.release_date }), - poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), + + featuredImage: formatTmdbImage({ value: movie.poster_path }), + releaseYear: movie.release_date?.substring(0, 4), + subtitle: movie.release_date?.substring(0, 4), + title: movie.title, favorite: false, mediaType: EntityType.MOVIE, } as Response; const recommendations = movie.recommendations?.results.map( recommendation => ({ - poster: formatTmdbImage({ value: recommendation.poster_path }), backdrop: formatTmdbImage({ value: recommendation.poster_path }), id: recommendation.id, + + featuredImage: formatTmdbImage({ value: recommendation.poster_path }), + releaseYear: recommendation.release_date?.substring(0, 4), + subtitle: recommendation.release_date?.substring(0, 4), title: recommendation.title, favorite: false, mediaType: EntityType.MOVIE, diff --git a/src/domains/Movie/api/NowPlaying/Response.ts b/src/domains/Movie/api/NowPlaying/Response.ts index b1ba704..27ea11c 100644 --- a/src/domains/Movie/api/NowPlaying/Response.ts +++ b/src/domains/Movie/api/NowPlaying/Response.ts @@ -1,15 +1,18 @@ export default interface Response { - poster?: string; backdrop?: string; overview: string; releaseDate: string; genreIds: number[]; id: number; originalTitle: string; - title: string; popularity: number; voteCount: number; voteAverage: number; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Movie/api/NowPlaying/index.ts b/src/domains/Movie/api/NowPlaying/index.ts index 108ec14..a73a30c 100644 --- a/src/domains/Movie/api/NowPlaying/index.ts +++ b/src/domains/Movie/api/NowPlaying/index.ts @@ -32,14 +32,16 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { genreIds: movie.genre_ids, id: movie.id, originalTitle: movie.original_title, - title: movie.title, popularity: movie.popularity, voteCount: movie.vote_count, voteAverage: movie.vote_average, - releaseDate: formatDate({ value: movie.release_date }), - poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), + + featuredImage: formatTmdbImage({ value: movie.poster_path }), + releaseYear: movie.release_date?.substring(0, 4), + subtitle: movie.release_date?.substring(0, 4), + title: movie.title, favorite: false, mediaType: EntityType.MOVIE, } as Response; diff --git a/src/domains/Movie/api/Popular/Response.ts b/src/domains/Movie/api/Popular/Response.ts index b1ba704..27ea11c 100644 --- a/src/domains/Movie/api/Popular/Response.ts +++ b/src/domains/Movie/api/Popular/Response.ts @@ -1,15 +1,18 @@ export default interface Response { - poster?: string; backdrop?: string; overview: string; releaseDate: string; genreIds: number[]; id: number; originalTitle: string; - title: string; popularity: number; voteCount: number; voteAverage: number; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Movie/api/Popular/index.ts b/src/domains/Movie/api/Popular/index.ts index 33334b3..965f697 100644 --- a/src/domains/Movie/api/Popular/index.ts +++ b/src/domains/Movie/api/Popular/index.ts @@ -30,14 +30,16 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { genreIds: movie.genre_ids, id: movie.id, originalTitle: movie.original_title, - title: movie.title, popularity: movie.popularity, voteCount: movie.vote_count, voteAverage: movie.vote_average, - releaseDate: formatDate({ value: movie.release_date }), - poster: formatTmdbImage({ value: movie.poster_path }), backdrop: formatTmdbImage({ value: movie.backdrop_path }), + + featuredImage: formatTmdbImage({ value: movie.poster_path }), + releaseYear: movie.release_date?.substring(0, 4), + subtitle: movie.release_date?.substring(0, 4), + title: movie.title, favorite: false, mediaType: EntityType.MOVIE, } as Response; diff --git a/src/domains/Movie/api/Recommendations/Response.ts b/src/domains/Movie/api/Recommendations/Response.ts index a36b718..6597aea 100644 --- a/src/domains/Movie/api/Recommendations/Response.ts +++ b/src/domains/Movie/api/Recommendations/Response.ts @@ -1,10 +1,13 @@ export default interface Response { - poster?: string; backdrop?: string; id: number; - title: string; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; // overview: string; // releaseDate: string; // genresIds: number[]; diff --git a/src/domains/Tv/api/Details/RawResponse.ts b/src/domains/Tv/api/Details/RawResponse.ts index 040b1e9..32511cd 100644 --- a/src/domains/Tv/api/Details/RawResponse.ts +++ b/src/domains/Tv/api/Details/RawResponse.ts @@ -1,5 +1,5 @@ -import Recommendations from 'domains/Movie/api/Recommendations/RawResponse'; -import Credits from 'domains/Movie/api/Credits/RawResponse'; +import Recommendations from 'domains/Tv/api/Recommendations/RawResponse'; +import Credits from 'domains/Tv/api/Credits/RawResponse'; export default interface RawResponse { poster_path?: string; diff --git a/src/domains/Tv/api/Details/Response.ts b/src/domains/Tv/api/Details/Response.ts index 713dc59..59380d7 100644 --- a/src/domains/Tv/api/Details/Response.ts +++ b/src/domains/Tv/api/Details/Response.ts @@ -2,7 +2,6 @@ import Recommendations from 'domains/Movie/api/Recommendations/Response'; import Credits from 'domains/Movie/api/Credits/Response'; export default interface Response { - poster?: string; backdrop?: string; budget: number; overview: string; @@ -16,17 +15,20 @@ export default interface Response { genresNames: string; homepage?: string; id: number; - title: string; originalTitle: string; popularity: number; runtime: string; voteCount: number; voteAverage: number; - favorite: boolean; recommendations?: Recommendations[]; credits?: Credits; directorName?: string; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index 406d2b7..99d44f8 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -36,7 +36,6 @@ const parseResponse = (tv: RawResponse): Response => { genresNames: arrayToString(tv.genres, 'name'), id: tv.id, originalTitle: tv.original_name, - title: tv.name, popularity: tv.popularity, voteCount: tv.vote_count, voteAverage: tv.vote_average, @@ -47,17 +46,24 @@ const parseResponse = (tv: RawResponse): Response => { )?.name, releaseDate: formatDate({ value: tv.first_air_date }), - poster: formatTmdbImage({ value: tv.poster_path }), backdrop: formatTmdbImage({ value: tv.backdrop_path }), + + featuredImage: formatTmdbImage({ value: tv.poster_path }), + releaseYear: tv.first_air_date?.substring(0, 4), + subtitle: tv.first_air_date?.substring(0, 4), + title: tv.name, favorite: false, mediaType: EntityType.TV, } as Response; const recommendations = tv.recommendations?.results.map(recommendation => ({ - poster: formatTmdbImage({ value: recommendation.poster_path }), backdrop: formatTmdbImage({ value: recommendation.poster_path }), id: recommendation.id, - title: recommendation.title, + + featuredImage: formatTmdbImage({ value: recommendation.poster_path }), + releaseYear: recommendation.first_air_date?.substring(0, 4), + subtitle: recommendation.first_air_date?.substring(0, 4), + title: recommendation.name, favorite: false, mediaType: EntityType.TV, })) as Recommendations[]; diff --git a/src/domains/Tv/api/Popular/Response.ts b/src/domains/Tv/api/Popular/Response.ts index a858005..e278f54 100644 --- a/src/domains/Tv/api/Popular/Response.ts +++ b/src/domains/Tv/api/Popular/Response.ts @@ -1,5 +1,4 @@ export default interface Response { - poster?: string; backdrop?: string; overview: string; releaseDate: string; @@ -9,6 +8,11 @@ export default interface Response { name: string; popularity: number; voteCount: number; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Tv/api/Popular/index.ts b/src/domains/Tv/api/Popular/index.ts index 5a71ab1..1f65bdf 100644 --- a/src/domains/Tv/api/Popular/index.ts +++ b/src/domains/Tv/api/Popular/index.ts @@ -35,9 +35,13 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { voteCount: tv.vote_count, releaseDate: formatDate({ value: tv.first_air_date }), - poster: formatTmdbImage({ value: tv.poster_path }), backdrop: formatTmdbImage({ value: tv.backdrop_path }), + + featuredImage: formatTmdbImage({ value: tv.poster_path }), + releaseYear: tv.first_air_date?.substring(0, 4), + subtitle: tv.first_air_date?.substring(0, 4), favorite: false, + title: tv.name, mediaType: EntityType.TV, } as Response; diff --git a/src/domains/Tv/api/Recommendations/Response.ts b/src/domains/Tv/api/Recommendations/Response.ts index a36b718..699cca0 100644 --- a/src/domains/Tv/api/Recommendations/Response.ts +++ b/src/domains/Tv/api/Recommendations/Response.ts @@ -1,10 +1,12 @@ export default interface Response { - poster?: string; backdrop?: string; id: number; - title: string; favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; // overview: string; // releaseDate: string; // genresIds: number[]; From 1180c43faae7c6df21b56d76a883d1069904b632 Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Thu, 5 Nov 2020 19:54:55 -0300 Subject: [PATCH 06/12] WJ-102 - New: Favorite person works; WJ-102 - New: EntityImage shadow and disabled; --- .../EntityImage/dtos/ContainerProps.ts | 2 + src/containers/EntityImage/index.tsx | 20 ++++-- src/containers/EntityImage/styles.ts | 28 +++++--- src/containers/EntityImageList/index.tsx | 4 ++ src/domains/Favorites/api/List/Response.ts | 7 +- src/domains/Favorites/hooks/index.tsx | 4 +- src/domains/Person/api/Details/Response.ts | 7 +- src/domains/Person/api/Details/index.ts | 70 +++++++++++++------ src/pages/Movie/index.tsx | 2 +- src/pages/Movie/styles.ts | 8 +-- src/pages/Person/index.tsx | 11 ++- src/pages/Person/styles.ts | 6 +- src/pages/Tv/index.tsx | 2 +- src/pages/Tv/styles.ts | 8 +-- 14 files changed, 113 insertions(+), 66 deletions(-) diff --git a/src/containers/EntityImage/dtos/ContainerProps.ts b/src/containers/EntityImage/dtos/ContainerProps.ts index 7df9e60..bd3987e 100644 --- a/src/containers/EntityImage/dtos/ContainerProps.ts +++ b/src/containers/EntityImage/dtos/ContainerProps.ts @@ -1,6 +1,8 @@ export default interface ContainerProps { size?: 'small' | 'large'; + showShadow?: boolean; hideFavoriteButton?: boolean; showInfo?: boolean; hideSubtitle?: boolean; + disabled?: boolean; } diff --git a/src/containers/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx index e1d3f3c..4561b3a 100644 --- a/src/containers/EntityImage/index.tsx +++ b/src/containers/EntityImage/index.tsx @@ -20,7 +20,9 @@ import Props from './dtos'; const EntityImage: React.FC = ({ size, + showShadow, hideFavoriteButton, + disabled, showInfo, hideSubtitle, ...entity @@ -44,13 +46,14 @@ const EntityImage: React.FC = ({ }, [user, UpdateFavorite, entity.id, entity.mediaType]); const handleRedirect = useCallback(() => { - const entityRoute = getEntityRoute(entity.mediaType); - history.push(`${entityRoute}/${entity.id}`); - }, [history, entity.id, entity.mediaType]); + if (!disabled) { + const entityRoute = getEntityRoute(entity.mediaType); + history.push(`${entityRoute}/${entity.id}`); + } + }, [disabled, history, entity.id, entity.mediaType]); // Check if entity is in favorite list and change status useEffect(() => { - // console.log('entity', entity); if (user) { const response = favoriteList.find( favorite => @@ -67,13 +70,18 @@ const EntityImage: React.FC = ({ } return ( - + {!hideFavoriteButton && ( )} - + {showInfo && ( diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index c534846..8423108 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -3,8 +3,15 @@ import styled, { css } from 'styled-components'; import { Color, PosterHeight, PosterWidth, Size } from 'shared/enums'; import ContainerProps from './dtos/ContainerProps'; -export const Container = styled.div` +export const Container = styled.div` position: relative; + border-radius: ${Size.Smallest}; + + ${props => + props.showShadow && + css` + box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); + `} `; export const EntityContainer = styled.div` @@ -43,14 +50,19 @@ export const EntityContainer = styled.div` background: rgba(0, 0, 0, 0.5); `} - &:hover { - cursor: pointer; - img { - width: 110%; - height: 110%; - } - } + ${props => + !props.disabled && + css` + &:hover { + cursor: pointer; + + img { + width: 110%; + height: 110%; + } + } + `} `; export const IconButton = styled.button` diff --git a/src/containers/EntityImageList/index.tsx b/src/containers/EntityImageList/index.tsx index 84fe57a..2c9b102 100644 --- a/src/containers/EntityImageList/index.tsx +++ b/src/containers/EntityImageList/index.tsx @@ -24,7 +24,9 @@ const EntityImageList: React.FC = ({ isLoading = false, loaderColor, message = 'Não há resultados.', + showShadow, hideFavoriteButton, + disabled, showInfo, hideSubtitle, }) => { @@ -49,7 +51,9 @@ const EntityImageList: React.FC = ({ {data.map(entity => ( { +export default interface Response + extends Omit, + Omit { favoriteId: string; userId: string; entityId: number; diff --git a/src/domains/Favorites/hooks/index.tsx b/src/domains/Favorites/hooks/index.tsx index cbbf7bb..03c97a0 100644 --- a/src/domains/Favorites/hooks/index.tsx +++ b/src/domains/Favorites/hooks/index.tsx @@ -15,8 +15,8 @@ const FavoriteProvider: React.FC = ({ children }) => { const Favorites = useCallback(async (): Promise => { const response = await FavoritesApi(); - const updatedResponse = response.map(movie => ({ - ...movie, + const updatedResponse = response.map(entity => ({ + ...entity, favorite: true, })); diff --git a/src/domains/Person/api/Details/Response.ts b/src/domains/Person/api/Details/Response.ts index 42c9a3e..a6cc99f 100644 --- a/src/domains/Person/api/Details/Response.ts +++ b/src/domains/Person/api/Details/Response.ts @@ -4,7 +4,6 @@ import Movie from 'domains/Person/api/Details/Movie'; export default interface Response { id: number; name: string; - profile?: string; placeOfBirth?: string; biography: string; @@ -21,5 +20,11 @@ export default interface Response { knownFor?: Movie[]; filmography?: Movie[]; + + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; } diff --git a/src/domains/Person/api/Details/index.ts b/src/domains/Person/api/Details/index.ts index 118cf63..4d20eac 100644 --- a/src/domains/Person/api/Details/index.ts +++ b/src/domains/Person/api/Details/index.ts @@ -6,6 +6,7 @@ import Response from 'domains/Person/api/Details/Response'; import Movie from 'domains/Person/api/Details/Movie'; // import Credits from 'domains/Person/api/Credits/Response'; import { formatDate, formatTmdbImage, getMediaTypeId } from 'shared/utils'; +import { EntityType } from 'shared/enums'; // import Crew from 'domains/Person/api/Credits/dtos/Crew'; // import Cast from 'domains/Person/api/Credits/dtos/Cast'; // import { arrayToString } from 'shared/utils'; @@ -45,40 +46,63 @@ const parseResponse = (person: RawResponse): Response => { imdbId: person.imdb_id, homepage: person.homepage, - profile: formatTmdbImage({ value: person.profile_path }), birthday: formatDate({ value: person.birthday }), deathday: formatDate({ value: person.deathday }), + + featuredImage: formatTmdbImage({ value: person.profile_path }), + releaseYear: person.birthday?.substring(0, 4), + subtitle: formatDate({ value: person.birthday }), + title: person.name, + favorite: false, + mediaType: EntityType.PERSON, } as Response; - const movies = person.combined_credits?.cast - .map(movie => ({ - poster: formatTmdbImage({ value: movie.poster_path }), - backdrop: formatTmdbImage({ value: movie.poster_path }), - id: movie.id, - title: movie.title, - favorite: false, - character: movie.character.toUpperCase().includes('SELF') + const combinedProductions = person.combined_credits?.cast + .map(production => ({ + poster: formatTmdbImage({ value: production.poster_path }), + backdrop: formatTmdbImage({ value: production.poster_path }), + id: production.id, + character: production.character.toUpperCase().includes('SELF') ? '' - : movie.character, + : production.character, releaseDate: formatDate({ - value: movie.release_date || movie.first_air_date, + value: production.release_date || production.first_air_date, }), - originalDate: movie.release_date || movie.first_air_date, + originalDate: production.release_date || production.first_air_date, year: - (movie.release_date && movie.release_date.substring(0, 4)) || - (movie.first_air_date && movie.first_air_date.substring(0, 4)), - popularity: movie.popularity, - name: movie.name, - mediaType: getMediaTypeId(movie.media_type), + (production.release_date && production.release_date.substring(0, 4)) || + (production.first_air_date && + production.first_air_date.substring(0, 4)), + popularity: production.popularity, + name: production.name, + + featuredImage: formatTmdbImage({ + value: production.poster_path || production.first_air_date, + }), + releaseYear: + (production.release_date && production.release_date.substring(0, 4)) || + (production.first_air_date && + production.first_air_date.substring(0, 4)), + subtitle: + (production.release_date && production.release_date.substring(0, 4)) || + (production.first_air_date && + production.first_air_date.substring(0, 4)), + title: production.title || production.name, + favorite: false, + mediaType: getMediaTypeId(production.media_type), })) .filter(item => item.originalDate && item.character.length > 0) as Movie[]; - const knownFor = [...movies] - .sort((a, b) => (a.popularity < b.popularity ? 1 : -1)) - .slice(0, 30); - const filmography = [...movies].sort((a, b) => - Date.parse(a.originalDate) < Date.parse(b.originalDate) ? 1 : -1, - ); + const knownFor = + combinedProductions && + [...combinedProductions] + ?.sort((a, b) => (a.popularity < b.popularity ? 1 : -1)) + .slice(0, 30); + const filmography = + combinedProductions && + [...combinedProductions]?.sort((a, b) => + Date.parse(a.originalDate) < Date.parse(b.originalDate) ? 1 : -1, + ); parsedPerson = { ...parsedPerson, knownFor, filmography }; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index c95942b..dd7045c 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -85,7 +85,7 @@ const Movie: React.FC = () => { - + diff --git a/src/pages/Movie/styles.ts b/src/pages/Movie/styles.ts index f4dd3b4..31259ab 100644 --- a/src/pages/Movie/styles.ts +++ b/src/pages/Movie/styles.ts @@ -43,13 +43,7 @@ export const MovieContainer = styled.div` } `; -export const PosterContainer = styled.div` - /* display: flex; - flex: 1; */ - & > div { - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - } -`; +export const PosterContainer = styled.div``; export const MovieDetailsContainer = styled.div` display: flex; diff --git a/src/pages/Person/index.tsx b/src/pages/Person/index.tsx index 6a4ea3a..f1ec9d7 100644 --- a/src/pages/Person/index.tsx +++ b/src/pages/Person/index.tsx @@ -9,7 +9,13 @@ import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { ColumnLayout, Container, Profile } from 'components'; -import { Header, EntityImageList, Footer, Filmography } from 'containers'; +import { + Header, + EntityImageList, + Footer, + Filmography, + EntityImage, +} from 'containers'; import { ContentContainer, PersonContainer, @@ -72,7 +78,7 @@ const Person: React.FC = () => { - + @@ -81,7 +87,6 @@ const Person: React.FC = () => { {person.birthday} | {person.gender} | {person.placeOfBirth} - {/* {person.tagline && {`"${person.tagline}"`}} */} Biografia diff --git a/src/pages/Person/styles.ts b/src/pages/Person/styles.ts index a02d5a9..a503c28 100644 --- a/src/pages/Person/styles.ts +++ b/src/pages/Person/styles.ts @@ -44,11 +44,7 @@ export const PersonContainer = styled.div` } `; -export const ProfileContainer = styled.div` - & > div { - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - } -`; +export const ProfileContainer = styled.div``; export const PersonDetailsContainer = styled.div` display: flex; diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index 8fe1f78..f247088 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -84,7 +84,7 @@ const Tv: React.FC = () => { - + diff --git a/src/pages/Tv/styles.ts b/src/pages/Tv/styles.ts index f4dd3b4..31259ab 100644 --- a/src/pages/Tv/styles.ts +++ b/src/pages/Tv/styles.ts @@ -43,13 +43,7 @@ export const MovieContainer = styled.div` } `; -export const PosterContainer = styled.div` - /* display: flex; - flex: 1; */ - & > div { - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - } -`; +export const PosterContainer = styled.div``; export const MovieDetailsContainer = styled.div` display: flex; From 098f08d375a8ca60d9efe57857eef9ffd4ba1aeb Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Thu, 5 Nov 2020 20:08:48 -0300 Subject: [PATCH 07/12] WJ-102 - Update: Parse cast to EntityImage; --- src/containers/EntityImage/index.tsx | 5 ++++- src/containers/EntityImage/styles.ts | 8 +++++++- src/domains/Movie/api/Details/index.ts | 12 ++++++++++++ src/domains/Tv/api/Details/index.ts | 12 ++++++++++++ src/pages/Movie/index.tsx | 3 ++- src/pages/Tv/index.tsx | 3 ++- 6 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/containers/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx index 4561b3a..a5ec282 100644 --- a/src/containers/EntityImage/index.tsx +++ b/src/containers/EntityImage/index.tsx @@ -82,7 +82,10 @@ const EntityImage: React.FC = ({ disabled={disabled} onClick={handleRedirect} > - + {showInfo && ( diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index 8423108..a289dc2 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -78,11 +78,17 @@ export const IconButton = styled.button` } `; -export const FeaturedImage = styled.img` +export const FeaturedImage = styled.img` width: 100%; height: 100%; object-fit: cover; transition: width 0.2s, height 0.2s; + + ${props => + props.showInfo && + css` + margin-top: -${Size.Largest}; + `} `; export const InfoContainer = styled.div` diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index 9b1b24d..c1ca004 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -81,6 +81,12 @@ const parseResponse = (movie: RawResponse): Response => { creditId: person.credit_id, gender: person.gender, profile: formatTmdbImage({ value: person.profile_path }), + + featuredImage: formatTmdbImage({ value: person.profile_path }), + subtitle: person.character, + title: person.name, + favorite: false, + mediaType: EntityType.PERSON, })) as Cast[]; const crew = movie.credits?.crew.map(person => ({ @@ -91,6 +97,12 @@ const parseResponse = (movie: RawResponse): Response => { creditId: person.credit_id, gender: person.gender, profile: formatTmdbImage({ value: person.profile_path }), + + featuredImage: formatTmdbImage({ value: person.profile_path }), + subtitle: person.job, + title: person.name, + favorite: false, + mediaType: EntityType.PERSON, })) as Crew[]; const credits = { cast, crew } as Credits; diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index 99d44f8..4dda77b 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -77,6 +77,12 @@ const parseResponse = (tv: RawResponse): Response => { creditId: person.credit_id, gender: person.gender, profile: formatTmdbImage({ value: person.profile_path }), + + featuredImage: formatTmdbImage({ value: person.profile_path }), + subtitle: person.character, + title: person.name, + favorite: false, + mediaType: EntityType.PERSON, })) as Cast[]; const crew = tv.credits?.crew.map(person => ({ @@ -87,6 +93,12 @@ const parseResponse = (tv: RawResponse): Response => { creditId: person.credit_id, gender: person.gender, profile: formatTmdbImage({ value: person.profile_path }), + + featuredImage: formatTmdbImage({ value: person.profile_path }), + subtitle: person.job, + title: person.name, + favorite: false, + mediaType: EntityType.PERSON, })) as Crew[]; const credits = { cast, crew } as Credits; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index dd7045c..7f2066b 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -111,11 +111,12 @@ const Movie: React.FC = () => { - = () => { - Date: Thu, 5 Nov 2020 21:02:16 -0300 Subject: [PATCH 08/12] WJ-102 - Update: Remove deprecated components; --- src/components/Person/dtos/ContainerProps.ts | 3 - src/components/Person/dtos/index.ts | 8 -- src/components/Person/index.tsx | 33 ------- src/components/Person/styles.ts | 61 ------------ src/components/Profile/dtos/ContainerProps.ts | 3 - src/components/Profile/dtos/index.ts | 6 -- src/components/Profile/index.tsx | 27 ------ src/components/Profile/styles.ts | 33 ------- src/components/index.ts | 2 - src/containers/PersonList/dtos/index.ts | 10 -- src/containers/PersonList/index.tsx | 61 ------------ src/containers/PersonList/styles.ts | 97 ------------------- src/containers/index.ts | 1 - src/pages/Movie/index.tsx | 8 +- src/pages/Person/index.tsx | 6 +- src/pages/Tv/index.tsx | 8 +- 16 files changed, 5 insertions(+), 362 deletions(-) delete mode 100644 src/components/Person/dtos/ContainerProps.ts delete mode 100644 src/components/Person/dtos/index.ts delete mode 100644 src/components/Person/index.tsx delete mode 100644 src/components/Person/styles.ts delete mode 100644 src/components/Profile/dtos/ContainerProps.ts delete mode 100644 src/components/Profile/dtos/index.ts delete mode 100644 src/components/Profile/index.tsx delete mode 100644 src/components/Profile/styles.ts delete mode 100644 src/containers/PersonList/dtos/index.ts delete mode 100644 src/containers/PersonList/index.tsx delete mode 100644 src/containers/PersonList/styles.ts diff --git a/src/components/Person/dtos/ContainerProps.ts b/src/components/Person/dtos/ContainerProps.ts deleted file mode 100644 index a543f27..0000000 --- a/src/components/Person/dtos/ContainerProps.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default interface ContainerProps { - large?: boolean; -} diff --git a/src/components/Person/dtos/index.ts b/src/components/Person/dtos/index.ts deleted file mode 100644 index 7c57e1d..0000000 --- a/src/components/Person/dtos/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import ContainerProps from './ContainerProps'; - -export default interface PersonProps extends ContainerProps { - id: number; - profile: string; - name: string; - character: string; -} diff --git a/src/components/Person/index.tsx b/src/components/Person/index.tsx deleted file mode 100644 index f03a913..0000000 --- a/src/components/Person/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React, { useCallback } from 'react'; -import { useHistory } from 'react-router-dom'; - -import Route from 'routes/enums'; -import { - Container, - Profile, - NameContainer, - PersonName, - CharacterName, -} from './styles'; - -import Props from './dtos'; - -const Person: React.FC = ({ large = false, ...person }) => { - const history = useHistory(); - - const handleRedirect = useCallback(() => { - history.push(`${Route.PERSON}/${person.id}`); - }, [history, person.id]); - - return ( - - - - {person.name} - {person.character} - - - ); -}; - -export default Person; diff --git a/src/components/Person/styles.ts b/src/components/Person/styles.ts deleted file mode 100644 index c1684ec..0000000 --- a/src/components/Person/styles.ts +++ /dev/null @@ -1,61 +0,0 @@ -import styled from 'styled-components'; - -import { Color, PosterHeight, PosterWidth, Size } from 'shared/enums'; -import ContainerProps from './dtos/ContainerProps'; - -export const Container = styled.div` - position: relative; - width: ${props => (props.large ? PosterWidth.Large : PosterWidth.Default)}; - height: ${props => (props.large ? PosterHeight.Large : PosterHeight.Default)}; - border-radius: ${Size.Smallest}; - overflow: hidden; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); - background: rgba(0, 0, 0, 0.5); - - display: flex; - align-items: center; - justify-content: center; - - &:hover { - cursor: pointer; - - img { - width: 110%; - height: 110%; - } - } -`; - -export const Profile = styled.img` - margin-top: -5rem; - width: 100%; - height: 100%; - object-fit: cover; - transition: width 0.2s, height 0.2s; -`; - -export const NameContainer = styled.div` - position: absolute; - bottom: 0; - height: 7.4rem; - width: 100%; - background: ${Color.Fill}; - overflow: hidden; - padding: ${Size.Smallest}; -`; - -export const PersonName = styled.div` - font-size: ${Size.Small}; - color: ${Color.Secondary}; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -`; - -export const CharacterName = styled.div` - font-size: ${Size.Small}; - color: ${Color.Text}; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -`; diff --git a/src/components/Profile/dtos/ContainerProps.ts b/src/components/Profile/dtos/ContainerProps.ts deleted file mode 100644 index a543f27..0000000 --- a/src/components/Profile/dtos/ContainerProps.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default interface ContainerProps { - large?: boolean; -} diff --git a/src/components/Profile/dtos/index.ts b/src/components/Profile/dtos/index.ts deleted file mode 100644 index b1d158f..0000000 --- a/src/components/Profile/dtos/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import ContainerProps from './ContainerProps'; - -export default interface PersonProps extends ContainerProps { - id: number; - profile?: string; -} diff --git a/src/components/Profile/index.tsx b/src/components/Profile/index.tsx deleted file mode 100644 index 2a53d68..0000000 --- a/src/components/Profile/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React, { useCallback } from 'react'; -import { useHistory } from 'react-router-dom'; - -import Route from 'routes/enums'; -import { Container, ProfileImage } from './styles'; - -import Props from './dtos'; - -const Movie: React.FC = ({ large = false, ...person }) => { - const history = useHistory(); - - const handleRedirect = useCallback(() => { - history.push(`${Route.PERSON}/${person.id}`); - }, [history, person.id]); - - if (!person.profile) { - return null; - } - - return ( - - - - ); -}; - -export default Movie; diff --git a/src/components/Profile/styles.ts b/src/components/Profile/styles.ts deleted file mode 100644 index 39a479e..0000000 --- a/src/components/Profile/styles.ts +++ /dev/null @@ -1,33 +0,0 @@ -import styled from 'styled-components'; - -import { Color, PosterHeight, PosterWidth, Size } from 'shared/enums'; -import ContainerProps from './dtos/ContainerProps'; - -export const Container = styled.div` - position: relative; - width: ${props => (props.large ? PosterWidth.Large : PosterWidth.Default)}; - height: ${props => (props.large ? PosterHeight.Large : PosterHeight.Default)}; - border-radius: ${Size.Smallest}; - overflow: hidden; - - border: ${props => (props.large ? 0 : `1px solid ${Color.FillSecondary}`)}; - display: flex; - align-items: center; - justify-content: center; - - &:hover { - cursor: pointer; - - img { - width: 110%; - height: 110%; - } - } -`; - -export const ProfileImage = styled.img` - width: 100%; - height: 100%; - object-fit: cover; - transition: width 0.2s, height 0.2s; -`; diff --git a/src/components/index.ts b/src/components/index.ts index 6a5e49a..8fe95bf 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -4,7 +4,5 @@ export { default as Button } from './Button'; export { default as EnvironmentLabel } from './EnvironmentLabel'; export { default as Input } from './Input'; export { default as MovieHighlight } from './MovieHighlight'; -export { default as Person } from './Person'; -export { default as Profile } from './Profile'; export { default as SearchInput } from './SearchInput'; export { default as Tooltip } from './Tooltip'; diff --git a/src/containers/PersonList/dtos/index.ts b/src/containers/PersonList/dtos/index.ts deleted file mode 100644 index 62323c6..0000000 --- a/src/containers/PersonList/dtos/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import DefaultProps from 'shared/dtos'; -import { Color } from 'shared/enums'; - -export default interface Props extends DefaultProps { - title?: string; - data: any[]; - isLoading?: boolean; - loaderColor?: Color; - message?: string; -} diff --git a/src/containers/PersonList/index.tsx b/src/containers/PersonList/index.tsx deleted file mode 100644 index 33fa697..0000000 --- a/src/containers/PersonList/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react'; - -import { ReactComponent as Loading } from 'assets/loading.svg'; - -import { Wrapper } from 'components/Layout'; -import Person from 'components/Person'; -import { - Container, - Title, - LoadingContainer, - ListContainer, - ListContent, - MessageContainer, -} from './styles'; - -import Props from './dtos'; - -const PersonList: React.FC = ({ - theme, - background, - color, - title, - data, - isLoading = false, - loaderColor, - message = 'Não há resultados.', -}) => { - return ( - - - {title && ( - - {title} - - )} - - {isLoading && ( - - - - )} - - {!isLoading && data.length > 0 && ( - - - {data.map(person => ( - - ))} - - - )} - - {!isLoading && data.length === 0 && ( - {message} - )} - - - ); -}; - -export default PersonList; diff --git a/src/containers/PersonList/styles.ts b/src/containers/PersonList/styles.ts deleted file mode 100644 index 718429f..0000000 --- a/src/containers/PersonList/styles.ts +++ /dev/null @@ -1,97 +0,0 @@ -import styled from 'styled-components'; - -import DefaultProps from 'shared/dtos'; -import { Container as DefaultContainer } from 'components/Layout'; -import { Color, PosterHeight, Size } from 'shared/enums'; -import { getColor } from 'shared/utils'; - -interface LoadingProps { - loaderColor?: string; -} - -export const Container = styled(DefaultContainer)` - padding: ${Size.Medium} 0; - display: flex; - flex-direction: column; -`; - -export const Title = styled.h2` - margin-bottom: ${Size.Small}; - color: ${props => getColor(props.theme, props.color)}; - - @media (max-width: 1280px) { - margin-left: ${Size.Medium}; - } -`; - -export const LoadingContainer = styled.div` - display: flex; - align-items: center; - justify-content: center; - height: calc(${PosterHeight.Default}); - - svg { - height: ${Size.Largest}; - width: ${Size.Largest}; - fill: ${props => getColor(props.theme, props.loaderColor)}; - } -`; - -export const ListContainer = styled.div` - height: calc(${PosterHeight.Default} + 10px); - overflow-y: hidden; - overflow-x: auto; - - scroll-snap-type: x mandatory; - -webkit-overflow-scrolling: touch; - scroll-behavior: smooth; - - -ms-overflow-style: none; - scrollbar-width: 10px; - &::-webkit-scrollbar { - /* visibility: visible; */ - display: none; - } -`; - -export const ListContent = styled.div` - display: inline-flex; - padding: 0 2px; - margin-top: 2px; - - @media (max-width: 1280px) { - margin-left: ${Size.Medium}; - margin-right: ${Size.Smallest}; - } - - & > div { - flex: 1 0 auto; - scroll-snap-align: start; - scroll-margin-left: ${Size.Large}; - margin-right: ${Size.Medium}; - - @media (max-width: 1280px) { - scroll-margin-left: ${Size.Medium}; - margin-right: ${Size.Smallest}; - } - } - - & > div:last-child { - margin-right: 0; - - @media (max-width: 1280px) { - margin-right: ${Size.Default}; - } - } -`; - -export const MessageContainer = styled.div` - display: flex; - align-items: center; - height: calc(${PosterHeight.Default} / 3); - color: ${Color.Text}; - - @media (max-width: 1280px) { - margin-left: ${Size.Medium}; - } -`; diff --git a/src/containers/index.ts b/src/containers/index.ts index 6034ead..9e80440 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -4,7 +4,6 @@ export { default as Filmography } from './Filmography'; export { default as Footer } from './Footer'; export { default as Header } from './Header'; export { default as Highlights } from './Highlights'; -export { default as PersonList } from './PersonList'; export { default as Result } from './Result'; export { default as ResultList } from './ResultList'; export { default as SearchModal } from './SearchModal'; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index 7f2066b..c9fa2c4 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -9,13 +9,7 @@ import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { ColumnLayout, Container } from 'components'; -import { - Header, - EntityImage, - PersonList, - EntityImageList, - Footer, -} from 'containers'; +import { Header, EntityImage, EntityImageList, Footer } from 'containers'; import { ContentContainer, MovieContainer, diff --git a/src/pages/Person/index.tsx b/src/pages/Person/index.tsx index f1ec9d7..e29a18f 100644 --- a/src/pages/Person/index.tsx +++ b/src/pages/Person/index.tsx @@ -8,7 +8,7 @@ import { Details } from 'domains/Person/api'; import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; -import { ColumnLayout, Container, Profile } from 'components'; +import { ColumnLayout, Container } from 'components'; import { Header, EntityImageList, @@ -32,7 +32,7 @@ import { const Person: React.FC = () => { const { id } = useParams(); - const [person, setMovie] = useState({} as PersonDetails); + const [person, setPerson] = useState({} as PersonDetails); const [isLoading, setIsLoading] = useState(false); const { user } = useAuth(); @@ -47,7 +47,7 @@ const Person: React.FC = () => { const response = await Details(+id, params); - setMovie(response); + setPerson(response); return response; } catch (error) { console.log('getPerson -> error', error); diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index b402a6c..82f6f46 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -9,13 +9,7 @@ import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { ColumnLayout, Container } from 'components'; -import { - Header, - EntityImage, - PersonList, - EntityImageList, - Footer, -} from 'containers'; +import { Header, EntityImage, EntityImageList, Footer } from 'containers'; import { ContentContainer, MovieContainer, From 39f4984af31d442f68f49285521e744646ba69d9 Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Thu, 5 Nov 2020 21:08:04 -0300 Subject: [PATCH 09/12] WJ-102 - Update: Result to EntitySummary; --- src/containers/{Result => EntitySummary}/dtos/index.ts | 0 src/containers/{Result => EntitySummary}/index.tsx | 6 +++--- src/containers/{Result => EntitySummary}/styles.ts | 0 .../{ResultList => EntitySummaryList}/dtos/index.ts | 0 .../{ResultList => EntitySummaryList}/index.tsx | 10 +++++----- .../{ResultList => EntitySummaryList}/styles.ts | 0 src/containers/SearchModal/index.tsx | 4 ++-- src/containers/index.ts | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) rename src/containers/{Result => EntitySummary}/dtos/index.ts (100%) rename src/containers/{Result => EntitySummary}/index.tsx (86%) rename src/containers/{Result => EntitySummary}/styles.ts (100%) rename src/containers/{ResultList => EntitySummaryList}/dtos/index.ts (100%) rename src/containers/{ResultList => EntitySummaryList}/index.tsx (61%) rename src/containers/{ResultList => EntitySummaryList}/styles.ts (100%) diff --git a/src/containers/Result/dtos/index.ts b/src/containers/EntitySummary/dtos/index.ts similarity index 100% rename from src/containers/Result/dtos/index.ts rename to src/containers/EntitySummary/dtos/index.ts diff --git a/src/containers/Result/index.tsx b/src/containers/EntitySummary/index.tsx similarity index 86% rename from src/containers/Result/index.tsx rename to src/containers/EntitySummary/index.tsx index 396404b..349cc9d 100644 --- a/src/containers/Result/index.tsx +++ b/src/containers/EntitySummary/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { getEntityRoute } from 'shared/utils'; -import Props from 'containers/Result/dtos'; +import Props from 'containers/EntitySummary/dtos'; import { EntityImage } from 'containers'; import { @@ -14,7 +14,7 @@ import { Description, } from './styles'; -const Result: React.FC = ({ data }) => { +const EntitySummary: React.FC = ({ data }) => { const history = useHistory(); const handleRedirect = useCallback(() => { @@ -36,4 +36,4 @@ const Result: React.FC = ({ data }) => { ); }; -export default Result; +export default EntitySummary; diff --git a/src/containers/Result/styles.ts b/src/containers/EntitySummary/styles.ts similarity index 100% rename from src/containers/Result/styles.ts rename to src/containers/EntitySummary/styles.ts diff --git a/src/containers/ResultList/dtos/index.ts b/src/containers/EntitySummaryList/dtos/index.ts similarity index 100% rename from src/containers/ResultList/dtos/index.ts rename to src/containers/EntitySummaryList/dtos/index.ts diff --git a/src/containers/ResultList/index.tsx b/src/containers/EntitySummaryList/index.tsx similarity index 61% rename from src/containers/ResultList/index.tsx rename to src/containers/EntitySummaryList/index.tsx index 012303a..92476bf 100644 --- a/src/containers/ResultList/index.tsx +++ b/src/containers/EntitySummaryList/index.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import Props from 'containers/ResultList/dtos'; +import Props from 'containers/EntitySummaryList/dtos'; import { ReactComponent as Loading } from 'assets/loading.svg'; -import { Result } from 'containers'; +import { EntitySummary } from 'containers'; import { Container } from './styles'; -const ResultList: React.FC = ({ +const EntitySummaryList: React.FC = ({ data = [], isLoading = false, theme, @@ -23,10 +23,10 @@ const ResultList: React.FC = ({ return ( {data.map((result: any) => { - return ; + return ; })} ); }; -export default ResultList; +export default EntitySummaryList; diff --git a/src/containers/ResultList/styles.ts b/src/containers/EntitySummaryList/styles.ts similarity index 100% rename from src/containers/ResultList/styles.ts rename to src/containers/EntitySummaryList/styles.ts diff --git a/src/containers/SearchModal/index.tsx b/src/containers/SearchModal/index.tsx index 4c2580d..badc067 100644 --- a/src/containers/SearchModal/index.tsx +++ b/src/containers/SearchModal/index.tsx @@ -6,7 +6,7 @@ import { Multi } from 'domains/Search/api'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { ReactComponent as Empty } from 'assets/empty.svg'; import { SearchInput } from 'components'; -import { ResultList } from 'containers'; +import { EntitySummaryList } from 'containers'; import { Container, Backdrop, @@ -77,7 +77,7 @@ const SearchModal: React.FC = ({ onClose, isShow }) => { )} {!isLoading && data?.length > 0 && ( - + )} {!isLoading && data?.length === 0 && ( diff --git a/src/containers/index.ts b/src/containers/index.ts index 9e80440..17e300c 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -1,9 +1,9 @@ export { default as EntityImage } from './EntityImage'; export { default as EntityImageList } from './EntityImageList'; +export { default as EntitySummary } from './EntitySummary'; +export { default as EntitySummaryList } from './EntitySummaryList'; export { default as Filmography } from './Filmography'; export { default as Footer } from './Footer'; export { default as Header } from './Header'; export { default as Highlights } from './Highlights'; -export { default as Result } from './Result'; -export { default as ResultList } from './ResultList'; export { default as SearchModal } from './SearchModal'; From 98f2750e7ec762683562d8392ba31e610c387b89 Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Thu, 5 Nov 2020 22:30:50 -0300 Subject: [PATCH 10/12] WJ-102 - New: Multi and Person EntityImage; --- src/components/SearchInput/index.tsx | 2 +- src/components/SearchInput/styles.ts | 2 +- .../EntityImage/dtos/ContainerProps.ts | 1 + src/containers/EntityImage/index.tsx | 5 +- src/containers/EntityImage/styles.ts | 8 ++-- .../EntitySummary/dtos/ContainerProps.ts | 3 ++ src/containers/EntitySummary/dtos/index.ts | 3 +- src/containers/EntitySummary/index.tsx | 8 ++-- src/containers/EntitySummary/styles.ts | 11 +++-- src/domains/Search/api/Multi/RawResponse.ts | 3 ++ src/domains/Search/api/Multi/Response.ts | 9 ++-- src/domains/Search/api/Multi/index.ts | 48 ++++++++++++++----- src/pages/Movie/index.tsx | 8 +++- src/pages/Person/index.tsx | 8 +++- src/pages/Tv/index.tsx | 2 +- 15 files changed, 86 insertions(+), 35 deletions(-) create mode 100644 src/containers/EntitySummary/dtos/ContainerProps.ts diff --git a/src/components/SearchInput/index.tsx b/src/components/SearchInput/index.tsx index 667bc27..50c3ab8 100644 --- a/src/components/SearchInput/index.tsx +++ b/src/components/SearchInput/index.tsx @@ -9,7 +9,7 @@ const SearchInput: React.FC> = ({ diff --git a/src/components/SearchInput/styles.ts b/src/components/SearchInput/styles.ts index 6bc411a..2084b75 100644 --- a/src/components/SearchInput/styles.ts +++ b/src/components/SearchInput/styles.ts @@ -4,7 +4,7 @@ import { Color, Size } from 'shared/enums'; export const Container = styled.div` display: flex; flex: 1; - padding: ${Size.Default}; + padding: ${Size.Default} 0; `; export const Input = styled.input` diff --git a/src/containers/EntityImage/dtos/ContainerProps.ts b/src/containers/EntityImage/dtos/ContainerProps.ts index bd3987e..5064338 100644 --- a/src/containers/EntityImage/dtos/ContainerProps.ts +++ b/src/containers/EntityImage/dtos/ContainerProps.ts @@ -5,4 +5,5 @@ export default interface ContainerProps { showInfo?: boolean; hideSubtitle?: boolean; disabled?: boolean; + showEmpty?: boolean; } diff --git a/src/containers/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx index a5ec282..b0d26fa 100644 --- a/src/containers/EntityImage/index.tsx +++ b/src/containers/EntityImage/index.tsx @@ -25,6 +25,7 @@ const EntityImage: React.FC = ({ disabled, showInfo, hideSubtitle, + showEmpty, ...entity }) => { const history = useHistory(); @@ -65,12 +66,12 @@ const EntityImage: React.FC = ({ } }, [user, favoriteList, entity.id, entity.mediaType]); - if (!entity.featuredImage && !entity.backdrop) { + if (!entity.featuredImage && !entity.backdrop && !showEmpty) { return null; } return ( - + {!hideFavoriteButton && ( diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index a289dc2..e6df042 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -6,11 +6,12 @@ import ContainerProps from './dtos/ContainerProps'; export const Container = styled.div` position: relative; border-radius: ${Size.Smallest}; + background: ${Color.FillSecondary}; ${props => props.showShadow && css` - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5); `} `; @@ -30,7 +31,7 @@ export const EntityContainer = styled.div` css` width: ${PosterWidth.Small}; height: ${PosterHeight.Small}; - border: 1px solid ${Color.FillSecondary}; + border: 0; `} ${props => @@ -47,7 +48,6 @@ export const EntityContainer = styled.div` css` overflow: hidden; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); - background: rgba(0, 0, 0, 0.5); `} @@ -83,6 +83,8 @@ export const FeaturedImage = styled.img` height: 100%; object-fit: cover; transition: width 0.2s, height 0.2s; + border: 0; + outline ${props => props.showInfo && diff --git a/src/containers/EntitySummary/dtos/ContainerProps.ts b/src/containers/EntitySummary/dtos/ContainerProps.ts new file mode 100644 index 0000000..153420a --- /dev/null +++ b/src/containers/EntitySummary/dtos/ContainerProps.ts @@ -0,0 +1,3 @@ +export default interface ContainerProps { + mediaType?: number; +} diff --git a/src/containers/EntitySummary/dtos/index.ts b/src/containers/EntitySummary/dtos/index.ts index 6196c31..a867907 100644 --- a/src/containers/EntitySummary/dtos/index.ts +++ b/src/containers/EntitySummary/dtos/index.ts @@ -1,5 +1,6 @@ import DefaultProps from 'shared/dtos'; +import ContainerProps from './ContainerProps'; -export default interface ResultProps extends DefaultProps { +export default interface ResultProps extends DefaultProps, ContainerProps { data: any; } diff --git a/src/containers/EntitySummary/index.tsx b/src/containers/EntitySummary/index.tsx index 349cc9d..ead403e 100644 --- a/src/containers/EntitySummary/index.tsx +++ b/src/containers/EntitySummary/index.tsx @@ -25,12 +25,12 @@ const EntitySummary: React.FC = ({ data }) => { return ( - + - {data.title} - {data.releaseYear} - {data.overview} + {data.title} + {data.subtitle} + {data.description} ); diff --git a/src/containers/EntitySummary/styles.ts b/src/containers/EntitySummary/styles.ts index 371f962..4334752 100644 --- a/src/containers/EntitySummary/styles.ts +++ b/src/containers/EntitySummary/styles.ts @@ -1,8 +1,7 @@ import styled from 'styled-components'; -import DefaultProps from 'shared/dtos'; -import { Color, Size } from 'shared/enums'; -import { getColor } from 'shared/utils'; +import ContainerProps from 'containers/EntitySummary/dtos/ContainerProps'; +import { Color, EntityType, Size } from 'shared/enums'; export const Container = styled.div` display: flex; @@ -26,9 +25,11 @@ export const DetailsContainer = styled.div` margin-left: ${Size.Medium}; `; -export const Title = styled.h3` +export const Title = styled.h3` margin-bottom: ${Size.Smallest}; - color: ${props => getColor(props.theme, props.color)}; + + color: ${props => + props.mediaType === EntityType.PERSON ? Color.Secondary : Color.Primary}; `; export const Subtitle = styled.p` diff --git a/src/domains/Search/api/Multi/RawResponse.ts b/src/domains/Search/api/Multi/RawResponse.ts index 71ef6aa..5ca6a8f 100644 --- a/src/domains/Search/api/Multi/RawResponse.ts +++ b/src/domains/Search/api/Multi/RawResponse.ts @@ -20,4 +20,7 @@ export default interface RawResponse { first_air_date?: string; original_name?: string; name?: string; + birthday?: string; + profile_path?: string; + known_for?: any[]; } diff --git a/src/domains/Search/api/Multi/Response.ts b/src/domains/Search/api/Multi/Response.ts index 7f5c66d..7e944e7 100644 --- a/src/domains/Search/api/Multi/Response.ts +++ b/src/domains/Search/api/Multi/Response.ts @@ -6,15 +6,18 @@ export default interface Response { backdrop?: string; overview: string; releaseDate: string; - releaseYear: string; genreIds: number[]; id: number; originalTitle: string; - title: string; popularity: number; voteCount: number; voteAverage: number; - favorite: boolean; + favorite: boolean; mediaType: number; + featuredImage?: string; + title: string; + subtitle?: string; + releaseYear?: string; + description?: string; } diff --git a/src/domains/Search/api/Multi/index.ts b/src/domains/Search/api/Multi/index.ts index 4bddb4d..1bb3949 100644 --- a/src/domains/Search/api/Multi/index.ts +++ b/src/domains/Search/api/Multi/index.ts @@ -4,7 +4,12 @@ import { EntityType } from 'shared/enums'; import Params from 'domains/Search/api/Multi/Params'; import RawResponse from 'domains/Search/api/Multi/RawResponse'; import Response from 'domains/Search/api/Multi/Response'; -import { formatDate, formatTmdbImage, getMediaTypeId } from 'shared/utils'; +import { + arrayToString, + formatDate, + formatTmdbImage, + getMediaTypeId, +} from 'shared/utils'; const Multi = async (params: Params): Promise => { const response = await rawPopular(params); @@ -29,33 +34,52 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { genreIds: result.genre_ids, id: result.id, originalTitle: result.original_title || result.original_name, - title: result.title || result.name, popularity: result.popularity, voteCount: result.vote_count, voteAverage: result.vote_average, - releaseYear: - result.release_date?.substring(0, 4) || - result.first_air_date?.substring(0, 4), releaseDate: formatDate({ value: result.release_date }) || formatDate({ value: result.first_air_date }), poster: formatTmdbImage({ value: result.poster_path }), backdrop: formatTmdbImage({ value: result.backdrop_path }), - favorite: false, + featuredImage: formatTmdbImage({ + value: result.poster_path || result.profile_path, + }), + releaseYear: + (result.release_date && result.release_date.substring(0, 4)) || + (result.first_air_date && result.first_air_date.substring(0, 4)) || + (result.birthday && result.birthday.substring(0, 4)), + subtitle: + (result.release_date && result.release_date.substring(0, 4)) || + (result.first_air_date && result.first_air_date.substring(0, 4)) || + (result.known_for && 'Conhecido(a) por: '), + title: result.title || result.name, + favorite: false, mediaType: getMediaTypeId(result.media_type), + description: + (result.overview && result.overview) || + (result.known_for && + arrayToString( + result.known_for.map(item => ({ title: item.title || item.name })), + 'title', + )), } as Response; response = [...response, parsedMovie]; }); - response = [...response] - .filter( - item => - item.mediaType === EntityType.MOVIE || item.mediaType === EntityType.TV, - ) - .sort((a, b) => (a.popularity < b.popularity ? 1 : -1)); + response = + response && + [...response] + .filter( + item => + item.mediaType === EntityType.MOVIE || + item.mediaType === EntityType.TV || + item.mediaType === EntityType.PERSON, + ) + .sort((a, b) => (a.popularity < b.popularity ? 1 : -1)); return response; }; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index c9fa2c4..937d8f5 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -79,7 +79,13 @@ const Movie: React.FC = () => { - + diff --git a/src/pages/Person/index.tsx b/src/pages/Person/index.tsx index e29a18f..9fc8bb3 100644 --- a/src/pages/Person/index.tsx +++ b/src/pages/Person/index.tsx @@ -78,7 +78,13 @@ const Person: React.FC = () => { - + diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index 82f6f46..c9ae946 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -78,7 +78,7 @@ const Tv: React.FC = () => { - + From f6765e340da19baa513b1a44b9972650c585bf6a Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Fri, 6 Nov 2020 21:43:24 -0300 Subject: [PATCH 11/12] WJ-102 - New: API helpers; --- src/containers/EntityImage/styles.ts | 1 - src/domains/Movie/api/Details/index.ts | 42 ++++++++------ src/domains/Movie/api/NowPlaying/index.ts | 21 ++++--- src/domains/Movie/api/Popular/index.ts | 21 ++++--- src/domains/Person/api/Details/index.ts | 62 +++++++++------------ src/domains/Search/api/Multi/index.ts | 52 +++++++---------- src/domains/Tv/api/Details/index.ts | 40 +++++++------ src/domains/Tv/api/Popular/index.ts | 20 ++++--- src/shared/utils/Entity/getBackdrop.ts | 9 +++ src/shared/utils/Entity/getCharacter.ts | 5 ++ src/shared/utils/Entity/getDescription.ts | 16 ++++++ src/shared/utils/Entity/getFeaturedImage.ts | 9 +++ src/shared/utils/Entity/getGender.ts | 5 ++ src/shared/utils/Entity/getOriginalDate.ts | 5 ++ src/shared/utils/Entity/getOriginalTitle.ts | 5 ++ src/shared/utils/Entity/getReleaseDate.ts | 9 +++ src/shared/utils/Entity/getReleaseYear.ts | 9 +++ src/shared/utils/Entity/getSubtitle.ts | 9 +++ src/shared/utils/Entity/getTitle.ts | 5 ++ src/shared/utils/Entity/index.ts | 11 ++++ 20 files changed, 235 insertions(+), 121 deletions(-) create mode 100644 src/shared/utils/Entity/getBackdrop.ts create mode 100644 src/shared/utils/Entity/getCharacter.ts create mode 100644 src/shared/utils/Entity/getDescription.ts create mode 100644 src/shared/utils/Entity/getFeaturedImage.ts create mode 100644 src/shared/utils/Entity/getGender.ts create mode 100644 src/shared/utils/Entity/getOriginalDate.ts create mode 100644 src/shared/utils/Entity/getOriginalTitle.ts create mode 100644 src/shared/utils/Entity/getReleaseDate.ts create mode 100644 src/shared/utils/Entity/getReleaseYear.ts create mode 100644 src/shared/utils/Entity/getSubtitle.ts create mode 100644 src/shared/utils/Entity/getTitle.ts create mode 100644 src/shared/utils/Entity/index.ts diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index e6df042..20bcd23 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -84,7 +84,6 @@ export const FeaturedImage = styled.img` object-fit: cover; transition: width 0.2s, height 0.2s; border: 0; - outline ${props => props.showInfo && diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index c1ca004..fcab846 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -1,6 +1,14 @@ import tmdb from 'services/api/tmdb'; -import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; +import { arrayToString } from 'shared/utils'; +import { + getBackdrop, + getFeaturedImage, + getReleaseDate, + getReleaseYear, + getSubtitle, + getTitle, +} from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/Details/Params'; @@ -47,26 +55,26 @@ const parseResponse = (movie: RawResponse): Response => { person => person.job.toUpperCase() === 'DIRECTOR', )?.name, - releaseDate: formatDate({ value: movie.release_date }), - backdrop: formatTmdbImage({ value: movie.backdrop_path }), + releaseDate: getReleaseDate(movie), + backdrop: getBackdrop(movie), - featuredImage: formatTmdbImage({ value: movie.poster_path }), - releaseYear: movie.release_date?.substring(0, 4), - subtitle: movie.release_date?.substring(0, 4), - title: movie.title, + featuredImage: getFeaturedImage(movie), + releaseYear: getReleaseYear(movie), + subtitle: getReleaseDate(movie), + title: getTitle(movie), favorite: false, mediaType: EntityType.MOVIE, } as Response; const recommendations = movie.recommendations?.results.map( recommendation => ({ - backdrop: formatTmdbImage({ value: recommendation.poster_path }), + backdrop: getBackdrop(recommendation), id: recommendation.id, - featuredImage: formatTmdbImage({ value: recommendation.poster_path }), - releaseYear: recommendation.release_date?.substring(0, 4), - subtitle: recommendation.release_date?.substring(0, 4), - title: recommendation.title, + featuredImage: getFeaturedImage(recommendation), + releaseYear: getReleaseYear(recommendation), + subtitle: getSubtitle(recommendation), + title: getTitle(recommendation), favorite: false, mediaType: EntityType.MOVIE, }), @@ -80,11 +88,11 @@ const parseResponse = (movie: RawResponse): Response => { castId: person.cast_id, creditId: person.credit_id, gender: person.gender, - profile: formatTmdbImage({ value: person.profile_path }), + profile: getFeaturedImage(person), - featuredImage: formatTmdbImage({ value: person.profile_path }), + featuredImage: getFeaturedImage(person), subtitle: person.character, - title: person.name, + title: getTitle(person), favorite: false, mediaType: EntityType.PERSON, })) as Cast[]; @@ -96,9 +104,9 @@ const parseResponse = (movie: RawResponse): Response => { department: person.department, creditId: person.credit_id, gender: person.gender, - profile: formatTmdbImage({ value: person.profile_path }), + profile: getFeaturedImage(person), - featuredImage: formatTmdbImage({ value: person.profile_path }), + featuredImage: getFeaturedImage(person), subtitle: person.job, title: person.name, favorite: false, diff --git a/src/domains/Movie/api/NowPlaying/index.ts b/src/domains/Movie/api/NowPlaying/index.ts index a73a30c..a1b2749 100644 --- a/src/domains/Movie/api/NowPlaying/index.ts +++ b/src/domains/Movie/api/NowPlaying/index.ts @@ -1,6 +1,12 @@ import tmdb from 'services/api/tmdb'; -import { formatDate, formatTmdbImage } from 'shared/utils'; +import { + getBackdrop, + getFeaturedImage, + getReleaseDate, + getReleaseYear, + getTitle, +} from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/NowPlaying/Params'; @@ -35,13 +41,14 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { popularity: movie.popularity, voteCount: movie.vote_count, voteAverage: movie.vote_average, - releaseDate: formatDate({ value: movie.release_date }), - backdrop: formatTmdbImage({ value: movie.backdrop_path }), - featuredImage: formatTmdbImage({ value: movie.poster_path }), - releaseYear: movie.release_date?.substring(0, 4), - subtitle: movie.release_date?.substring(0, 4), - title: movie.title, + releaseDate: getReleaseDate(movie), + backdrop: getBackdrop(movie), + + featuredImage: getFeaturedImage(movie), + releaseYear: getReleaseYear(movie), + subtitle: getReleaseDate(movie), + title: getTitle(movie), favorite: false, mediaType: EntityType.MOVIE, } as Response; diff --git a/src/domains/Movie/api/Popular/index.ts b/src/domains/Movie/api/Popular/index.ts index 965f697..2236106 100644 --- a/src/domains/Movie/api/Popular/index.ts +++ b/src/domains/Movie/api/Popular/index.ts @@ -1,6 +1,12 @@ import tmdb from 'services/api/tmdb'; -import { formatDate, formatTmdbImage } from 'shared/utils'; +import { + getBackdrop, + getFeaturedImage, + getReleaseDate, + getReleaseYear, + getTitle, +} from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; import Params from 'domains/Movie/api/Popular/Params'; @@ -33,13 +39,14 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { popularity: movie.popularity, voteCount: movie.vote_count, voteAverage: movie.vote_average, - releaseDate: formatDate({ value: movie.release_date }), - backdrop: formatTmdbImage({ value: movie.backdrop_path }), - featuredImage: formatTmdbImage({ value: movie.poster_path }), - releaseYear: movie.release_date?.substring(0, 4), - subtitle: movie.release_date?.substring(0, 4), - title: movie.title, + releaseDate: getReleaseDate(movie), + backdrop: getBackdrop(movie), + + featuredImage: getFeaturedImage(movie), + releaseYear: getReleaseYear(movie), + subtitle: getReleaseDate(movie), + title: getTitle(movie), favorite: false, mediaType: EntityType.MOVIE, } as Response; diff --git a/src/domains/Person/api/Details/index.ts b/src/domains/Person/api/Details/index.ts index 4d20eac..38cfa65 100644 --- a/src/domains/Person/api/Details/index.ts +++ b/src/domains/Person/api/Details/index.ts @@ -1,15 +1,22 @@ import tmdb from 'services/api/tmdb'; +import { formatDate, getMediaTypeId } from 'shared/utils'; +import { EntityType } from 'shared/enums'; +import { + getCharacter, + getFeaturedImage, + getGender, + getOriginalDate, + getReleaseDate, + getReleaseYear, + getSubtitle, + getTitle, +} from 'shared/utils/Entity'; + import Params from 'domains/Person/api/Details/Params'; import RawResponse from 'domains/Person/api/Details/RawResponse'; import Response from 'domains/Person/api/Details/Response'; import Movie from 'domains/Person/api/Details/Movie'; -// import Credits from 'domains/Person/api/Credits/Response'; -import { formatDate, formatTmdbImage, getMediaTypeId } from 'shared/utils'; -import { EntityType } from 'shared/enums'; -// import Crew from 'domains/Person/api/Credits/dtos/Crew'; -// import Cast from 'domains/Person/api/Credits/dtos/Cast'; -// import { arrayToString } from 'shared/utils'; const Details = async ( personId: number, @@ -40,18 +47,18 @@ const parseResponse = (person: RawResponse): Response => { popularity: person.popularity, knownForDepartment: person.known_for_department, - gender: person.gender === 2 ? 'Masculino' : 'Feminino', + gender: getGender(person), alsoKnownAs: person.also_known_as, adult: person.adult, imdbId: person.imdb_id, homepage: person.homepage, - birthday: formatDate({ value: person.birthday }), + birthday: getReleaseDate(person), deathday: formatDate({ value: person.deathday }), - featuredImage: formatTmdbImage({ value: person.profile_path }), + featuredImage: getFeaturedImage(person), releaseYear: person.birthday?.substring(0, 4), - subtitle: formatDate({ value: person.birthday }), + subtitle: getReleaseDate(person), title: person.name, favorite: false, mediaType: EntityType.PERSON, @@ -59,35 +66,20 @@ const parseResponse = (person: RawResponse): Response => { const combinedProductions = person.combined_credits?.cast .map(production => ({ - poster: formatTmdbImage({ value: production.poster_path }), - backdrop: formatTmdbImage({ value: production.poster_path }), + poster: getFeaturedImage(production), + backdrop: getFeaturedImage(production), id: production.id, - character: production.character.toUpperCase().includes('SELF') - ? '' - : production.character, - releaseDate: formatDate({ - value: production.release_date || production.first_air_date, - }), - originalDate: production.release_date || production.first_air_date, - year: - (production.release_date && production.release_date.substring(0, 4)) || - (production.first_air_date && - production.first_air_date.substring(0, 4)), + character: getCharacter(production), + releaseDate: getReleaseDate(production), + originalDate: getOriginalDate(production), + year: getReleaseYear(production), popularity: production.popularity, name: production.name, - featuredImage: formatTmdbImage({ - value: production.poster_path || production.first_air_date, - }), - releaseYear: - (production.release_date && production.release_date.substring(0, 4)) || - (production.first_air_date && - production.first_air_date.substring(0, 4)), - subtitle: - (production.release_date && production.release_date.substring(0, 4)) || - (production.first_air_date && - production.first_air_date.substring(0, 4)), - title: production.title || production.name, + featuredImage: getFeaturedImage(production), + releaseYear: getReleaseYear(production), + subtitle: getSubtitle(production), + title: getTitle(production), favorite: false, mediaType: getMediaTypeId(production.media_type), })) diff --git a/src/domains/Search/api/Multi/index.ts b/src/domains/Search/api/Multi/index.ts index 1bb3949..1e2c3ea 100644 --- a/src/domains/Search/api/Multi/index.ts +++ b/src/domains/Search/api/Multi/index.ts @@ -1,15 +1,21 @@ import tmdb from 'services/api/tmdb'; import { EntityType } from 'shared/enums'; +import { getMediaTypeId } from 'shared/utils'; +import { + getBackdrop, + getDescription, + getFeaturedImage, + getOriginalTitle, + getReleaseDate, + getReleaseYear, + getSubtitle, + getTitle, +} from 'shared/utils/Entity'; + import Params from 'domains/Search/api/Multi/Params'; import RawResponse from 'domains/Search/api/Multi/RawResponse'; import Response from 'domains/Search/api/Multi/Response'; -import { - arrayToString, - formatDate, - formatTmdbImage, - getMediaTypeId, -} from 'shared/utils'; const Multi = async (params: Params): Promise => { const response = await rawPopular(params); @@ -33,38 +39,22 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { overview: result.overview, genreIds: result.genre_ids, id: result.id, - originalTitle: result.original_title || result.original_name, + originalTitle: getOriginalTitle(result), popularity: result.popularity, voteCount: result.vote_count, voteAverage: result.vote_average, - releaseDate: - formatDate({ value: result.release_date }) || - formatDate({ value: result.first_air_date }), - poster: formatTmdbImage({ value: result.poster_path }), - backdrop: formatTmdbImage({ value: result.backdrop_path }), + releaseDate: getReleaseDate(result), + poster: getFeaturedImage(result), + backdrop: getBackdrop(result), - featuredImage: formatTmdbImage({ - value: result.poster_path || result.profile_path, - }), - releaseYear: - (result.release_date && result.release_date.substring(0, 4)) || - (result.first_air_date && result.first_air_date.substring(0, 4)) || - (result.birthday && result.birthday.substring(0, 4)), - subtitle: - (result.release_date && result.release_date.substring(0, 4)) || - (result.first_air_date && result.first_air_date.substring(0, 4)) || - (result.known_for && 'Conhecido(a) por: '), - title: result.title || result.name, + featuredImage: getFeaturedImage(result), + releaseYear: getReleaseYear(result), + subtitle: getSubtitle(result), + title: getTitle(result), favorite: false, mediaType: getMediaTypeId(result.media_type), - description: - (result.overview && result.overview) || - (result.known_for && - arrayToString( - result.known_for.map(item => ({ title: item.title || item.name })), - 'title', - )), + description: getDescription(result), } as Response; response = [...response, parsedMovie]; diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index 4dda77b..0fde977 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -1,6 +1,14 @@ import tmdb from 'services/api/tmdb'; -import { arrayToString, formatTmdbImage, formatDate } from 'shared/utils'; +import { arrayToString } from 'shared/utils'; +import { + getBackdrop, + getFeaturedImage, + getReleaseDate, + getReleaseYear, + getSubtitle, + getTitle, +} from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; import Params from 'domains/Tv/api/Details/Params'; @@ -45,25 +53,25 @@ const parseResponse = (tv: RawResponse): Response => { person => person.job.toUpperCase() === 'DIRECTOR', )?.name, - releaseDate: formatDate({ value: tv.first_air_date }), - backdrop: formatTmdbImage({ value: tv.backdrop_path }), + releaseDate: getReleaseDate(tv), + backdrop: getBackdrop(tv), - featuredImage: formatTmdbImage({ value: tv.poster_path }), - releaseYear: tv.first_air_date?.substring(0, 4), - subtitle: tv.first_air_date?.substring(0, 4), - title: tv.name, + featuredImage: getFeaturedImage(tv), + releaseYear: getReleaseYear(tv), + subtitle: getReleaseDate(tv), + title: getTitle(tv), favorite: false, mediaType: EntityType.TV, } as Response; const recommendations = tv.recommendations?.results.map(recommendation => ({ - backdrop: formatTmdbImage({ value: recommendation.poster_path }), + backdrop: getBackdrop(recommendation), id: recommendation.id, - featuredImage: formatTmdbImage({ value: recommendation.poster_path }), - releaseYear: recommendation.first_air_date?.substring(0, 4), - subtitle: recommendation.first_air_date?.substring(0, 4), - title: recommendation.name, + featuredImage: getFeaturedImage(recommendation), + releaseYear: getReleaseYear(recommendation), + subtitle: getSubtitle(recommendation), + title: getTitle(recommendation), favorite: false, mediaType: EntityType.TV, })) as Recommendations[]; @@ -76,9 +84,9 @@ const parseResponse = (tv: RawResponse): Response => { castId: person.cast_id, creditId: person.credit_id, gender: person.gender, - profile: formatTmdbImage({ value: person.profile_path }), + profile: getFeaturedImage(person), - featuredImage: formatTmdbImage({ value: person.profile_path }), + featuredImage: getFeaturedImage(person), subtitle: person.character, title: person.name, favorite: false, @@ -92,9 +100,9 @@ const parseResponse = (tv: RawResponse): Response => { department: person.department, creditId: person.credit_id, gender: person.gender, - profile: formatTmdbImage({ value: person.profile_path }), + profile: getFeaturedImage(person), - featuredImage: formatTmdbImage({ value: person.profile_path }), + featuredImage: getFeaturedImage(person), subtitle: person.job, title: person.name, favorite: false, diff --git a/src/domains/Tv/api/Popular/index.ts b/src/domains/Tv/api/Popular/index.ts index 1f65bdf..db9b00a 100644 --- a/src/domains/Tv/api/Popular/index.ts +++ b/src/domains/Tv/api/Popular/index.ts @@ -1,6 +1,12 @@ import tmdb from 'services/api/tmdb'; -import { formatDate, formatTmdbImage } from 'shared/utils'; +import { + getBackdrop, + getFeaturedImage, + getReleaseDate, + getReleaseYear, + getTitle, +} from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; import Params from 'domains/Tv/api/Popular/Params'; @@ -34,14 +40,14 @@ const parseResponse = (rawResponse: RawResponse[]): Response[] => { popularity: tv.popularity, voteCount: tv.vote_count, - releaseDate: formatDate({ value: tv.first_air_date }), - backdrop: formatTmdbImage({ value: tv.backdrop_path }), + releaseDate: getReleaseDate(tv), + backdrop: getBackdrop(tv), - featuredImage: formatTmdbImage({ value: tv.poster_path }), - releaseYear: tv.first_air_date?.substring(0, 4), - subtitle: tv.first_air_date?.substring(0, 4), + featuredImage: getFeaturedImage(tv), + releaseYear: getReleaseYear(tv), + subtitle: getReleaseYear(tv), + title: getTitle(tv), favorite: false, - title: tv.name, mediaType: EntityType.TV, } as Response; diff --git a/src/shared/utils/Entity/getBackdrop.ts b/src/shared/utils/Entity/getBackdrop.ts new file mode 100644 index 0000000..879cf81 --- /dev/null +++ b/src/shared/utils/Entity/getBackdrop.ts @@ -0,0 +1,9 @@ +import { formatTmdbImage } from 'shared/utils'; + +const getBackdrop = (value: any): string | null => { + return formatTmdbImage({ + value: value.backdrop_path || value.profile_path, + }); +}; + +export default getBackdrop; diff --git a/src/shared/utils/Entity/getCharacter.ts b/src/shared/utils/Entity/getCharacter.ts new file mode 100644 index 0000000..37df398 --- /dev/null +++ b/src/shared/utils/Entity/getCharacter.ts @@ -0,0 +1,5 @@ +const getCharacter = (value: any): string => { + return value.character?.toUpperCase().includes('SELF') ? '' : value.character; +}; + +export default getCharacter; diff --git a/src/shared/utils/Entity/getDescription.ts b/src/shared/utils/Entity/getDescription.ts new file mode 100644 index 0000000..dcd1105 --- /dev/null +++ b/src/shared/utils/Entity/getDescription.ts @@ -0,0 +1,16 @@ +import { arrayToString } from 'shared/utils'; + +const getDescription = (value: any): string | null => { + return ( + (value.overview && value.overview) || + (value.known_for && + arrayToString( + value.known_for.map((item: any) => ({ + title: item.title || item.name, + })), + 'title', + )) + ); +}; + +export default getDescription; diff --git a/src/shared/utils/Entity/getFeaturedImage.ts b/src/shared/utils/Entity/getFeaturedImage.ts new file mode 100644 index 0000000..9dcd678 --- /dev/null +++ b/src/shared/utils/Entity/getFeaturedImage.ts @@ -0,0 +1,9 @@ +import { formatTmdbImage } from 'shared/utils'; + +const getFeaturedImage = (value: any): string | null => { + return formatTmdbImage({ + value: value.poster_path || value.profile_path, + }); +}; + +export default getFeaturedImage; diff --git a/src/shared/utils/Entity/getGender.ts b/src/shared/utils/Entity/getGender.ts new file mode 100644 index 0000000..5ae3620 --- /dev/null +++ b/src/shared/utils/Entity/getGender.ts @@ -0,0 +1,5 @@ +const getGender = (value: any): string => { + return value.gender === 2 ? 'Masculino' : 'Feminino'; +}; + +export default getGender; diff --git a/src/shared/utils/Entity/getOriginalDate.ts b/src/shared/utils/Entity/getOriginalDate.ts new file mode 100644 index 0000000..68fca5e --- /dev/null +++ b/src/shared/utils/Entity/getOriginalDate.ts @@ -0,0 +1,5 @@ +const getOriginalDate = (value: any): string => { + return value?.release_date || value?.first_air_date || value?.birthday; +}; + +export default getOriginalDate; diff --git a/src/shared/utils/Entity/getOriginalTitle.ts b/src/shared/utils/Entity/getOriginalTitle.ts new file mode 100644 index 0000000..5902c94 --- /dev/null +++ b/src/shared/utils/Entity/getOriginalTitle.ts @@ -0,0 +1,5 @@ +const getOriginalTitle = (value: any): string | null => { + return value.original_title || value.original_name; +}; + +export default getOriginalTitle; diff --git a/src/shared/utils/Entity/getReleaseDate.ts b/src/shared/utils/Entity/getReleaseDate.ts new file mode 100644 index 0000000..0f15248 --- /dev/null +++ b/src/shared/utils/Entity/getReleaseDate.ts @@ -0,0 +1,9 @@ +import { formatDate } from 'shared/utils'; + +const getReleaseDate = (value: any): string => { + return formatDate({ + value: value?.release_date || value?.first_air_date || value?.birthday, + }); +}; + +export default getReleaseDate; diff --git a/src/shared/utils/Entity/getReleaseYear.ts b/src/shared/utils/Entity/getReleaseYear.ts new file mode 100644 index 0000000..b94856d --- /dev/null +++ b/src/shared/utils/Entity/getReleaseYear.ts @@ -0,0 +1,9 @@ +const getReleaseYear = (value: any): string => { + return ( + value.release_date?.substring(0, 4) || + value.first_air_date?.substring(0, 4) || + value.birthday?.substring(0, 4) + ); +}; + +export default getReleaseYear; diff --git a/src/shared/utils/Entity/getSubtitle.ts b/src/shared/utils/Entity/getSubtitle.ts new file mode 100644 index 0000000..fbff1c9 --- /dev/null +++ b/src/shared/utils/Entity/getSubtitle.ts @@ -0,0 +1,9 @@ +const getSubtitle = (value: any): string | null => { + return ( + value.release_date?.substring(0, 4) || + value.first_air_date?.substring(0, 4) || + (value.known_for && 'Conhecido(a) por: ') + ); +}; + +export default getSubtitle; diff --git a/src/shared/utils/Entity/getTitle.ts b/src/shared/utils/Entity/getTitle.ts new file mode 100644 index 0000000..3a98480 --- /dev/null +++ b/src/shared/utils/Entity/getTitle.ts @@ -0,0 +1,5 @@ +const getTitle = (value: any): string | null => { + return value.title || value.name; +}; + +export default getTitle; diff --git a/src/shared/utils/Entity/index.ts b/src/shared/utils/Entity/index.ts new file mode 100644 index 0000000..ef2fb89 --- /dev/null +++ b/src/shared/utils/Entity/index.ts @@ -0,0 +1,11 @@ +export { default as getBackdrop } from './getBackdrop'; +export { default as getCharacter } from './getCharacter'; +export { default as getDescription } from './getDescription'; +export { default as getFeaturedImage } from './getFeaturedImage'; +export { default as getGender } from './getGender'; +export { default as getOriginalDate } from './getOriginalDate'; +export { default as getOriginalTitle } from './getOriginalTitle'; +export { default as getReleaseDate } from './getReleaseDate'; +export { default as getReleaseYear } from './getReleaseYear'; +export { default as getSubtitle } from './getSubtitle'; +export { default as getTitle } from './getTitle'; From b9311785180c5d943bc0de09ae9bcb02f8543d6e Mon Sep 17 00:00:00 2001 From: Lucas Teixeira Date: Fri, 6 Nov 2020 22:09:17 -0300 Subject: [PATCH 12/12] WJ-102 - Update: dtos to types; --- src/components/Button/index.stories.tsx | 2 +- src/components/Button/index.tsx | 2 +- src/components/Button/{dtos => types}/index.ts | 0 src/components/Input/index.stories.tsx | 2 +- src/components/Input/index.tsx | 2 +- src/components/Input/{dtos => types}/index.ts | 0 src/components/MovieHighlight/index.stories.tsx | 2 +- src/components/MovieHighlight/index.tsx | 2 +- .../MovieHighlight/{dtos => types}/index.ts | 0 src/components/Tooltip/index.tsx | 2 +- src/components/Tooltip/{dtos => types}/index.ts | 0 src/containers/EntityImage/index.stories.tsx | 2 +- src/containers/EntityImage/index.tsx | 2 +- src/containers/EntityImage/styles.ts | 2 +- .../{dtos => types}/ContainerProps.ts | 0 .../EntityImage/{dtos => types}/index.ts | 0 src/containers/EntityImageList/index.stories.tsx | 2 +- src/containers/EntityImageList/index.tsx | 2 +- .../EntityImageList/{dtos => types}/index.ts | 2 +- src/containers/EntitySummary/index.tsx | 2 +- src/containers/EntitySummary/styles.ts | 2 +- .../{dtos => types}/ContainerProps.ts | 0 .../EntitySummary/{dtos => types}/index.ts | 0 src/containers/EntitySummaryList/index.tsx | 2 +- .../EntitySummaryList/{dtos => types}/index.ts | 0 src/containers/Filmography/index.tsx | 2 +- .../Filmography/{dtos => types}/index.ts | 0 src/containers/Highlights/index.stories.tsx | 2 +- src/containers/Highlights/index.tsx | 2 +- .../Highlights/{dtos => types}/index.ts | 0 src/domains/Auth/api/PostAuth/index.ts | 6 +++--- .../Auth/api/PostAuth/{ => types}/RawResponse.ts | 0 .../Auth/api/PostAuth/{ => types}/Response.ts | 0 src/domains/Auth/hooks/index.tsx | 4 ++-- src/domains/Auth/{dtos => types}/AuthState.ts | 0 src/domains/Auth/{dtos => types}/ContextData.ts | 0 .../Auth/{dtos => types}/LoginCredentials.ts | 0 src/domains/Environment/hooks/index.tsx | 4 ++-- .../Environment/{dtos => types}/ContextData.ts | 2 +- .../Environment/{dtos => types}/Environment.ts | 0 src/domains/Favorites/api/List/index.ts | 4 ++-- .../api/List/{ => types}/RawResponse.ts | 0 .../Favorites/api/List/{ => types}/Response.ts | 4 ++-- src/domains/Favorites/api/Update/index.ts | 4 ++-- .../api/Update/{ => types}/RawResponse.ts | 0 .../Favorites/api/Update/{ => types}/Response.ts | 2 +- src/domains/Favorites/hooks/index.tsx | 6 +++--- .../Favorites/{dtos => types}/ContextData.ts | 4 ++-- .../Favorites/{dtos => types}/Environment.ts | 0 src/domains/Movie/api/Credits/Response.ts | 7 ------- .../Movie/api/Credits/{dtos => types}/Cast.ts | 0 .../Movie/api/Credits/{dtos => types}/Crew.ts | 0 .../Movie/api/Credits/{ => types}/RawResponse.ts | 0 src/domains/Movie/api/Credits/types/Response.ts | 7 +++++++ src/domains/Movie/api/Details/index.ts | 16 ++++++++-------- .../Movie/api/Details/{ => types}/Params.ts | 0 .../Movie/api/Details/{ => types}/RawResponse.ts | 4 ++-- .../Movie/api/Details/{ => types}/Response.ts | 4 ++-- src/domains/Movie/api/NowPlaying/index.ts | 6 +++--- .../Movie/api/NowPlaying/{ => types}/Params.ts | 0 .../api/NowPlaying/{ => types}/RawResponse.ts | 0 .../Movie/api/NowPlaying/{ => types}/Response.ts | 0 src/domains/Movie/api/Popular/index.ts | 6 +++--- .../Movie/api/Popular/{ => types}/Params.ts | 0 .../Movie/api/Popular/{ => types}/RawResponse.ts | 0 .../Movie/api/Popular/{ => types}/Response.ts | 0 src/domains/Movie/api/Recommendations/index.ts | 4 ++-- .../Recommendations/{ => types}/RawResponse.ts | 0 .../api/Recommendations/{ => types}/Response.ts | 0 src/domains/Person/api/Details/index.ts | 8 ++++---- .../Person/api/Details/{ => types}/Movie.ts | 2 +- .../Person/api/Details/{ => types}/Params.ts | 0 .../Person/api/Details/{ => types}/RawMovie.ts | 2 +- .../api/Details/{ => types}/RawResponse.ts | 2 +- .../Person/api/Details/{ => types}/Response.ts | 2 +- src/domains/Search/api/Multi/index.ts | 6 +++--- .../Search/api/Multi/{ => types}/Movie.ts | 2 +- .../Search/api/Multi/{ => types}/Params.ts | 0 .../Search/api/Multi/{ => types}/RawMovie.ts | 2 +- .../Search/api/Multi/{ => types}/RawResponse.ts | 2 +- .../Search/api/Multi/{ => types}/Response.ts | 2 +- src/domains/Tv/api/Credits/Response.ts | 7 ------- .../Tv/api/Credits/{dtos => types}/Cast.ts | 0 .../Tv/api/Credits/{dtos => types}/Crew.ts | 0 .../Tv/api/Credits/{ => types}/RawResponse.ts | 0 src/domains/Tv/api/Credits/types/Response.ts | 7 +++++++ src/domains/Tv/api/Details/index.ts | 16 ++++++++-------- src/domains/Tv/api/Details/{ => types}/Params.ts | 0 .../Tv/api/Details/{ => types}/RawResponse.ts | 4 ++-- .../Tv/api/Details/{ => types}/Response.ts | 4 ++-- src/domains/Tv/api/Popular/index.ts | 6 +++--- src/domains/Tv/api/Popular/{ => types}/Params.ts | 0 .../Tv/api/Popular/{ => types}/RawResponse.ts | 0 .../Tv/api/Popular/{ => types}/Response.ts | 0 .../Recommendations/{ => types}/RawResponse.ts | 0 .../api/Recommendations/{ => types}/Response.ts | 0 src/pages/Home/index.tsx | 4 ++-- src/pages/Movie/index.tsx | 2 +- src/pages/Person/index.tsx | 2 +- src/pages/Tv/index.tsx | 2 +- src/shared/utils/formatDate.ts | 2 +- src/shared/utils/formatTmdbImage.ts | 2 +- src/shared/utils/{dtos => types}/FormatDate.ts | 0 .../utils/{dtos => types}/FormatTmdbImage.ts | 0 104 files changed, 110 insertions(+), 110 deletions(-) rename src/components/Button/{dtos => types}/index.ts (100%) rename src/components/Input/{dtos => types}/index.ts (100%) rename src/components/MovieHighlight/{dtos => types}/index.ts (100%) rename src/components/Tooltip/{dtos => types}/index.ts (100%) rename src/containers/EntityImage/{dtos => types}/ContainerProps.ts (100%) rename src/containers/EntityImage/{dtos => types}/index.ts (100%) rename src/containers/EntityImageList/{dtos => types}/index.ts (83%) rename src/containers/EntitySummary/{dtos => types}/ContainerProps.ts (100%) rename src/containers/EntitySummary/{dtos => types}/index.ts (100%) rename src/containers/EntitySummaryList/{dtos => types}/index.ts (100%) rename src/containers/Filmography/{dtos => types}/index.ts (100%) rename src/containers/Highlights/{dtos => types}/index.ts (100%) rename src/domains/Auth/api/PostAuth/{ => types}/RawResponse.ts (100%) rename src/domains/Auth/api/PostAuth/{ => types}/Response.ts (100%) rename src/domains/Auth/{dtos => types}/AuthState.ts (100%) rename src/domains/Auth/{dtos => types}/ContextData.ts (100%) rename src/domains/Auth/{dtos => types}/LoginCredentials.ts (100%) rename src/domains/Environment/{dtos => types}/ContextData.ts (60%) rename src/domains/Environment/{dtos => types}/Environment.ts (100%) rename src/domains/Favorites/api/List/{ => types}/RawResponse.ts (100%) rename src/domains/Favorites/api/List/{ => types}/Response.ts (56%) rename src/domains/Favorites/api/Update/{ => types}/RawResponse.ts (100%) rename src/domains/Favorites/api/Update/{ => types}/Response.ts (65%) rename src/domains/Favorites/{dtos => types}/ContextData.ts (69%) rename src/domains/Favorites/{dtos => types}/Environment.ts (100%) delete mode 100644 src/domains/Movie/api/Credits/Response.ts rename src/domains/Movie/api/Credits/{dtos => types}/Cast.ts (100%) rename src/domains/Movie/api/Credits/{dtos => types}/Crew.ts (100%) rename src/domains/Movie/api/Credits/{ => types}/RawResponse.ts (100%) create mode 100644 src/domains/Movie/api/Credits/types/Response.ts rename src/domains/Movie/api/Details/{ => types}/Params.ts (100%) rename src/domains/Movie/api/Details/{ => types}/RawResponse.ts (78%) rename src/domains/Movie/api/Details/{ => types}/Response.ts (80%) rename src/domains/Movie/api/NowPlaying/{ => types}/Params.ts (100%) rename src/domains/Movie/api/NowPlaying/{ => types}/RawResponse.ts (100%) rename src/domains/Movie/api/NowPlaying/{ => types}/Response.ts (100%) rename src/domains/Movie/api/Popular/{ => types}/Params.ts (100%) rename src/domains/Movie/api/Popular/{ => types}/RawResponse.ts (100%) rename src/domains/Movie/api/Popular/{ => types}/Response.ts (100%) rename src/domains/Movie/api/Recommendations/{ => types}/RawResponse.ts (100%) rename src/domains/Movie/api/Recommendations/{ => types}/Response.ts (100%) rename src/domains/Person/api/Details/{ => types}/Movie.ts (70%) rename src/domains/Person/api/Details/{ => types}/Params.ts (100%) rename src/domains/Person/api/Details/{ => types}/RawMovie.ts (72%) rename src/domains/Person/api/Details/{ => types}/RawResponse.ts (87%) rename src/domains/Person/api/Details/{ => types}/Response.ts (90%) rename src/domains/Search/api/Multi/{ => types}/Movie.ts (70%) rename src/domains/Search/api/Multi/{ => types}/Params.ts (100%) rename src/domains/Search/api/Multi/{ => types}/RawMovie.ts (84%) rename src/domains/Search/api/Multi/{ => types}/RawResponse.ts (89%) rename src/domains/Search/api/Multi/{ => types}/Response.ts (88%) delete mode 100644 src/domains/Tv/api/Credits/Response.ts rename src/domains/Tv/api/Credits/{dtos => types}/Cast.ts (100%) rename src/domains/Tv/api/Credits/{dtos => types}/Crew.ts (100%) rename src/domains/Tv/api/Credits/{ => types}/RawResponse.ts (100%) create mode 100644 src/domains/Tv/api/Credits/types/Response.ts rename src/domains/Tv/api/Details/{ => types}/Params.ts (100%) rename src/domains/Tv/api/Details/{ => types}/RawResponse.ts (77%) rename src/domains/Tv/api/Details/{ => types}/Response.ts (79%) rename src/domains/Tv/api/Popular/{ => types}/Params.ts (100%) rename src/domains/Tv/api/Popular/{ => types}/RawResponse.ts (100%) rename src/domains/Tv/api/Popular/{ => types}/Response.ts (100%) rename src/domains/Tv/api/Recommendations/{ => types}/RawResponse.ts (100%) rename src/domains/Tv/api/Recommendations/{ => types}/Response.ts (100%) rename src/shared/utils/{dtos => types}/FormatDate.ts (100%) rename src/shared/utils/{dtos => types}/FormatTmdbImage.ts (100%) diff --git a/src/components/Button/index.stories.tsx b/src/components/Button/index.stories.tsx index 2d898e1..2dddb3e 100644 --- a/src/components/Button/index.stories.tsx +++ b/src/components/Button/index.stories.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; import { FaRegUserCircle } from 'react-icons/fa'; -import Props from 'components/Button/dtos'; +import Props from 'components/Button/types'; import Button from 'components/Button'; // Config and Controls diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx index b6e5818..e6068e9 100644 --- a/src/components/Button/index.tsx +++ b/src/components/Button/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { Color } from 'shared/enums'; -import Props from './dtos'; +import Props from './types'; import { Container } from './styles'; const Button: React.FC = ({ diff --git a/src/components/Button/dtos/index.ts b/src/components/Button/types/index.ts similarity index 100% rename from src/components/Button/dtos/index.ts rename to src/components/Button/types/index.ts diff --git a/src/components/Input/index.stories.tsx b/src/components/Input/index.stories.tsx index 691beac..729db9e 100644 --- a/src/components/Input/index.stories.tsx +++ b/src/components/Input/index.stories.tsx @@ -4,7 +4,7 @@ import { FormHandles } from '@unform/core'; import { Form } from '@unform/web'; import { FaRegUserCircle } from 'react-icons/fa'; -import Props from 'components/Input/dtos'; +import Props from 'components/Input/types'; import Input from 'components/Input'; // Config and Controls diff --git a/src/components/Input/index.tsx b/src/components/Input/index.tsx index 43ebde3..ca411c8 100644 --- a/src/components/Input/index.tsx +++ b/src/components/Input/index.tsx @@ -3,7 +3,7 @@ import { FiAlertTriangle } from 'react-icons/fi'; import { useField } from '@unform/core'; import { Color } from 'shared/enums'; -import Props from './dtos'; +import Props from './types'; import { Container, Error } from './styles'; const Input: React.FC = ({ diff --git a/src/components/Input/dtos/index.ts b/src/components/Input/types/index.ts similarity index 100% rename from src/components/Input/dtos/index.ts rename to src/components/Input/types/index.ts diff --git a/src/components/MovieHighlight/index.stories.tsx b/src/components/MovieHighlight/index.stories.tsx index d0c399b..c9b3933 100644 --- a/src/components/MovieHighlight/index.stories.tsx +++ b/src/components/MovieHighlight/index.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'components/MovieHighlight/dtos'; +import Props from 'components/MovieHighlight/types'; import MovieHighlight from 'components/MovieHighlight'; // Config and Controls diff --git a/src/components/MovieHighlight/index.tsx b/src/components/MovieHighlight/index.tsx index b673cff..38f5953 100644 --- a/src/components/MovieHighlight/index.tsx +++ b/src/components/MovieHighlight/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import Route from 'routes/enums'; -import Props from './dtos'; +import Props from './types'; import { Container, Backdrop, Caption, Title, Overview } from './styles'; const MovieHighlight: React.FC = ({ showOverview = true, ...movie }) => { diff --git a/src/components/MovieHighlight/dtos/index.ts b/src/components/MovieHighlight/types/index.ts similarity index 100% rename from src/components/MovieHighlight/dtos/index.ts rename to src/components/MovieHighlight/types/index.ts diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx index 08fad7e..82cae85 100644 --- a/src/components/Tooltip/index.tsx +++ b/src/components/Tooltip/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import TooltipProps from 'components/Tooltip/dtos'; +import TooltipProps from 'components/Tooltip/types'; import { Container, Content } from './styles'; const Tooltip: React.FC = ({ value, children, ...rest }) => { diff --git a/src/components/Tooltip/dtos/index.ts b/src/components/Tooltip/types/index.ts similarity index 100% rename from src/components/Tooltip/dtos/index.ts rename to src/components/Tooltip/types/index.ts diff --git a/src/containers/EntityImage/index.stories.tsx b/src/containers/EntityImage/index.stories.tsx index 9fa49b7..c34e209 100644 --- a/src/containers/EntityImage/index.stories.tsx +++ b/src/containers/EntityImage/index.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'containers/EntityImage/dtos'; +import Props from 'containers/EntityImage/types'; import { EntityImage } from 'containers'; // Config and Controls diff --git a/src/containers/EntityImage/index.tsx b/src/containers/EntityImage/index.tsx index b0d26fa..1393f16 100644 --- a/src/containers/EntityImage/index.tsx +++ b/src/containers/EntityImage/index.tsx @@ -16,7 +16,7 @@ import { InfoSubtitle, } from './styles'; -import Props from './dtos'; +import Props from './types'; const EntityImage: React.FC = ({ size, diff --git a/src/containers/EntityImage/styles.ts b/src/containers/EntityImage/styles.ts index 20bcd23..c960cdc 100644 --- a/src/containers/EntityImage/styles.ts +++ b/src/containers/EntityImage/styles.ts @@ -1,7 +1,7 @@ import styled, { css } from 'styled-components'; import { Color, PosterHeight, PosterWidth, Size } from 'shared/enums'; -import ContainerProps from './dtos/ContainerProps'; +import ContainerProps from './types/ContainerProps'; export const Container = styled.div` position: relative; diff --git a/src/containers/EntityImage/dtos/ContainerProps.ts b/src/containers/EntityImage/types/ContainerProps.ts similarity index 100% rename from src/containers/EntityImage/dtos/ContainerProps.ts rename to src/containers/EntityImage/types/ContainerProps.ts diff --git a/src/containers/EntityImage/dtos/index.ts b/src/containers/EntityImage/types/index.ts similarity index 100% rename from src/containers/EntityImage/dtos/index.ts rename to src/containers/EntityImage/types/index.ts diff --git a/src/containers/EntityImageList/index.stories.tsx b/src/containers/EntityImageList/index.stories.tsx index 9b829fb..07071d5 100644 --- a/src/containers/EntityImageList/index.stories.tsx +++ b/src/containers/EntityImageList/index.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'containers/EntityImageList/dtos'; +import Props from 'containers/EntityImageList/types'; import EntityImageList from 'containers/EntityImageList'; // Config and Controls diff --git a/src/containers/EntityImageList/index.tsx b/src/containers/EntityImageList/index.tsx index 2c9b102..c4e8a67 100644 --- a/src/containers/EntityImageList/index.tsx +++ b/src/containers/EntityImageList/index.tsx @@ -13,7 +13,7 @@ import { MessageContainer, } from './styles'; -import Props from './dtos'; +import Props from './types'; const EntityImageList: React.FC = ({ theme, diff --git a/src/containers/EntityImageList/dtos/index.ts b/src/containers/EntityImageList/types/index.ts similarity index 83% rename from src/containers/EntityImageList/dtos/index.ts rename to src/containers/EntityImageList/types/index.ts index c0613de..62d7646 100644 --- a/src/containers/EntityImageList/dtos/index.ts +++ b/src/containers/EntityImageList/types/index.ts @@ -2,7 +2,7 @@ import DefaultProps from 'shared/dtos'; // import MovieProps from 'containers/EntityImage/dtos'; // import FavoriteProps from 'domains/Favorites/api/List/Response'; import { Color } from 'shared/enums'; -import ContainerProps from 'containers/EntityImage/dtos/ContainerProps'; +import ContainerProps from 'containers/EntityImage/types/ContainerProps'; export default interface Props extends DefaultProps, ContainerProps { title?: string; diff --git a/src/containers/EntitySummary/index.tsx b/src/containers/EntitySummary/index.tsx index ead403e..da7eccd 100644 --- a/src/containers/EntitySummary/index.tsx +++ b/src/containers/EntitySummary/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { getEntityRoute } from 'shared/utils'; -import Props from 'containers/EntitySummary/dtos'; +import Props from 'containers/EntitySummary/types'; import { EntityImage } from 'containers'; import { diff --git a/src/containers/EntitySummary/styles.ts b/src/containers/EntitySummary/styles.ts index 4334752..18bd3b0 100644 --- a/src/containers/EntitySummary/styles.ts +++ b/src/containers/EntitySummary/styles.ts @@ -1,6 +1,6 @@ import styled from 'styled-components'; -import ContainerProps from 'containers/EntitySummary/dtos/ContainerProps'; +import ContainerProps from 'containers/EntitySummary/types/ContainerProps'; import { Color, EntityType, Size } from 'shared/enums'; export const Container = styled.div` diff --git a/src/containers/EntitySummary/dtos/ContainerProps.ts b/src/containers/EntitySummary/types/ContainerProps.ts similarity index 100% rename from src/containers/EntitySummary/dtos/ContainerProps.ts rename to src/containers/EntitySummary/types/ContainerProps.ts diff --git a/src/containers/EntitySummary/dtos/index.ts b/src/containers/EntitySummary/types/index.ts similarity index 100% rename from src/containers/EntitySummary/dtos/index.ts rename to src/containers/EntitySummary/types/index.ts diff --git a/src/containers/EntitySummaryList/index.tsx b/src/containers/EntitySummaryList/index.tsx index 92476bf..e083482 100644 --- a/src/containers/EntitySummaryList/index.tsx +++ b/src/containers/EntitySummaryList/index.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Props from 'containers/EntitySummaryList/dtos'; +import Props from 'containers/EntitySummaryList/types'; import { ReactComponent as Loading } from 'assets/loading.svg'; import { EntitySummary } from 'containers'; diff --git a/src/containers/EntitySummaryList/dtos/index.ts b/src/containers/EntitySummaryList/types/index.ts similarity index 100% rename from src/containers/EntitySummaryList/dtos/index.ts rename to src/containers/EntitySummaryList/types/index.ts diff --git a/src/containers/Filmography/index.tsx b/src/containers/Filmography/index.tsx index d714517..537c68c 100644 --- a/src/containers/Filmography/index.tsx +++ b/src/containers/Filmography/index.tsx @@ -17,7 +17,7 @@ import { MessageContainer, } from './styles'; -import Props from './dtos'; +import Props from './types'; const Filmography: React.FC = ({ theme, diff --git a/src/containers/Filmography/dtos/index.ts b/src/containers/Filmography/types/index.ts similarity index 100% rename from src/containers/Filmography/dtos/index.ts rename to src/containers/Filmography/types/index.ts diff --git a/src/containers/Highlights/index.stories.tsx b/src/containers/Highlights/index.stories.tsx index 978f68e..bb525a2 100644 --- a/src/containers/Highlights/index.stories.tsx +++ b/src/containers/Highlights/index.stories.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Story, Meta } from '@storybook/react'; -import Props from 'containers/Highlights/dtos'; +import Props from 'containers/Highlights/types'; import Highlights from 'containers/Highlights'; // Config and Controls diff --git a/src/containers/Highlights/index.tsx b/src/containers/Highlights/index.tsx index e9daff3..e80354b 100644 --- a/src/containers/Highlights/index.tsx +++ b/src/containers/Highlights/index.tsx @@ -4,7 +4,7 @@ import { Wrapper } from 'components/Layout'; import { MovieHighlight } from 'components'; import { Container, MajorContainer, MinorContainer } from './styles'; -import Props from './dtos'; +import Props from './types'; const Highlights: React.FC = ({ theme, background, color, movies }) => { if (!movies || movies.length === 0) { diff --git a/src/containers/Highlights/dtos/index.ts b/src/containers/Highlights/types/index.ts similarity index 100% rename from src/containers/Highlights/dtos/index.ts rename to src/containers/Highlights/types/index.ts diff --git a/src/domains/Auth/api/PostAuth/index.ts b/src/domains/Auth/api/PostAuth/index.ts index 82ae3fc..8b651b7 100644 --- a/src/domains/Auth/api/PostAuth/index.ts +++ b/src/domains/Auth/api/PostAuth/index.ts @@ -1,6 +1,6 @@ -import RawResponse from 'domains/Auth/api/PostAuth/RawResponse'; -import Response from 'domains/Auth/api/PostAuth/Response'; -import LoginCredentials from 'domains/Auth/dtos/LoginCredentials'; +import RawResponse from 'domains/Auth/api/PostAuth/types/RawResponse'; +import Response from 'domains/Auth/api/PostAuth/types/Response'; +import LoginCredentials from 'domains/Auth/types/LoginCredentials'; import api from 'services/api'; export const postRawAuth = async ({ diff --git a/src/domains/Auth/api/PostAuth/RawResponse.ts b/src/domains/Auth/api/PostAuth/types/RawResponse.ts similarity index 100% rename from src/domains/Auth/api/PostAuth/RawResponse.ts rename to src/domains/Auth/api/PostAuth/types/RawResponse.ts diff --git a/src/domains/Auth/api/PostAuth/Response.ts b/src/domains/Auth/api/PostAuth/types/Response.ts similarity index 100% rename from src/domains/Auth/api/PostAuth/Response.ts rename to src/domains/Auth/api/PostAuth/types/Response.ts diff --git a/src/domains/Auth/hooks/index.tsx b/src/domains/Auth/hooks/index.tsx index d355682..bd62d62 100644 --- a/src/domains/Auth/hooks/index.tsx +++ b/src/domains/Auth/hooks/index.tsx @@ -2,8 +2,8 @@ import React, { createContext, useCallback, useContext, useState } from 'react'; import api from 'services/api'; import { postRawAuth } from 'domains/Auth/api/PostAuth'; -import ContextData from '../dtos/ContextData'; -import AuthState from '../dtos/AuthState'; +import ContextData from '../types/ContextData'; +import AuthState from '../types/AuthState'; const AuthContext = createContext({} as ContextData); diff --git a/src/domains/Auth/dtos/AuthState.ts b/src/domains/Auth/types/AuthState.ts similarity index 100% rename from src/domains/Auth/dtos/AuthState.ts rename to src/domains/Auth/types/AuthState.ts diff --git a/src/domains/Auth/dtos/ContextData.ts b/src/domains/Auth/types/ContextData.ts similarity index 100% rename from src/domains/Auth/dtos/ContextData.ts rename to src/domains/Auth/types/ContextData.ts diff --git a/src/domains/Auth/dtos/LoginCredentials.ts b/src/domains/Auth/types/LoginCredentials.ts similarity index 100% rename from src/domains/Auth/dtos/LoginCredentials.ts rename to src/domains/Auth/types/LoginCredentials.ts diff --git a/src/domains/Environment/hooks/index.tsx b/src/domains/Environment/hooks/index.tsx index b726316..4705ac4 100644 --- a/src/domains/Environment/hooks/index.tsx +++ b/src/domains/Environment/hooks/index.tsx @@ -1,8 +1,8 @@ import React, { createContext, useContext } from 'react'; -import Environment from 'domains/Environment/dtos/Environment'; +import Environment from 'domains/Environment/types/Environment'; import { Environment as EnvironmentEnum } from 'domains/Environment/enums/Environment'; -import ContextData from '../dtos/ContextData'; +import ContextData from '../types/ContextData'; const EnvironmentContext = createContext({} as ContextData); diff --git a/src/domains/Environment/dtos/ContextData.ts b/src/domains/Environment/types/ContextData.ts similarity index 60% rename from src/domains/Environment/dtos/ContextData.ts rename to src/domains/Environment/types/ContextData.ts index ca96932..9fc3247 100644 --- a/src/domains/Environment/dtos/ContextData.ts +++ b/src/domains/Environment/types/ContextData.ts @@ -1,4 +1,4 @@ -import Environment from 'domains/Environment/dtos/Environment'; +import Environment from 'domains/Environment/types/Environment'; export default interface ContextData { isProduction: boolean; diff --git a/src/domains/Environment/dtos/Environment.ts b/src/domains/Environment/types/Environment.ts similarity index 100% rename from src/domains/Environment/dtos/Environment.ts rename to src/domains/Environment/types/Environment.ts diff --git a/src/domains/Favorites/api/List/index.ts b/src/domains/Favorites/api/List/index.ts index 9aa43da..a7a1d8c 100644 --- a/src/domains/Favorites/api/List/index.ts +++ b/src/domains/Favorites/api/List/index.ts @@ -1,8 +1,8 @@ import api from 'services/api'; import { getByType } from 'domains/Favorites/helpers'; -import RawResponse from 'domains/Favorites/api/List/RawResponse'; -import Response from 'domains/Favorites/api/List/Response'; +import RawResponse from 'domains/Favorites/api/List/types/RawResponse'; +import Response from 'domains/Favorites/api/List/types/Response'; const Favorites = async (): Promise => { const response = await rawFavorites(); diff --git a/src/domains/Favorites/api/List/RawResponse.ts b/src/domains/Favorites/api/List/types/RawResponse.ts similarity index 100% rename from src/domains/Favorites/api/List/RawResponse.ts rename to src/domains/Favorites/api/List/types/RawResponse.ts diff --git a/src/domains/Favorites/api/List/Response.ts b/src/domains/Favorites/api/List/types/Response.ts similarity index 56% rename from src/domains/Favorites/api/List/Response.ts rename to src/domains/Favorites/api/List/types/Response.ts index a85a12e..4e28d91 100644 --- a/src/domains/Favorites/api/List/Response.ts +++ b/src/domains/Favorites/api/List/types/Response.ts @@ -1,5 +1,5 @@ -import MovieResponse from 'domains/Movie/api/Details/Response'; -import PersonResponse from 'domains/Person/api/Details/Response'; +import MovieResponse from 'domains/Movie/api/Details/types/Response'; +import PersonResponse from 'domains/Person/api/Details/types/Response'; export default interface Response extends Omit, diff --git a/src/domains/Favorites/api/Update/index.ts b/src/domains/Favorites/api/Update/index.ts index ef180c2..24e9455 100644 --- a/src/domains/Favorites/api/Update/index.ts +++ b/src/domains/Favorites/api/Update/index.ts @@ -1,8 +1,8 @@ import api from 'services/api'; import { getByType } from 'domains/Favorites/helpers'; -import RawResponse from 'domains/Favorites/api/Update/RawResponse'; -import Response from 'domains/Favorites/api/Update/Response'; +import RawResponse from 'domains/Favorites/api/Update/types/RawResponse'; +import Response from 'domains/Favorites/api/Update/types/Response'; const Update = async ( entityId: number, diff --git a/src/domains/Favorites/api/Update/RawResponse.ts b/src/domains/Favorites/api/Update/types/RawResponse.ts similarity index 100% rename from src/domains/Favorites/api/Update/RawResponse.ts rename to src/domains/Favorites/api/Update/types/RawResponse.ts diff --git a/src/domains/Favorites/api/Update/Response.ts b/src/domains/Favorites/api/Update/types/Response.ts similarity index 65% rename from src/domains/Favorites/api/Update/Response.ts rename to src/domains/Favorites/api/Update/types/Response.ts index 8fbb690..443ee6b 100644 --- a/src/domains/Favorites/api/Update/Response.ts +++ b/src/domains/Favorites/api/Update/types/Response.ts @@ -1,4 +1,4 @@ -import DetailsResponse from 'domains/Movie/api/Details/Response'; +import DetailsResponse from 'domains/Movie/api/Details/types/Response'; export default interface Response extends Omit { favoriteId: string; diff --git a/src/domains/Favorites/hooks/index.tsx b/src/domains/Favorites/hooks/index.tsx index 03c97a0..8b63120 100644 --- a/src/domains/Favorites/hooks/index.tsx +++ b/src/domains/Favorites/hooks/index.tsx @@ -1,12 +1,12 @@ import React, { createContext, useCallback, useContext, useState } from 'react'; -import ListResponse from 'domains/Favorites/api/List/Response'; -import UpdateResponse from 'domains/Favorites/api/Update/Response'; +import ListResponse from 'domains/Favorites/api/List/types/Response'; +import UpdateResponse from 'domains/Favorites/api/Update/types/Response'; import { Favorites as FavoritesApi, UpdateFavorite as UpdateFavoriteApi, } from 'domains/Favorites/api'; -import ContextData from '../dtos/ContextData'; +import ContextData from '../types/ContextData'; const FavoriteContext = createContext({} as ContextData); diff --git a/src/domains/Favorites/dtos/ContextData.ts b/src/domains/Favorites/types/ContextData.ts similarity index 69% rename from src/domains/Favorites/dtos/ContextData.ts rename to src/domains/Favorites/types/ContextData.ts index b2a1a27..4592d6f 100644 --- a/src/domains/Favorites/dtos/ContextData.ts +++ b/src/domains/Favorites/types/ContextData.ts @@ -1,7 +1,7 @@ import { Dispatch, SetStateAction } from 'react'; -import ListResponse from 'domains/Favorites/api/List/Response'; -import UpdateResponse from 'domains/Favorites/api/Update/Response'; +import ListResponse from 'domains/Favorites/api/List/types/Response'; +import UpdateResponse from 'domains/Favorites/api/Update/types/Response'; export default interface ContextData { favoriteList: ListResponse[]; diff --git a/src/domains/Favorites/dtos/Environment.ts b/src/domains/Favorites/types/Environment.ts similarity index 100% rename from src/domains/Favorites/dtos/Environment.ts rename to src/domains/Favorites/types/Environment.ts diff --git a/src/domains/Movie/api/Credits/Response.ts b/src/domains/Movie/api/Credits/Response.ts deleted file mode 100644 index cd876fb..0000000 --- a/src/domains/Movie/api/Credits/Response.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Cast from 'domains/Movie/api/Credits/dtos/Cast'; -import Crew from 'domains/Movie/api/Credits/dtos/Crew'; - -export default interface Response { - cast: Cast[]; - crew: Crew[]; -} diff --git a/src/domains/Movie/api/Credits/dtos/Cast.ts b/src/domains/Movie/api/Credits/types/Cast.ts similarity index 100% rename from src/domains/Movie/api/Credits/dtos/Cast.ts rename to src/domains/Movie/api/Credits/types/Cast.ts diff --git a/src/domains/Movie/api/Credits/dtos/Crew.ts b/src/domains/Movie/api/Credits/types/Crew.ts similarity index 100% rename from src/domains/Movie/api/Credits/dtos/Crew.ts rename to src/domains/Movie/api/Credits/types/Crew.ts diff --git a/src/domains/Movie/api/Credits/RawResponse.ts b/src/domains/Movie/api/Credits/types/RawResponse.ts similarity index 100% rename from src/domains/Movie/api/Credits/RawResponse.ts rename to src/domains/Movie/api/Credits/types/RawResponse.ts diff --git a/src/domains/Movie/api/Credits/types/Response.ts b/src/domains/Movie/api/Credits/types/Response.ts new file mode 100644 index 0000000..3925f7c --- /dev/null +++ b/src/domains/Movie/api/Credits/types/Response.ts @@ -0,0 +1,7 @@ +import Cast from 'domains/Movie/api/Credits/types/Cast'; +import Crew from 'domains/Movie/api/Credits/types/Crew'; + +export default interface Response { + cast: Cast[]; + crew: Crew[]; +} diff --git a/src/domains/Movie/api/Details/index.ts b/src/domains/Movie/api/Details/index.ts index fcab846..b854f20 100644 --- a/src/domains/Movie/api/Details/index.ts +++ b/src/domains/Movie/api/Details/index.ts @@ -11,14 +11,14 @@ import { } from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; -import Params from 'domains/Movie/api/Details/Params'; -import RawResponse from 'domains/Movie/api/Details/RawResponse'; -import Response from 'domains/Movie/api/Details/Response'; -import Recommendations from 'domains/Movie/api/Recommendations/Response'; -import Credits from 'domains/Movie/api/Credits/Response'; - -import Crew from 'domains/Movie/api/Credits/dtos/Crew'; -import Cast from 'domains/Movie/api/Credits/dtos/Cast'; +import Params from 'domains/Movie/api/Details/types/Params'; +import RawResponse from 'domains/Movie/api/Details/types/RawResponse'; +import Response from 'domains/Movie/api/Details/types/Response'; +import Recommendations from 'domains/Movie/api/Recommendations/types/Response'; +import Credits from 'domains/Movie/api/Credits/types/Response'; + +import Crew from 'domains/Movie/api/Credits/types/Crew'; +import Cast from 'domains/Movie/api/Credits/types/Cast'; const Details = async (movieId: number, params?: Params): Promise => { const response = await rawPopular(movieId, params); diff --git a/src/domains/Movie/api/Details/Params.ts b/src/domains/Movie/api/Details/types/Params.ts similarity index 100% rename from src/domains/Movie/api/Details/Params.ts rename to src/domains/Movie/api/Details/types/Params.ts diff --git a/src/domains/Movie/api/Details/RawResponse.ts b/src/domains/Movie/api/Details/types/RawResponse.ts similarity index 78% rename from src/domains/Movie/api/Details/RawResponse.ts rename to src/domains/Movie/api/Details/types/RawResponse.ts index 169e4d0..5e35edd 100644 --- a/src/domains/Movie/api/Details/RawResponse.ts +++ b/src/domains/Movie/api/Details/types/RawResponse.ts @@ -1,5 +1,5 @@ -import Recommendations from 'domains/Movie/api/Recommendations/RawResponse'; -import Credits from 'domains/Movie/api/Credits/RawResponse'; +import Recommendations from 'domains/Movie/api/Recommendations/types/RawResponse'; +import Credits from 'domains/Movie/api/Credits/types/RawResponse'; export default interface RawResponse { poster_path?: string; diff --git a/src/domains/Movie/api/Details/Response.ts b/src/domains/Movie/api/Details/types/Response.ts similarity index 80% rename from src/domains/Movie/api/Details/Response.ts rename to src/domains/Movie/api/Details/types/Response.ts index 4725a6d..686dc32 100644 --- a/src/domains/Movie/api/Details/Response.ts +++ b/src/domains/Movie/api/Details/types/Response.ts @@ -1,5 +1,5 @@ -import Recommendations from 'domains/Movie/api/Recommendations/Response'; -import Credits from 'domains/Movie/api/Credits/Response'; +import Recommendations from 'domains/Movie/api/Recommendations/types/Response'; +import Credits from 'domains/Movie/api/Credits/types/Response'; export default interface Response { poster?: string; diff --git a/src/domains/Movie/api/NowPlaying/index.ts b/src/domains/Movie/api/NowPlaying/index.ts index a1b2749..bd87b08 100644 --- a/src/domains/Movie/api/NowPlaying/index.ts +++ b/src/domains/Movie/api/NowPlaying/index.ts @@ -9,9 +9,9 @@ import { } from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; -import Params from 'domains/Movie/api/NowPlaying/Params'; -import RawResponse from 'domains/Movie/api/NowPlaying/RawResponse'; -import Response from 'domains/Movie/api/NowPlaying/Response'; +import Params from 'domains/Movie/api/NowPlaying/types/Params'; +import RawResponse from 'domains/Movie/api/NowPlaying/types/RawResponse'; +import Response from 'domains/Movie/api/NowPlaying/types/Response'; const NowPlaying = async (params?: Params): Promise => { const response = await rawNowPlaying(params); diff --git a/src/domains/Movie/api/NowPlaying/Params.ts b/src/domains/Movie/api/NowPlaying/types/Params.ts similarity index 100% rename from src/domains/Movie/api/NowPlaying/Params.ts rename to src/domains/Movie/api/NowPlaying/types/Params.ts diff --git a/src/domains/Movie/api/NowPlaying/RawResponse.ts b/src/domains/Movie/api/NowPlaying/types/RawResponse.ts similarity index 100% rename from src/domains/Movie/api/NowPlaying/RawResponse.ts rename to src/domains/Movie/api/NowPlaying/types/RawResponse.ts diff --git a/src/domains/Movie/api/NowPlaying/Response.ts b/src/domains/Movie/api/NowPlaying/types/Response.ts similarity index 100% rename from src/domains/Movie/api/NowPlaying/Response.ts rename to src/domains/Movie/api/NowPlaying/types/Response.ts diff --git a/src/domains/Movie/api/Popular/index.ts b/src/domains/Movie/api/Popular/index.ts index 2236106..a0eea03 100644 --- a/src/domains/Movie/api/Popular/index.ts +++ b/src/domains/Movie/api/Popular/index.ts @@ -9,9 +9,9 @@ import { } from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; -import Params from 'domains/Movie/api/Popular/Params'; -import RawResponse from 'domains/Movie/api/Popular/RawResponse'; -import Response from 'domains/Movie/api/Popular/Response'; +import Params from 'domains/Movie/api/Popular/types/Params'; +import RawResponse from 'domains/Movie/api/Popular/types/RawResponse'; +import Response from 'domains/Movie/api/Popular/types/Response'; const Popular = async (params?: Params): Promise => { const response = await rawPopular(params); diff --git a/src/domains/Movie/api/Popular/Params.ts b/src/domains/Movie/api/Popular/types/Params.ts similarity index 100% rename from src/domains/Movie/api/Popular/Params.ts rename to src/domains/Movie/api/Popular/types/Params.ts diff --git a/src/domains/Movie/api/Popular/RawResponse.ts b/src/domains/Movie/api/Popular/types/RawResponse.ts similarity index 100% rename from src/domains/Movie/api/Popular/RawResponse.ts rename to src/domains/Movie/api/Popular/types/RawResponse.ts diff --git a/src/domains/Movie/api/Popular/Response.ts b/src/domains/Movie/api/Popular/types/Response.ts similarity index 100% rename from src/domains/Movie/api/Popular/Response.ts rename to src/domains/Movie/api/Popular/types/Response.ts diff --git a/src/domains/Movie/api/Recommendations/index.ts b/src/domains/Movie/api/Recommendations/index.ts index 53ab239..fd81ddd 100644 --- a/src/domains/Movie/api/Recommendations/index.ts +++ b/src/domains/Movie/api/Recommendations/index.ts @@ -3,8 +3,8 @@ import tmdb from 'services/api/tmdb'; import { formatDate, formatTmdbImage } from 'shared/utils'; import { EntityType } from 'shared/enums'; -import RawResponse from 'domains/Movie/api/Recommendations/RawResponse'; -import Response from 'domains/Movie/api/Recommendations/Response'; +import RawResponse from 'domains/Movie/api/Recommendations/types/RawResponse'; +import Response from 'domains/Movie/api/Recommendations/types/Response'; const Recommendations = async (movieId: number): Promise => { const response = await rawPopular(movieId); diff --git a/src/domains/Movie/api/Recommendations/RawResponse.ts b/src/domains/Movie/api/Recommendations/types/RawResponse.ts similarity index 100% rename from src/domains/Movie/api/Recommendations/RawResponse.ts rename to src/domains/Movie/api/Recommendations/types/RawResponse.ts diff --git a/src/domains/Movie/api/Recommendations/Response.ts b/src/domains/Movie/api/Recommendations/types/Response.ts similarity index 100% rename from src/domains/Movie/api/Recommendations/Response.ts rename to src/domains/Movie/api/Recommendations/types/Response.ts diff --git a/src/domains/Person/api/Details/index.ts b/src/domains/Person/api/Details/index.ts index 38cfa65..31b0113 100644 --- a/src/domains/Person/api/Details/index.ts +++ b/src/domains/Person/api/Details/index.ts @@ -13,10 +13,10 @@ import { getTitle, } from 'shared/utils/Entity'; -import Params from 'domains/Person/api/Details/Params'; -import RawResponse from 'domains/Person/api/Details/RawResponse'; -import Response from 'domains/Person/api/Details/Response'; -import Movie from 'domains/Person/api/Details/Movie'; +import Params from 'domains/Person/api/Details/types/Params'; +import RawResponse from 'domains/Person/api/Details/types/RawResponse'; +import Response from 'domains/Person/api/Details/types/Response'; +import Movie from 'domains/Person/api/Details/types/Movie'; const Details = async ( personId: number, diff --git a/src/domains/Person/api/Details/Movie.ts b/src/domains/Person/api/Details/types/Movie.ts similarity index 70% rename from src/domains/Person/api/Details/Movie.ts rename to src/domains/Person/api/Details/types/Movie.ts index 93362b9..e3b4ec8 100644 --- a/src/domains/Person/api/Details/Movie.ts +++ b/src/domains/Person/api/Details/types/Movie.ts @@ -1,4 +1,4 @@ -import MovieDetails from 'domains/Movie/api/Details/Response'; +import MovieDetails from 'domains/Movie/api/Details/types/Response'; export default interface Movie extends MovieDetails { character: string; diff --git a/src/domains/Person/api/Details/Params.ts b/src/domains/Person/api/Details/types/Params.ts similarity index 100% rename from src/domains/Person/api/Details/Params.ts rename to src/domains/Person/api/Details/types/Params.ts diff --git a/src/domains/Person/api/Details/RawMovie.ts b/src/domains/Person/api/Details/types/RawMovie.ts similarity index 72% rename from src/domains/Person/api/Details/RawMovie.ts rename to src/domains/Person/api/Details/types/RawMovie.ts index 85b71ab..fd08f6a 100644 --- a/src/domains/Person/api/Details/RawMovie.ts +++ b/src/domains/Person/api/Details/types/RawMovie.ts @@ -1,4 +1,4 @@ -import RawMovieDetails from 'domains/Movie/api/Details/RawResponse'; +import RawMovieDetails from 'domains/Movie/api/Details/types/RawResponse'; export default interface RawMovie extends RawMovieDetails { character: string; diff --git a/src/domains/Person/api/Details/RawResponse.ts b/src/domains/Person/api/Details/types/RawResponse.ts similarity index 87% rename from src/domains/Person/api/Details/RawResponse.ts rename to src/domains/Person/api/Details/types/RawResponse.ts index 2653590..493a171 100644 --- a/src/domains/Person/api/Details/RawResponse.ts +++ b/src/domains/Person/api/Details/types/RawResponse.ts @@ -1,5 +1,5 @@ // import Recommendations from 'domains/Movie/api/Recommendations/RawResponse'; -import RawMovie from 'domains/Person/api/Details/RawMovie'; +import RawMovie from 'domains/Person/api/Details/types/RawMovie'; export default interface RawResponse { id: number; diff --git a/src/domains/Person/api/Details/Response.ts b/src/domains/Person/api/Details/types/Response.ts similarity index 90% rename from src/domains/Person/api/Details/Response.ts rename to src/domains/Person/api/Details/types/Response.ts index a6cc99f..03b48fa 100644 --- a/src/domains/Person/api/Details/Response.ts +++ b/src/domains/Person/api/Details/types/Response.ts @@ -1,5 +1,5 @@ // import Recommendations from 'domains/Movie/api/Recommendations/Response'; -import Movie from 'domains/Person/api/Details/Movie'; +import Movie from 'domains/Person/api/Details/types/Movie'; export default interface Response { id: number; diff --git a/src/domains/Search/api/Multi/index.ts b/src/domains/Search/api/Multi/index.ts index 1e2c3ea..0895f40 100644 --- a/src/domains/Search/api/Multi/index.ts +++ b/src/domains/Search/api/Multi/index.ts @@ -13,9 +13,9 @@ import { getTitle, } from 'shared/utils/Entity'; -import Params from 'domains/Search/api/Multi/Params'; -import RawResponse from 'domains/Search/api/Multi/RawResponse'; -import Response from 'domains/Search/api/Multi/Response'; +import Params from 'domains/Search/api/Multi/types/Params'; +import RawResponse from 'domains/Search/api/Multi/types/RawResponse'; +import Response from 'domains/Search/api/Multi/types/Response'; const Multi = async (params: Params): Promise => { const response = await rawPopular(params); diff --git a/src/domains/Search/api/Multi/Movie.ts b/src/domains/Search/api/Multi/types/Movie.ts similarity index 70% rename from src/domains/Search/api/Multi/Movie.ts rename to src/domains/Search/api/Multi/types/Movie.ts index 93362b9..e3b4ec8 100644 --- a/src/domains/Search/api/Multi/Movie.ts +++ b/src/domains/Search/api/Multi/types/Movie.ts @@ -1,4 +1,4 @@ -import MovieDetails from 'domains/Movie/api/Details/Response'; +import MovieDetails from 'domains/Movie/api/Details/types/Response'; export default interface Movie extends MovieDetails { character: string; diff --git a/src/domains/Search/api/Multi/Params.ts b/src/domains/Search/api/Multi/types/Params.ts similarity index 100% rename from src/domains/Search/api/Multi/Params.ts rename to src/domains/Search/api/Multi/types/Params.ts diff --git a/src/domains/Search/api/Multi/RawMovie.ts b/src/domains/Search/api/Multi/types/RawMovie.ts similarity index 84% rename from src/domains/Search/api/Multi/RawMovie.ts rename to src/domains/Search/api/Multi/types/RawMovie.ts index fb5ffa9..9e5feb7 100644 --- a/src/domains/Search/api/Multi/RawMovie.ts +++ b/src/domains/Search/api/Multi/types/RawMovie.ts @@ -1,4 +1,4 @@ -import RawMovieDetails from 'domains/Movie/api/Details/RawResponse'; +import RawMovieDetails from 'domains/Movie/api/Details/types/RawResponse'; export default interface RawMovie extends RawMovieDetails { poster_path?: string; diff --git a/src/domains/Search/api/Multi/RawResponse.ts b/src/domains/Search/api/Multi/types/RawResponse.ts similarity index 89% rename from src/domains/Search/api/Multi/RawResponse.ts rename to src/domains/Search/api/Multi/types/RawResponse.ts index 5ca6a8f..b2b12e4 100644 --- a/src/domains/Search/api/Multi/RawResponse.ts +++ b/src/domains/Search/api/Multi/types/RawResponse.ts @@ -1,5 +1,5 @@ // import Recommendations from 'domains/Movie/api/Recommendations/RawResponse'; -import RawMovie from 'domains/Person/api/Details/RawMovie'; +import RawMovie from 'domains/Person/api/Details/types/RawMovie'; export default interface RawResponse { poster_path?: string; diff --git a/src/domains/Search/api/Multi/Response.ts b/src/domains/Search/api/Multi/types/Response.ts similarity index 88% rename from src/domains/Search/api/Multi/Response.ts rename to src/domains/Search/api/Multi/types/Response.ts index 7e944e7..afe5c54 100644 --- a/src/domains/Search/api/Multi/Response.ts +++ b/src/domains/Search/api/Multi/types/Response.ts @@ -1,5 +1,5 @@ // import Recommendations from 'domains/Movie/api/Recommendations/Response'; -import Movie from 'domains/Person/api/Details/Movie'; +import Movie from 'domains/Person/api/Details/types/Movie'; export default interface Response { poster?: string; diff --git a/src/domains/Tv/api/Credits/Response.ts b/src/domains/Tv/api/Credits/Response.ts deleted file mode 100644 index 37fc3d9..0000000 --- a/src/domains/Tv/api/Credits/Response.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Cast from 'domains/Tv/api/Credits/dtos/Cast'; -import Crew from 'domains/Tv/api/Credits/dtos/Crew'; - -export default interface Response { - cast: Cast[]; - crew: Crew[]; -} diff --git a/src/domains/Tv/api/Credits/dtos/Cast.ts b/src/domains/Tv/api/Credits/types/Cast.ts similarity index 100% rename from src/domains/Tv/api/Credits/dtos/Cast.ts rename to src/domains/Tv/api/Credits/types/Cast.ts diff --git a/src/domains/Tv/api/Credits/dtos/Crew.ts b/src/domains/Tv/api/Credits/types/Crew.ts similarity index 100% rename from src/domains/Tv/api/Credits/dtos/Crew.ts rename to src/domains/Tv/api/Credits/types/Crew.ts diff --git a/src/domains/Tv/api/Credits/RawResponse.ts b/src/domains/Tv/api/Credits/types/RawResponse.ts similarity index 100% rename from src/domains/Tv/api/Credits/RawResponse.ts rename to src/domains/Tv/api/Credits/types/RawResponse.ts diff --git a/src/domains/Tv/api/Credits/types/Response.ts b/src/domains/Tv/api/Credits/types/Response.ts new file mode 100644 index 0000000..91332d6 --- /dev/null +++ b/src/domains/Tv/api/Credits/types/Response.ts @@ -0,0 +1,7 @@ +import Cast from 'domains/Tv/api/Credits/types/Cast'; +import Crew from 'domains/Tv/api/Credits/types/Crew'; + +export default interface Response { + cast: Cast[]; + crew: Crew[]; +} diff --git a/src/domains/Tv/api/Details/index.ts b/src/domains/Tv/api/Details/index.ts index 0fde977..d48ac81 100644 --- a/src/domains/Tv/api/Details/index.ts +++ b/src/domains/Tv/api/Details/index.ts @@ -11,14 +11,14 @@ import { } from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; -import Params from 'domains/Tv/api/Details/Params'; -import RawResponse from 'domains/Tv/api/Details/RawResponse'; -import Response from 'domains/Tv/api/Details/Response'; -import Recommendations from 'domains/Tv/api/Recommendations/Response'; -import Credits from 'domains/Tv/api/Credits/Response'; - -import Crew from 'domains/Tv/api/Credits/dtos/Crew'; -import Cast from 'domains/Tv/api/Credits/dtos/Cast'; +import Params from 'domains/Tv/api/Details/types/Params'; +import RawResponse from 'domains/Tv/api/Details/types/RawResponse'; +import Response from 'domains/Tv/api/Details/types/Response'; +import Recommendations from 'domains/Tv/api/Recommendations/types/Response'; +import Credits from 'domains/Tv/api/Credits/types/Response'; + +import Crew from 'domains/Tv/api/Credits/types/Crew'; +import Cast from 'domains/Tv/api/Credits/types/Cast'; const Details = async (tvId: number, params?: Params): Promise => { const response = await rawPopular(tvId, params); diff --git a/src/domains/Tv/api/Details/Params.ts b/src/domains/Tv/api/Details/types/Params.ts similarity index 100% rename from src/domains/Tv/api/Details/Params.ts rename to src/domains/Tv/api/Details/types/Params.ts diff --git a/src/domains/Tv/api/Details/RawResponse.ts b/src/domains/Tv/api/Details/types/RawResponse.ts similarity index 77% rename from src/domains/Tv/api/Details/RawResponse.ts rename to src/domains/Tv/api/Details/types/RawResponse.ts index 32511cd..98ec1a9 100644 --- a/src/domains/Tv/api/Details/RawResponse.ts +++ b/src/domains/Tv/api/Details/types/RawResponse.ts @@ -1,5 +1,5 @@ -import Recommendations from 'domains/Tv/api/Recommendations/RawResponse'; -import Credits from 'domains/Tv/api/Credits/RawResponse'; +import Recommendations from 'domains/Tv/api/Recommendations/types/RawResponse'; +import Credits from 'domains/Tv/api/Credits/types/RawResponse'; export default interface RawResponse { poster_path?: string; diff --git a/src/domains/Tv/api/Details/Response.ts b/src/domains/Tv/api/Details/types/Response.ts similarity index 79% rename from src/domains/Tv/api/Details/Response.ts rename to src/domains/Tv/api/Details/types/Response.ts index 59380d7..c4d61ed 100644 --- a/src/domains/Tv/api/Details/Response.ts +++ b/src/domains/Tv/api/Details/types/Response.ts @@ -1,5 +1,5 @@ -import Recommendations from 'domains/Movie/api/Recommendations/Response'; -import Credits from 'domains/Movie/api/Credits/Response'; +import Recommendations from 'domains/Movie/api/Recommendations/types/Response'; +import Credits from 'domains/Movie/api/Credits/types/Response'; export default interface Response { backdrop?: string; diff --git a/src/domains/Tv/api/Popular/index.ts b/src/domains/Tv/api/Popular/index.ts index db9b00a..5cd87e2 100644 --- a/src/domains/Tv/api/Popular/index.ts +++ b/src/domains/Tv/api/Popular/index.ts @@ -9,9 +9,9 @@ import { } from 'shared/utils/Entity'; import { EntityType } from 'shared/enums'; -import Params from 'domains/Tv/api/Popular/Params'; -import RawResponse from 'domains/Tv/api/Popular/RawResponse'; -import Response from 'domains/Tv/api/Popular/Response'; +import Params from 'domains/Tv/api/Popular/types/Params'; +import RawResponse from 'domains/Tv/api/Popular/types/RawResponse'; +import Response from 'domains/Tv/api/Popular/types/Response'; const Popular = async (params?: Params): Promise => { const response = await rawPopular(params); diff --git a/src/domains/Tv/api/Popular/Params.ts b/src/domains/Tv/api/Popular/types/Params.ts similarity index 100% rename from src/domains/Tv/api/Popular/Params.ts rename to src/domains/Tv/api/Popular/types/Params.ts diff --git a/src/domains/Tv/api/Popular/RawResponse.ts b/src/domains/Tv/api/Popular/types/RawResponse.ts similarity index 100% rename from src/domains/Tv/api/Popular/RawResponse.ts rename to src/domains/Tv/api/Popular/types/RawResponse.ts diff --git a/src/domains/Tv/api/Popular/Response.ts b/src/domains/Tv/api/Popular/types/Response.ts similarity index 100% rename from src/domains/Tv/api/Popular/Response.ts rename to src/domains/Tv/api/Popular/types/Response.ts diff --git a/src/domains/Tv/api/Recommendations/RawResponse.ts b/src/domains/Tv/api/Recommendations/types/RawResponse.ts similarity index 100% rename from src/domains/Tv/api/Recommendations/RawResponse.ts rename to src/domains/Tv/api/Recommendations/types/RawResponse.ts diff --git a/src/domains/Tv/api/Recommendations/Response.ts b/src/domains/Tv/api/Recommendations/types/Response.ts similarity index 100% rename from src/domains/Tv/api/Recommendations/Response.ts rename to src/domains/Tv/api/Recommendations/types/Response.ts diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 86ded55..a67eae6 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -5,8 +5,8 @@ import { useAuth } from 'domains/Auth/hooks'; import { useFavorite } from 'domains/Favorites/hooks'; import { NowPlaying, Popular } from 'domains/Movie/api'; import { Popular as TvPopular } from 'domains/Tv/api'; -import MovieResponse from 'domains/Movie/api/Popular/Response'; -import TvPopularResponse from 'domains/Tv/api/Popular/Response'; +import MovieResponse from 'domains/Movie/api/Popular/types/Response'; +import TvPopularResponse from 'domains/Tv/api/Popular/types/Response'; import { ColumnLayout } from 'components'; import { Footer, Header, Highlights, EntityImageList } from 'containers'; diff --git a/src/pages/Movie/index.tsx b/src/pages/Movie/index.tsx index 937d8f5..c6d9792 100644 --- a/src/pages/Movie/index.tsx +++ b/src/pages/Movie/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import Params from 'pages/Movie/dtos/Params'; -import MovieDetails from 'domains/Movie/api/Details/Response'; +import MovieDetails from 'domains/Movie/api/Details/types/Response'; import { Color } from 'shared/enums'; import { Details } from 'domains/Movie/api'; import { useAuth } from 'domains/Auth/hooks'; diff --git a/src/pages/Person/index.tsx b/src/pages/Person/index.tsx index 9fc8bb3..ddb8b83 100644 --- a/src/pages/Person/index.tsx +++ b/src/pages/Person/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import Params from 'pages/Person/dtos/Params'; -import PersonDetails from 'domains/Person/api/Details/Response'; +import PersonDetails from 'domains/Person/api/Details/types/Response'; import { Color } from 'shared/enums'; import { Details } from 'domains/Person/api'; import { useAuth } from 'domains/Auth/hooks'; diff --git a/src/pages/Tv/index.tsx b/src/pages/Tv/index.tsx index c9ae946..0b06d9a 100644 --- a/src/pages/Tv/index.tsx +++ b/src/pages/Tv/index.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import Params from 'pages/Tv/dtos/Params'; -import MovieDetails from 'domains/Tv/api/Details/Response'; +import MovieDetails from 'domains/Tv/api/Details/types/Response'; import { Color } from 'shared/enums'; import { Details } from 'domains/Tv/api'; import { useAuth } from 'domains/Auth/hooks'; diff --git a/src/shared/utils/formatDate.ts b/src/shared/utils/formatDate.ts index cd3c1c8..eae83a4 100644 --- a/src/shared/utils/formatDate.ts +++ b/src/shared/utils/formatDate.ts @@ -1,4 +1,4 @@ -import FormatDate from 'shared/utils/dtos/FormatDate'; +import FormatDate from 'shared/utils/types/FormatDate'; const formatDate = ({ value }: FormatDate): string => { if (!value) { diff --git a/src/shared/utils/formatTmdbImage.ts b/src/shared/utils/formatTmdbImage.ts index a073874..ce451b7 100644 --- a/src/shared/utils/formatTmdbImage.ts +++ b/src/shared/utils/formatTmdbImage.ts @@ -1,4 +1,4 @@ -import FormatTmdbImage from 'shared/utils/dtos/FormatTmdbImage'; +import FormatTmdbImage from 'shared/utils/types/FormatTmdbImage'; import TmdbImageSize from 'shared/utils/enums/TmdbImageSize'; const formatTmdbImage = ({ diff --git a/src/shared/utils/dtos/FormatDate.ts b/src/shared/utils/types/FormatDate.ts similarity index 100% rename from src/shared/utils/dtos/FormatDate.ts rename to src/shared/utils/types/FormatDate.ts diff --git a/src/shared/utils/dtos/FormatTmdbImage.ts b/src/shared/utils/types/FormatTmdbImage.ts similarity index 100% rename from src/shared/utils/dtos/FormatTmdbImage.ts rename to src/shared/utils/types/FormatTmdbImage.ts