From 13463d4eeb8f239fcb3368250a644dda04f7c4f5 Mon Sep 17 00:00:00 2001 From: Leander Furumo Date: Fri, 30 Oct 2026 21:13:58 +0100 Subject: [PATCH] fetch board member data on data change --- src/app/api/revalidate/route.ts | 6 ++- src/components/page-sections/boardMembers.tsx | 26 +------------ src/lib/sanity.ts | 37 +++++++++++++++++++ 3 files changed, 43 insertions(+), 26 deletions(-) diff --git a/src/app/api/revalidate/route.ts b/src/app/api/revalidate/route.ts index 4e23c2d..0c71965 100644 --- a/src/app/api/revalidate/route.ts +++ b/src/app/api/revalidate/route.ts @@ -26,10 +26,12 @@ export async function POST(request: NextRequest) { if (slug?.current) { revalidateTag(`event-${slug.current}`, "max") } + } else if (_type === "author") { + revalidateTag("authors", "max") + // Blog posts show the author's name and image + revalidateTag("blog-posts", "max") } - revalidateTag("home", "max") - return NextResponse.json({ revalidated: true, now: Date.now(), diff --git a/src/components/page-sections/boardMembers.tsx b/src/components/page-sections/boardMembers.tsx index b92e708..3ea5fdf 100644 --- a/src/components/page-sections/boardMembers.tsx +++ b/src/components/page-sections/boardMembers.tsx @@ -1,5 +1,5 @@ import { urlFor } from "@/lib/imageUrlBuilder" -import { sanityClient } from "@/lib/sanity" +import { getBoardMembers } from "@/lib/sanity" import { getLocale, getTranslations } from "next-intl/server" import Image from "next/image" @@ -31,29 +31,7 @@ const BoardMembers = async () => { const t = await getTranslations("boardMembers") const locale = (await getLocale()) as "no" | "en" - const query = ` - *[_type == "author" && boardMember == true] | order(orderRank asc) { - _id, - boardMember, - contactInfo, - name, - role { - no, - en - }, - image { - asset->{ - _id, - url - } - }, - bio { - no, - en - } - } - ` - const data: BoardMember[] = await sanityClient.fetch(query) + const data: BoardMember[] = await getBoardMembers() return (
diff --git a/src/lib/sanity.ts b/src/lib/sanity.ts index 17f684c..52559de 100644 --- a/src/lib/sanity.ts +++ b/src/lib/sanity.ts @@ -95,3 +95,40 @@ export async function getAllEvents() { } ) } + +export async function getBoardMembers() { + const query = ` + *[_type == "author" && boardMember == true] | order(orderRank asc) { + _id, + boardMember, + contactInfo, + name, + role { + no, + en + }, + image { + asset->{ + _id, + url + } + }, + bio { + no, + en + } + } + ` + + return sanityClient.fetch( + query, + {}, + { + cache: "force-cache", + next: { + tags: ["authors"], + revalidate: 3600, // 1 hour + }, + } + ) +}