From a3e2f442a0c64c2b5f533a18606840734e668fd9 Mon Sep 17 00:00:00 2001 From: Markus Thielker Date: Wed, 26 Feb 2025 14:15:27 +0100 Subject: [PATCH] Fix caching to prevent build-time rendering --- src/app/page.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 95e4cea..56c28c5 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -21,7 +21,7 @@ const calculateAge = (birthdate: Date): number => { return age; }; -const getRepos = async (username: string) => { +const getRepos = async (username: string, options: RequestInit = {}) => { let repos: Repository[] = []; let page = 1; let hasNextPage = true; @@ -31,6 +31,7 @@ const getRepos = async (username: string) => { headers: { Accept: 'application/vnd.github+json', }, + ...options, }); const data = await response.json(); @@ -46,11 +47,12 @@ const getRepos = async (username: string) => { return repos; }; -const getLanguages = async (repo: Repository) => { +const getLanguages = async (repo: Repository, options: RequestInit = {}) => { const response = await fetch(repo.languages_url, { headers: { Accept: 'application/vnd.github+json', }, + ...options, }); return await response.json(); }; @@ -59,7 +61,7 @@ const accumulateLanguages = async (repos: Repository[]) => { const languages: { [key: string]: number } = {}; for (const repo of repos) { - const repoLanguages = await getLanguages(repo); + const repoLanguages = await getLanguages(repo, { next: { revalidate: 3600 } }); for (const lang in repoLanguages) { languages[lang] = (languages[lang] || 0) + repoLanguages[lang]; } @@ -80,11 +82,11 @@ const accumulateStars = (repos: Repository[]) => { export default async function Home() { - const profileResponse = await fetch('https://api.github.com/users/markusthielker'); + const profileResponse = await fetch('https://api.github.com/users/markusthielker', { next: { revalidate: 3600 } }); const profile = await profileResponse.json() as PublicUser; const username = 'markusthielker'; - const repos = await getRepos(username); + const repos = await getRepos(username, { next: { revalidate: 3600 } }); const languages = await accumulateLanguages(repos); const stars = accumulateStars(repos); const totalBytes = Object.values(languages).reduce((sum, bytes) => sum + bytes, 0);