From 4e728dbd9ce011eb42dfddfdd52dcd2e80f45c06 Mon Sep 17 00:00:00 2001 From: beerose Date: Tue, 19 Sep 2023 00:11:32 +0200 Subject: [PATCH 1/2] Use getServerData in schedule and speakers --- src/templates/schedule.tsx | 44 +++++++++++++++++++++++++++++++++++--- src/templates/speakers.tsx | 44 +++++++++++++++++++++++++++++++++++--- 2 files changed, 82 insertions(+), 6 deletions(-) diff --git a/src/templates/schedule.tsx b/src/templates/schedule.tsx index 17b8246413..34b67516c5 100644 --- a/src/templates/schedule.tsx +++ b/src/templates/schedule.tsx @@ -8,9 +8,47 @@ import ScheduleList, { ScheduleSession, } from "../components/Conf/Schedule/ScheduleList" -const ScheduleTemplate: FC> = ({ - pageContext: { schedule }, -}) => { +const fetchData = async (url: string) => { + try { + const response = await fetch(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + "User-Agent": "GraphQL Conf / GraphQL Foundation", + }, + }) + const data = await response.json() + return data + } catch (error: any) { + throw new Error( + `Error fetching data from ${url}: ${error.message || error.toString()}` + ) + } +} + +export async function getServerData() { + try { + const schedule: ScheduleSession[] = await fetchData( + `https://graphqlconf23.sched.com/api/session/list?api_key=${process.env.SCHED_ACCESS_TOKEN}&format=json` + ) + + return { + props: { + schedule, + }, + } + } catch (error) { + return { + status: 500, + headers: {}, + props: {}, + } + } +} + +const ScheduleTemplate: FC< + PageProps<{}, {}, {}, { schedule: ScheduleSession[] }> +> = ({ serverData: { schedule } }) => { return ( diff --git a/src/templates/speakers.tsx b/src/templates/speakers.tsx index 700ecd7bd1..8d2a854824 100644 --- a/src/templates/speakers.tsx +++ b/src/templates/speakers.tsx @@ -7,9 +7,47 @@ import { keynoteSpeakers } from "../components/Conf/Speakers" import Speaker, { SchedSpeaker } from "../components/Conf/Speakers/Speaker" import { PageProps } from "gatsby" -const SpeakersTemplate: FC> = ({ - pageContext: { speakers: speakersData }, -}) => { +const fetchData = async (url: string) => { + try { + const response = await fetch(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + "User-Agent": "GraphQL Conf / GraphQL Foundation", + }, + }) + const data = await response.json() + return data + } catch (error: any) { + throw new Error( + `Error fetching data from ${url}: ${error.message || error.toString()}` + ) + } +} + +export async function getServerData() { + try { + const speakers: SchedSpeaker[] = await fetchData( + `https://graphqlconf23.sched.com/api/user/list?api_key=${process.env.SCHED_ACCESS_TOKEN}&format=json&fields=username` + ) + + return { + props: { + speakers, + }, + } + } catch (error) { + return { + status: 500, + headers: {}, + props: {}, + } + } +} + +const SpeakersTemplate: FC< + PageProps<{}, {}, {}, { speakers: SchedSpeaker[] }> +> = ({ serverData: { speakers: speakersData } }) => { const keynoteNames = keynoteSpeakers.map(speaker => speaker.name) // create an array for keynote speakers in fetched data maintaining the order in keynoteSpeakers From 0c37e4badaca80fcfbc6a9e5a8a176aa14f4722b Mon Sep 17 00:00:00 2001 From: beerose Date: Tue, 19 Sep 2023 00:24:37 +0200 Subject: [PATCH 2/2] skip speakers --- src/templates/speakers.tsx | 44 +++----------------------------------- 1 file changed, 3 insertions(+), 41 deletions(-) diff --git a/src/templates/speakers.tsx b/src/templates/speakers.tsx index 8d2a854824..700ecd7bd1 100644 --- a/src/templates/speakers.tsx +++ b/src/templates/speakers.tsx @@ -7,47 +7,9 @@ import { keynoteSpeakers } from "../components/Conf/Speakers" import Speaker, { SchedSpeaker } from "../components/Conf/Speakers/Speaker" import { PageProps } from "gatsby" -const fetchData = async (url: string) => { - try { - const response = await fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json", - "User-Agent": "GraphQL Conf / GraphQL Foundation", - }, - }) - const data = await response.json() - return data - } catch (error: any) { - throw new Error( - `Error fetching data from ${url}: ${error.message || error.toString()}` - ) - } -} - -export async function getServerData() { - try { - const speakers: SchedSpeaker[] = await fetchData( - `https://graphqlconf23.sched.com/api/user/list?api_key=${process.env.SCHED_ACCESS_TOKEN}&format=json&fields=username` - ) - - return { - props: { - speakers, - }, - } - } catch (error) { - return { - status: 500, - headers: {}, - props: {}, - } - } -} - -const SpeakersTemplate: FC< - PageProps<{}, {}, {}, { speakers: SchedSpeaker[] }> -> = ({ serverData: { speakers: speakersData } }) => { +const SpeakersTemplate: FC> = ({ + pageContext: { speakers: speakersData }, +}) => { const keynoteNames = keynoteSpeakers.map(speaker => speaker.name) // create an array for keynote speakers in fetched data maintaining the order in keynoteSpeakers