Add logic for same year not released and fix language string

This commit is contained in:
William Oldham 2024-03-28 13:39:18 +00:00
parent 5b7e0129d9
commit 20202d2216
6 changed files with 39 additions and 20 deletions

View File

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

View File

@ -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(
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),
};
}

View File

@ -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 {
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(
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(
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,
};
}

View File

@ -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[];
};

View File

@ -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 {
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({
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({
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))}`

View File

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