feat(frontend/api): tv details page

This commit is contained in:
sct
2020-09-20 14:09:40 +09:00
parent 8f21358f79
commit 02cbb5b030
12 changed files with 953 additions and 51 deletions

View File

@@ -1,31 +1,13 @@
import {
TmdbMovieDetails,
TmdbCreditCast,
TmdbCreditCrew,
} from '../api/themoviedb';
import { TmdbMovieDetails } from '../api/themoviedb';
import { MediaRequest } from '../entity/MediaRequest';
import { ProductionCompany, Genre } from './common';
export interface Cast {
id: number;
castId: number;
character: string;
creditId: string;
gender?: number;
name: string;
order: number;
profilePath?: string;
}
export interface Crew {
id: number;
creditId: string;
department: string;
gender?: number;
job: string;
name: string;
profilePath?: string;
}
import {
ProductionCompany,
Genre,
Cast,
Crew,
mapCast,
mapCrew,
} from './common';
export interface MovieDetails {
id: number;
@@ -65,27 +47,6 @@ export interface MovieDetails {
request?: MediaRequest;
}
const mapCast = (person: TmdbCreditCast): Cast => ({
castId: person.cast_id,
character: person.character,
creditId: person.credit_id,
id: person.id,
name: person.name,
order: person.order,
gender: person.gender,
profilePath: person.profile_path,
});
const mapCrew = (person: TmdbCreditCrew): Crew => ({
creditId: person.credit_id,
department: person.department,
id: person.id,
job: person.job,
name: person.name,
gender: person.gender,
profilePath: person.profile_path,
});
export const mapMovieDetails = (
movie: TmdbMovieDetails,
request?: MediaRequest

View File

@@ -1,4 +1,11 @@
import { Genre, ProductionCompany } from './common';
import {
Genre,
ProductionCompany,
Cast,
Crew,
mapCast,
mapCrew,
} from './common';
import { MediaRequest } from '../entity/MediaRequest';
import {
TmdbTvEpisodeDetails,
@@ -64,6 +71,10 @@ export interface TvDetails {
type: string;
voteAverage: number;
voteCount: number;
credits: {
cast: Cast[];
crew: Crew[];
};
request?: MediaRequest;
}
@@ -140,5 +151,9 @@ export const mapTvDetails = (
? mapEpisodeDetails(show.next_episode_to_air)
: undefined,
posterPath: show.poster_path,
credits: {
cast: show.credits.cast.map(mapCast),
crew: show.credits.crew.map(mapCrew),
},
request,
});

View File

@@ -1,3 +1,5 @@
import { TmdbCreditCast, TmdbCreditCrew } from '../api/themoviedb';
export interface ProductionCompany {
id: number;
logoPath?: string;
@@ -9,3 +11,45 @@ export interface Genre {
id: number;
name: string;
}
export interface Cast {
id: number;
castId: number;
character: string;
creditId: string;
gender?: number;
name: string;
order: number;
profilePath?: string;
}
export interface Crew {
id: number;
creditId: string;
department: string;
gender?: number;
job: string;
name: string;
profilePath?: string;
}
export const mapCast = (person: TmdbCreditCast): Cast => ({
castId: person.cast_id,
character: person.character,
creditId: person.credit_id,
id: person.id,
name: person.name,
order: person.order,
gender: person.gender,
profilePath: person.profile_path,
});
export const mapCrew = (person: TmdbCreditCrew): Crew => ({
creditId: person.credit_id,
department: person.department,
id: person.id,
job: person.job,
name: person.name,
gender: person.gender,
profilePath: person.profile_path,
});