computer-scienceangular-roadmapbackend-roadmapblockchain-roadmapdba-roadmapdeveloper-roadmapdevops-roadmapfrontend-roadmapgo-roadmaphactoberfestjava-roadmapjavascript-roadmapnodejs-roadmappython-roadmapqa-roadmapreact-roadmaproadmapstudy-planvue-roadmapweb3-roadmap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.1 KiB
37 lines
1.1 KiB
import Error from "next/error"; |
|
import GuideLayout from 'layouts/guide'; |
|
import { serverOnlyProps } from 'lib/server'; |
|
import GuideHeader from 'components/guide-header'; |
|
import GuideBody from 'components/guide-body'; |
|
import SharePage from 'components/share-page'; |
|
import GuideFooter from 'components/guide-footer'; |
|
import { getRequestedGuide } from 'lib/guide'; |
|
import Helmet from 'components/helmet'; |
|
|
|
const Guide = ({ guide }) => { |
|
if (!guide) { |
|
return <Error statusCode={ 404 } /> |
|
} |
|
|
|
const GuideContent = require(`../../data/guides/${guide.fileName}.md`).default; |
|
|
|
return ( |
|
<GuideLayout> |
|
<Helmet title={ guide.title } description={ guide.description } /> |
|
<GuideHeader guide={ guide } /> |
|
<GuideBody> |
|
<GuideContent /> |
|
<SharePage title={ guide.title } url={ guide.url } twitterUsername={ guide.author.twitter } /> |
|
</GuideBody> |
|
<GuideFooter guide={ guide } /> |
|
</GuideLayout> |
|
); |
|
}; |
|
|
|
Guide.getInitialProps = serverOnlyProps(async ({ req }) => { |
|
return { |
|
guide: await getRequestedGuide(req), |
|
}; |
|
}); |
|
|
|
export default Guide;
|
|
|