mirror of
https://github.com/System-End/site.git
synced 2026-04-19 16:28:21 +00:00
* 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>
63 lines
1.5 KiB
TypeScript
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())
|
|
}
|