diff --git a/src/app/api.ts b/src/app/api.ts index 1a5a2d90..0e873884 100644 --- a/src/app/api.ts +++ b/src/app/api.ts @@ -36,8 +36,8 @@ export const formatPhotoForApi = (photo: Photo): PublicApiPhoto => ({ ...photo.tags.length > 0 && { tags: photo.tags }, takenAtNaive: formatDateFromPostgresString(photo.takenAtNaive), src: { - small: getNextImageUrlForRequest(photo.url, 200), - medium: getNextImageUrlForRequest(photo.url, 640), - large: getNextImageUrlForRequest(photo.url, 1200), + small: getNextImageUrlForRequest({ imageUrl: photo.url, size: 200 }), + medium: getNextImageUrlForRequest({ imageUrl: photo.url, size: 640 }), + large: getNextImageUrlForRequest({ imageUrl: photo.url, size: 1200 }), }, }); diff --git a/src/image-response/components/ImagePhotoGrid.tsx b/src/image-response/components/ImagePhotoGrid.tsx index 1d2d1c0e..e7958fce 100644 --- a/src/image-response/components/ImagePhotoGrid.tsx +++ b/src/image-response/components/ImagePhotoGrid.tsx @@ -69,13 +69,11 @@ export default function ImagePhotoGrid({ }} > export const isNextImageReadyBasedOnPhotos = async ( photos: Photo[], ): Promise => - photos.length > 0 && fetch(getNextImageUrlForRequest( - photos[0].url, - 640, - undefined, - undefined, - IS_PREVIEW, - )) + photos.length > 0 && fetch(getNextImageUrlForRequest({ + imageUrl: photos[0].url, + size: 640, + addBypassSecret: IS_PREVIEW, + })) .then(response => response.ok) .catch(() => false); diff --git a/src/platforms/next-image.ts b/src/platforms/next-image.ts index 6e2bbb6d..23bc71b6 100644 --- a/src/platforms/next-image.ts +++ b/src/platforms/next-image.ts @@ -14,13 +14,19 @@ export type NextImageSize = NextCustomSize | NextImageDeviceSize; export const MAX_IMAGE_SIZE: NextImageSize = 3840; -export const getNextImageUrlForRequest = ( - imageUrl: string, - size: NextImageSize, +export const getNextImageUrlForRequest = ({ + imageUrl, + size, quality = IMAGE_QUALITY, baseUrl = BASE_URL, - addBypassSecret = false, -) => { + addBypassSecret, +}: { + imageUrl: string + size: NextImageSize + quality?: number + baseUrl?: string + addBypassSecret?: boolean +}) => { const url = new URL(`${baseUrl}/_next/image`); url.searchParams.append('url', imageUrl); @@ -38,6 +44,10 @@ export const getNextImageUrlForRequest = ( // generating blur data or image thumbnails for AI text generation export const getNextImageUrlForManipulation = ( imageUrl: string, - addBypassSecret = false, + addBypassSecret: boolean, ) => - getNextImageUrlForRequest(imageUrl, 640, 90, undefined, addBypassSecret); + getNextImageUrlForRequest({ + imageUrl, + size: 640, + addBypassSecret, + });