Browse Source

Add logic for same year not released and fix language string

pull/1050/head
William Oldham 1 year ago
parent
commit
20202d2216
  1. 1
      src/assets/locales/en.json
  2. 4
      src/backend/metadata/getmeta.ts
  3. 9
      src/backend/metadata/tmdb.ts
  4. 2
      src/backend/metadata/types/tmdb.ts
  5. 42
      src/components/media/MediaCard.tsx
  6. 1
      src/utils/mediaTypes.ts

1
src/assets/locales/en.json

@ -148,6 +148,7 @@ @@ -148,6 +148,7 @@
},
"media": {
"episodeDisplay": "S{{season}} E{{episode}}",
"unreleased": "Unreleased",
"types": {
"movie": "Movie",
"show": "Show"

4
src/backend/metadata/getmeta.ts

@ -43,7 +43,7 @@ export function formatTMDBMetaResult( @@ -43,7 +43,7 @@ export function formatTMDBMetaResult(
title: movie.title,
object_type: mediaTypeToTMDB(type),
poster: getMediaPoster(movie.poster_path) ?? undefined,
original_release_year: new Date(movie.release_date).getFullYear(),
original_release_date: new Date(movie.release_date),
};
}
if (type === MWMediaType.SERIES) {
@ -58,7 +58,7 @@ export function formatTMDBMetaResult( @@ -58,7 +58,7 @@ export function formatTMDBMetaResult(
title: v.name,
})),
poster: getMediaPoster(show.poster_path) ?? undefined,
original_release_year: new Date(show.first_air_date).getFullYear(),
original_release_date: new Date(show.first_air_date),
};
}

9
src/backend/metadata/tmdb.ts

@ -66,7 +66,7 @@ export function formatTMDBMeta( @@ -66,7 +66,7 @@ export function formatTMDBMeta(
return {
title: media.title,
id: media.id.toString(),
year: media.original_release_year?.toString(),
year: media.original_release_date?.getFullYear()?.toString(),
poster: media.poster,
type,
seasons: seasons as any,
@ -94,7 +94,8 @@ export function formatTMDBMetaToMediaItem(media: TMDBMediaResult): MediaItem { @@ -94,7 +94,8 @@ export function formatTMDBMetaToMediaItem(media: TMDBMediaResult): MediaItem {
return {
title: media.title,
id: media.id.toString(),
year: media.original_release_year ?? 0,
year: media.original_release_date?.getFullYear() ?? 0,
release_date: media.original_release_date,
poster: media.poster,
type,
};
@ -260,7 +261,7 @@ export function formatTMDBSearchResult( @@ -260,7 +261,7 @@ export function formatTMDBSearchResult(
title: show.name,
poster: getMediaPoster(show.poster_path),
id: show.id,
original_release_year: new Date(show.first_air_date).getFullYear(),
original_release_date: new Date(show.first_air_date),
object_type: mediatype,
};
}
@ -271,7 +272,7 @@ export function formatTMDBSearchResult( @@ -271,7 +272,7 @@ export function formatTMDBSearchResult(
title: movie.title,
poster: getMediaPoster(movie.poster_path),
id: movie.id,
original_release_year: new Date(movie.release_date).getFullYear(),
original_release_date: new Date(movie.release_date),
object_type: mediatype,
};
}

2
src/backend/metadata/types/tmdb.ts

@ -20,7 +20,7 @@ export type TMDBMediaResult = { @@ -20,7 +20,7 @@ export type TMDBMediaResult = {
title: string;
poster?: string;
id: number;
original_release_year?: number;
original_release_date?: Date;
object_type: TMDBContentTypes;
seasons?: TMDBSeasonShort[];
};

42
src/components/media/MediaCard.tsx

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
import classNames from "classnames";
import { useCallback } from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router-dom";
@ -24,6 +25,20 @@ export interface MediaCardProps { @@ -24,6 +25,20 @@ export interface MediaCardProps {
onClose?: () => void;
}
function checkReleased(media: MediaItem): boolean {
const isReleasedYear = Boolean(
media.year && media.year <= new Date().getFullYear(),
);
const isReleasedDate = Boolean(
media.release_date && media.release_date <= new Date(),
);
// If the media has a release date, use that, otherwise use the year
const isReleased = media.release_date ? isReleasedDate : isReleasedYear;
return isReleased;
}
function MediaCardContent({
media,
linkable,
@ -35,16 +50,17 @@ function MediaCardContent({ @@ -35,16 +50,17 @@ function MediaCardContent({
const { t } = useTranslation();
const percentageString = `${Math.round(percentage ?? 0).toFixed(0)}%`;
const currentYear = new Date().getFullYear();
const canLink =
linkable && !closable && media.year && media.year <= currentYear;
const isReleased = useCallback(() => checkReleased(media), [media]);
const canLink = linkable && !closable && isReleased();
const dotListContent = [t(`media.types.${media.type}`)];
if (media.year && media.year > currentYear) {
dotListContent.push(`${media.year}`, t("media.unreleased"));
} else if (media.year) {
if (media.year) {
dotListContent.push(media.year.toFixed());
} else {
}
if (!isReleased()) {
dotListContent.push(t("media.unreleased"));
}
@ -150,12 +166,12 @@ function MediaCardContent({ @@ -150,12 +166,12 @@ function MediaCardContent({
export function MediaCard(props: MediaCardProps) {
const content = <MediaCardContent {...props} />;
const currentYear = new Date().getFullYear();
const canLink =
props.linkable &&
!props.closable &&
props.media.year &&
props.media.year <= currentYear;
const isReleased = useCallback(
() => checkReleased(props.media),
[props.media],
);
const canLink = props.linkable && !props.closable && isReleased();
let link = canLink
? `/media/${encodeURIComponent(mediaItemToId(props.media))}`

1
src/utils/mediaTypes.ts

@ -2,6 +2,7 @@ export interface MediaItem { @@ -2,6 +2,7 @@ export interface MediaItem {
id: string;
title: string;
year?: number;
release_date?: Date;
poster?: string;
type: "show" | "movie";
}

Loading…
Cancel
Save