From dba2ba5aa4c04b0cb177ce058257a3a5338e7a21 Mon Sep 17 00:00:00 2001
From: httpjamesm
Date: Mon, 31 Oct 2022 17:37:36 -0400
Subject: [PATCH] feat: fetch images from media proxy on frontend
---
src/components/title/Basic.tsx | 50 ++++++++++++++++-------------
src/components/title/Media.tsx | 50 +++++++++++++++--------------
src/pages/api/media_proxy.ts | 11 ++++---
src/pages/title/[titleId]/index.tsx | 7 +++-
src/utils/helpers.ts | 4 +++
5 files changed, 70 insertions(+), 52 deletions(-)
diff --git a/src/components/title/Basic.tsx b/src/components/title/Basic.tsx
index acc990e..9627e6d 100644
--- a/src/components/title/Basic.tsx
+++ b/src/components/title/Basic.tsx
@@ -1,22 +1,27 @@
-import { Fragment } from 'react';
-import Image from 'next/future/image';
-import Link from 'next/link';
+import { Fragment } from 'react'
+import Image from 'next/future/image'
+import Link from 'next/link'
-import { formatNumber, formatTime, modifyIMDbImg } from '../../utils/helpers';
-import { Basic } from '../../interfaces/shared/title';
-import styles from '../../styles/modules/components/title/basic.module.scss';
+import {
+ formatNumber,
+ formatTime,
+ getProxiedIMDbImgUrl,
+ modifyIMDbImg,
+} from '../../utils/helpers'
+import { Basic } from '../../interfaces/shared/title'
+import styles from '../../styles/modules/components/title/basic.module.scss'
type Props = {
- className: string;
- data: Basic;
-};
+ className: string
+ data: Basic
+}
const Basic = ({ data, className }: Props) => {
- const titleType = data.type.id;
+ const titleType = data.type.id
const releaseTime =
titleType === 'tvSeries'
? `${data.releaseYear?.start}-${data.releaseYear?.end || 'present'}`
- : data.releaseYear?.start;
+ : data.releaseYear?.start
return (
{
className={styles.imageContainer}
style={{
backgroundImage:
- data.poster && `url(${modifyIMDbImg(data.poster.url, 300)})`,
+ data.poster &&
+ `url(${getProxiedIMDbImgUrl(modifyIMDbImg(data.poster.url, 300))})`,
}}
>
{data.poster ? (
@@ -39,11 +45,11 @@ const Basic = ({ data, className }: Props) => {
alt={data.poster.caption}
priority
fill
- sizes='300px'
+ sizes="300px"
/>
) : (
)}
@@ -51,7 +57,7 @@ const Basic = ({ data, className }: Props) => {
{data.title}
-
@@ -93,7 +99,7 @@ const Basic = ({ data, className }: Props) => {
{formatNumber(data.ranking.position)}
{' '}
@@ -130,7 +136,7 @@ const Basic = ({ data, className }: Props) => {
{data.plot || '-'}
}
- {data.primaryCrew.map(crewType => (
+ {data.primaryCrew.map((crewType) => (
{`${crewType.type.category}: `}
@@ -147,7 +153,7 @@ const Basic = ({ data, className }: Props) => {
))}
- );
-};
+ )
+}
-export default Basic;
+export default Basic
diff --git a/src/components/title/Media.tsx b/src/components/title/Media.tsx
index 583aa17..5ef8ade 100644
--- a/src/components/title/Media.tsx
+++ b/src/components/title/Media.tsx
@@ -1,37 +1,39 @@
-import Image from 'next/future/image';
-import Link from 'next/link';
-import { NextRouter } from 'next/router';
-import { Media } from '../../interfaces/shared/title';
-import { modifyIMDbImg } from '../../utils/helpers';
+import Image from 'next/future/image'
+import Link from 'next/link'
+import { NextRouter } from 'next/router'
+import { Media } from '../../interfaces/shared/title'
+import { getProxiedIMDbImgUrl, modifyIMDbImg } from '../../utils/helpers'
-import styles from '../../styles/modules/components/title/media.module.scss';
+import styles from '../../styles/modules/components/title/media.module.scss'
type Props = {
- className: string;
- media: Media;
- router: NextRouter;
-};
+ className: string
+ media: Media
+ router: NextRouter
+}
const Media = ({ className, media, router }: Props) => {
return (
{(media.trailer || !!media.videos.total) && (
- Videos
+ Videos
{media.trailer && (