From c213711e7acd1718834d6453508f7b075898b43f Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Thu, 21 Sep 2023 20:38:51 -0500 Subject: [PATCH] Statically generate tag-based share paths --- src/app/(static)/t/[tag]/[photoId]/share/page.tsx | 15 ++++++++++++++- src/app/(static)/t/[tag]/share/page.tsx | 8 +++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/app/(static)/t/[tag]/[photoId]/share/page.tsx b/src/app/(static)/t/[tag]/[photoId]/share/page.tsx index 6fb28fef..521046ce 100644 --- a/src/app/(static)/t/[tag]/[photoId]/share/page.tsx +++ b/src/app/(static)/t/[tag]/[photoId]/share/page.tsx @@ -1,8 +1,21 @@ import { getPhotoCached } from '@/cache'; import PhotoShareModal from '@/photo/PhotoShareModal'; +import { getPhotos, getUniqueTags } from '@/services/postgres'; import { redirect } from 'next/navigation'; -export const runtime = 'edge'; +export async function generateStaticParams() { + const params: { params: { photoId: string, tag: string }}[] = []; + + const tags = await getUniqueTags(); + tags.forEach(async tag => { + const photos = await getPhotos({ tag }); + params.push(...photos.map(photo => ({ + params: { photoId: photo.id, tag }, + }))); + }); + + return params; +} export default async function Share({ params: { photoId, tag }, diff --git a/src/app/(static)/t/[tag]/share/page.tsx b/src/app/(static)/t/[tag]/share/page.tsx index 5cf96c94..a5ecdae1 100644 --- a/src/app/(static)/t/[tag]/share/page.tsx +++ b/src/app/(static)/t/[tag]/share/page.tsx @@ -1,10 +1,16 @@ import { getPhotosCached } from '@/cache'; import SiteGrid from '@/components/SiteGrid'; import PhotoGrid from '@/photo/PhotoGrid'; +import { getUniqueTags } from '@/services/postgres'; import TagHeader from '@/tag/TagHeader'; import TagShareModal from '@/tag/TagShareModal'; -export const runtime = 'edge'; +export async function generateStaticParams() { + const tags = await getUniqueTags(); + return tags.map(tag => ({ + params: { tag }, + })); +} export default async function Share({ params: { tag },