Skip to content

Commit

Permalink
WJ-102 - New: API helpers;
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucas Teixeira committed Nov 7, 2020
1 parent 98f2750 commit f6765e3
Show file tree
Hide file tree
Showing 20 changed files with 235 additions and 121 deletions.
1 change: 0 additions & 1 deletion src/containers/EntityImage/styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ export const FeaturedImage = styled.img<ContainerProps>`
object-fit: cover;
transition: width 0.2s, height 0.2s;
border: 0;
outline
${props =>
props.showInfo &&
Expand Down
42 changes: 25 additions & 17 deletions src/domains/Movie/api/Details/index.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -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,
}),
Expand All @@ -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[];
Expand All @@ -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,
Expand Down
21 changes: 14 additions & 7 deletions src/domains/Movie/api/NowPlaying/index.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -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;
Expand Down
21 changes: 14 additions & 7 deletions src/domains/Movie/api/Popular/index.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -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;
Expand Down
62 changes: 27 additions & 35 deletions src/domains/Person/api/Details/index.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -40,54 +47,39 @@ 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,
} as 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),
}))
Expand Down
52 changes: 21 additions & 31 deletions src/domains/Search/api/Multi/index.ts
Original file line number Diff line number Diff line change
@@ -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<Response[]> => {
const response = await rawPopular(params);
Expand All @@ -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];
Expand Down
Loading

0 comments on commit f6765e3

Please sign in to comment.