import { getPhotosCached } from '@/photo/cache'; import { IMAGE_OG_DIMENSION, MAX_PHOTOS_TO_SHOW_TEMPLATE_TIGHT, } from '@/image-response'; import TemplateImageResponse from '@/image-response/TemplateImageResponse'; import { getIBMPlexMonoMedium } from '@/app-core/font'; import { ImageResponse } from 'next/og'; import { getImageResponseCacheControlHeaders } from '@/image-response/cache'; import { isNextImageReadyBasedOnPhotos } from '@/photo'; export async function GET() { const [ photos, { fontFamily, fonts }, headers, ] = await Promise.all([ getPhotosCached({ sortBy: 'priority', limit: MAX_PHOTOS_TO_SHOW_TEMPLATE_TIGHT, }).catch(() => []), getIBMPlexMonoMedium(), getImageResponseCacheControlHeaders(), ]); const { width, height } = IMAGE_OG_DIMENSION; // Make sure next/image can be reached from absolute urls, // which may not exist on first pre-render const isNextImageReady = await isNextImageReadyBasedOnPhotos(photos); return new ImageResponse( ( ), { width, height, fonts, headers, }, ); }