Skip to content

Commit

Permalink
feat: sanitize non entertainment model properties
Browse files Browse the repository at this point in the history
  • Loading branch information
james-wallis committed Dec 14, 2024
1 parent dbcdaaa commit cbd24a1
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 12 deletions.
13 changes: 13 additions & 0 deletions packages/skylarktv/src/lib/utils/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
Entertainment,
Availability,
Credit,
Metadata,
} from "../../types";
import { getImageSrc } from "./classic";
import { LOCAL_STORAGE } from "../../constants/app";
Expand Down Expand Up @@ -578,3 +579,15 @@ export const addCloudinaryOnTheFlyImageTransformation = (
const cloudinaryUrl = `https${cloudinaryDomain}/${CLOUDINARY_ENVIRONMENT}/image/fetch/${urlOptsStr}${urlOptsStr ? "/" : ""}${imageUrl}`;
return cloudinaryUrl;
};

export const useNonSkylarkEntertainmentModelProperty = <T>(
metadata: Metadata | null | undefined,
property: string,
defaultValue?: T,
) => {
if (metadata && hasProperty(metadata, property)) {
return metadata.property as T;
}

return defaultValue;
};
10 changes: 4 additions & 6 deletions packages/skylarktv/src/pages/episode/[...slug].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import {
getGraphQLImageSrc,
getSynopsisByOrderForGraphQLObject,
getTitleByOrderForGraphQLObject,
hasProperty,
splitAndFormatGraphQLCreditsByInternalTitle,
useNonSkylarkEntertainmentModelProperty,
} from "../../lib/utils";
import { Availability, Episode, ImageType } from "../../types/gql";
import { DisplayError } from "../../components/displayError";
Expand Down Expand Up @@ -96,11 +96,9 @@ const EpisodePage: NextPage<{ seo?: SeoObjectData }> = ({ seo }) => {
title={title || seo?.title || "Episode"}
/>
<PlaybackPage
audienceRating={
(hasProperty(episode, "audience_rating") &&
episode?.audience_rating) ||
undefined
}
audienceRating={useNonSkylarkEntertainmentModelProperty<
number | string
>(episode, "audience_rating")}
availabilityEndDate={availabilityEndDate}
brand={
episode?.seasons?.objects?.[0]?.brands?.objects?.[0]
Expand Down
14 changes: 8 additions & 6 deletions packages/skylarktv/src/pages/movie/[slug].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ import {
getGraphQLImageSrc,
getSynopsisByOrderForGraphQLObject,
getTitleByOrderForGraphQLObject,
hasProperty,
splitAndFormatGraphQLCreditsByInternalTitle,
useNonSkylarkEntertainmentModelProperty,
} from "../../lib/utils";
import { Availability, ImageType, Movie } from "../../types/gql";
import { DisplayError } from "../../components/displayError";
Expand Down Expand Up @@ -98,10 +98,9 @@ const MoviePage: NextPage<{ seo: SeoObjectData }> = ({ seo }) => {
title={title || seo?.title || "Movie"}
/>
<PlaybackPage
audienceRating={
(hasProperty(movie, "audience_rating") && movie?.audience_rating) ||
undefined
}
audienceRating={useNonSkylarkEntertainmentModelProperty<
number | string
>(movie, "audience_rating")}
availabilityEndDate={availabilityEndDate}
brand={
firstBrand
Expand All @@ -111,7 +110,10 @@ const MoviePage: NextPage<{ seo: SeoObjectData }> = ({ seo }) => {
}
: undefined
}
budget={(hasProperty(movie, "budget") && movie?.budget) || undefined}
budget={useNonSkylarkEntertainmentModelProperty<number | string>(
movie,
"budget",
)}
credits={splitAndFormatGraphQLCreditsByInternalTitle(
movie?.credits?.objects,
)}
Expand Down

0 comments on commit cbd24a1

Please sign in to comment.