@@ -86,7 +86,7 @@ export function Pricing() {
8686 )
8787}
8888
89- export async function LatestSponsor ( { className } : { className ?: string } ) {
89+ export async function fetchLatestSponsors ( limit : number = 5 ) {
9090 const GITHUB_TOKEN = process . env . GITHUB_TOKEN
9191 if ( ! GITHUB_TOKEN ) {
9292 throw new Error ( "Missing process.env.GITHUB_TOKEN" )
@@ -110,20 +110,36 @@ export async function LatestSponsor({ className }: { className?: string }) {
110110 throw new Error ( "No sponsors found" )
111111 }
112112
113- const latest = sponsors [ 0 ] . node
113+ return sponsors . slice ( 0 , limit ) . map ( ( edge : any ) => {
114+ const node = edge . node
115+ const entity = node . sponsorEntity
116+ return {
117+ login : entity . login ,
118+ name : entity . name || entity . login ,
119+ avatarUrl : entity . avatarUrl ,
120+ createdAt : node . createdAt ,
121+ tierName : node . tier . name ,
122+ websiteUrl : entity . websiteUrl ,
123+ }
124+ } )
125+ }
126+
127+ export async function LatestSponsor ( { className } : { className ?: string } ) {
128+ const sponsors = await fetchLatestSponsors ( 1 )
129+ const latest = sponsors [ 0 ]
114130
115131 return (
116132 < a
117- href = { `https://github.com/${ latest . sponsorEntity . login } ` }
133+ href = { `https://github.com/${ latest . login } ` }
118134 className = { cn (
119135 className ,
120136 "rounded bg-zinc-50 dark:bg-zinc-900 p-3 flex gap-3 border border-zinc-200/50 dark:border-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-700 transition-colors w-96 md:w-full mx-auto" ,
121137 ) }
122138 >
123139 < Image
124140 className = "rounded my-0 max-h-20"
125- src = { ` ${ latest . sponsorEntity . avatarUrl } ` }
126- alt = { latest . sponsorEntity . name }
141+ src = { latest . avatarUrl }
142+ alt = { latest . name }
127143 height = { 80 }
128144 width = { 80 }
129145 placeholder = "empty"
@@ -133,11 +149,9 @@ export async function LatestSponsor({ className }: { className?: string }) {
133149 < div className = "text-primary/70 text-sm" >
134150 Latest sponsor · < TimeAgo date = { latest . createdAt } />
135151 </ div >
136- < div className = "text-2xl font-bold" >
137- { latest . sponsorEntity . name || latest . sponsorEntity . login }
138- </ div >
152+ < div className = "text-2xl font-bold" > { latest . name } </ div >
139153 < div className = "text-primary/90 text-sm" >
140- Sponsoring < strong > { latest . tier . name } </ strong > { " " }
154+ Sponsoring < strong > { latest . tierName } </ strong > { " " }
141155 </ div >
142156 </ div >
143157 { /* <pre>{JSON.stringify(latest, null, 2)}</pre> */ }
0 commit comments