site/pages/api/team.ts
yodalightsabr b80cf794fc
[Draft/Work-in-progress] Update /team and use JSON instead of Airtable (#1494)
* Revert "Revert "Update /team and use JSON instead of Airtable" (#1493)"

This reverts commit 7185185e30.

* Update Community Teams (#1492)

* Add Zenab, Phoebe, Annabel + various fixes (#1497)

---------

Co-authored-by: transcental <amber@transcental.dev>
2025-05-01 13:40:14 -04:00

63 lines
1.5 KiB
TypeScript

import teamMembers from '../../public/team.json'
import type { NextApiRequest, NextApiResponse } from 'next'
interface TeamMember {
name: string
department: string
role: string | string[]
acknowledged: boolean
bio: string
bioHackFoundation: string
slackId: string
overrideAvatar: string
email: string
website: string
pronouns: string
avatar: string
}
export async function fetchTeam() {
const current: TeamMember[] = []
const acknowledged: TeamMember[] = []
for (const member of teamMembers as TeamMember[]) {
if (process.env.SLACK_API_TOKEN) {
const formData = new FormData()
formData.append('token', process.env.SLACK_API_TOKEN)
formData.append('user', member.slackId)
const slackData = await fetch(
`https://hackclub.slack.com/api/users.profile.get?user=${member.slackId}`,
{
method: 'POST',
headers: {
'content-type': 'multipart/form-data',
cookie: process.env.SLACK_API_COOKIE || ''
},
body: formData
}
).then(r => r.json())
if (slackData.ok) {
member.pronouns = slackData.profile.pronouns
} else {
console.warn('Not found:', member.slackId)
}
}
if (member.acknowledged) {
acknowledged.push(member)
} else {
current.push(member)
}
}
return { current, acknowledged }
}
export default async function handler(
_req: NextApiRequest,
res: NextApiResponse
) {
res.status(200).json(await fetchTeam())
}