From 4570104dd7be9fe91047fa19872bf2a991c8492f Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Tue, 17 Feb 2026 18:28:04 -0600 Subject: [PATCH] Reintroduce og url check with presigned urls --- src/image-response/components/ImagePhotoGrid.tsx | 8 +++++++- src/photo/storage/index.ts | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/image-response/components/ImagePhotoGrid.tsx b/src/image-response/components/ImagePhotoGrid.tsx index 5ba0717c..3756cda5 100644 --- a/src/image-response/components/ImagePhotoGrid.tsx +++ b/src/image-response/components/ImagePhotoGrid.tsx @@ -3,7 +3,10 @@ import { Photo } from '@/photo'; import { NextImageSize } from '@/platforms/next-image'; import { IS_PREVIEW } from '@/app/config'; -import { getOptimizedPhotoUrl } from '@/photo/storage'; +import { + doAllPhotosHaveOptimizedFiles, + getOptimizedPhotoUrl, +} from '@/photo/storage'; import { fetchBase64ImageFromUrl } from '@/utility/image'; import { getSignedUrlForUrl } from '@/platforms/storage'; @@ -50,11 +53,14 @@ export default async function ImagePhotoGrid({ const cellHeight= height / rows - (rows - 1) * gap / rows; + const doOptimizedFilesExist = await doAllPhotosHaveOptimizedFiles(photos); + const photoDataUrls = await Promise.all(photos.map(async({ id, url }) => { const optimizedUrl = getOptimizedPhotoUrl({ imageUrl: url, size: nextImageWidth, addBypassSecret: IS_PREVIEW, + compatibilityMode: !doOptimizedFilesExist, }); const presignedUrl = await getSignedUrlForUrl(optimizedUrl, 'GET'); const data = await fetchBase64ImageFromUrl(presignedUrl); diff --git a/src/photo/storage/index.ts b/src/photo/storage/index.ts index 89e8ef5f..aa45c48d 100644 --- a/src/photo/storage/index.ts +++ b/src/photo/storage/index.ts @@ -5,6 +5,7 @@ import { import { generateFileNameWithId, getFileNamePartsFromStorageUrl, + getSignedUrlForUrl, getStorageUrlsForPrefix, uploadFileFromClient, } from '@/platforms/storage'; @@ -139,7 +140,9 @@ export const doesPhotoUrlHaveOptimizedFiles = async (url: string) => fetch(getTestOptimizedPhotoUrl(url)).then(res => res.ok); export const doAllPhotosHaveOptimizedFiles = async (photos: Photo[]) => - Promise.all(photos.map(({ url }) => fetch(getTestOptimizedPhotoUrl(url)))) + Promise.all(photos.map(async ({ url }) => fetch( + await getSignedUrlForUrl(getTestOptimizedPhotoUrl(url), 'GET'), + ))) .then(urls => urls.every(url => url.ok)) .catch(() => false);