pages/contrib/contrib-welcome.js (38 lines of code) (raw):

import useSWR from 'swr'; import Contrib from 'components/Contrib'; import Error from 'next/error'; import { formatContribData } from 'lib/utils/contrib'; import { getApiURL } from 'lib/utils'; const contribWelcomeURL = getApiURL('/api/gh-contrib-welcome/'); export async function getServerSideProps() { const res = await fetch(contribWelcomeURL); const errorCode = res.ok ? false : res.status; const contribWelcomeData = await res.json(); return { props: { errorCode, contribWelcomeData, }, }; } const ContribWelcome = (props) => { if (props.errorCode) { return <Error statusCode={props.errorCode} />; } const { contribWelcomeData: initialContribWelcomeData } = props; const { data: contribData } = useSWR( contribWelcomeURL, async () => { const result = await fetch(contribWelcomeURL); const json = await result.json(); return json; }, { fallbackData: initialContribWelcomeData, refreshInterval: 30000 }, ); return ( <Contrib contribData={formatContribData(contribData.data.contrib_welcome.results)} /> ); }; export default ContribWelcome;