pages/contrib/good-first-bugs.js (41 lines of code) (raw):
import useSWR from 'swr';
import Error from 'next/error';
import Contrib from 'components/Contrib';
import { formatContribData } from 'lib/utils/contrib';
import { getApiURL } from 'lib/utils';
const goodFirstBugsURL = getApiURL('/api/gh-good-first-bugs/');
export async function getServerSideProps() {
const res = await fetch(goodFirstBugsURL);
const errorCode = res.ok ? false : res.status;
const goodFirstBugsData = await res.json();
return {
props: {
errorCode,
goodFirstBugsData,
},
};
}
const GoodFirstBugs = (props) => {
if (props.errorCode) {
return <Error statusCode={props.errorCode} />;
}
const { goodFirstBugsData: initialGoodFirstBugsData } = props;
const { data: goodFirstBugsData } = useSWR(
goodFirstBugsURL,
async () => {
const result = await fetch(goodFirstBugsURL);
const json = await result.json();
return json;
},
{ fallbackData: initialGoodFirstBugsData, refreshInterval: 30000 },
);
return (
<Contrib
contribData={formatContribData(
goodFirstBugsData.data.good_first_bugs.results,
)}
hasAssignments
/>
);
};
export default GoodFirstBugs;