2022-04-06 13:41:42 -04:00
|
|
|
import type { GetServerSideProps, GetStaticPaths, GetStaticProps } from "next";
|
2022-03-07 23:42:44 -05:00
|
|
|
|
2022-03-22 23:06:15 -04:00
|
|
|
import type { Post } from "@lib/types";
|
2022-03-21 23:30:45 -04:00
|
|
|
import PostPage from "@components/post-page";
|
2022-03-06 19:46:59 -05:00
|
|
|
|
2022-03-22 23:06:15 -04:00
|
|
|
export type PostProps = {
|
2022-03-21 21:51:19 -04:00
|
|
|
post: Post
|
2022-03-21 17:20:20 -04:00
|
|
|
}
|
2022-03-07 01:16:08 -05:00
|
|
|
|
2022-03-22 23:06:15 -04:00
|
|
|
const PostView = ({ post }: PostProps) => {
|
|
|
|
return <PostPage post={post} />
|
2022-03-06 19:46:59 -05:00
|
|
|
}
|
|
|
|
|
2022-04-06 13:41:42 -04:00
|
|
|
export const getServerSideProps: GetServerSideProps = async ({ params, res }) => {
|
2022-03-21 20:20:41 -04:00
|
|
|
const post = await fetch(process.env.API_URL + `/posts/${params?.id}`, {
|
|
|
|
method: "GET",
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
"x-secret-key": process.env.SECRET_KEY || "",
|
2022-03-19 20:15:17 -04:00
|
|
|
}
|
2022-03-21 20:20:41 -04:00
|
|
|
})
|
2022-03-12 23:13:35 -05:00
|
|
|
|
2022-04-06 13:41:42 -04:00
|
|
|
const sMaxAge = 60 * 60 * 24
|
|
|
|
res.setHeader(
|
|
|
|
'Cache-Control',
|
|
|
|
`public, s-maxage=${sMaxAge}, max-age=${sMaxAge}`
|
|
|
|
)
|
|
|
|
|
|
|
|
if (!post.ok || post.status !== 200) {
|
2022-03-26 03:05:05 -04:00
|
|
|
return {
|
|
|
|
redirect: {
|
2022-04-06 13:41:42 -04:00
|
|
|
destination: '/404',
|
|
|
|
permanent: false,
|
2022-03-26 03:05:05 -04:00
|
|
|
},
|
2022-04-06 13:41:42 -04:00
|
|
|
props: {}
|
2022-03-26 03:05:05 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-06 13:41:42 -04:00
|
|
|
|
|
|
|
const json = await post.json();
|
|
|
|
|
2022-03-15 22:49:41 -04:00
|
|
|
return {
|
|
|
|
props: {
|
2022-04-06 13:41:42 -04:00
|
|
|
post: json
|
|
|
|
}
|
2022-03-15 22:49:41 -04:00
|
|
|
}
|
2022-03-06 19:46:59 -05:00
|
|
|
}
|
|
|
|
|
2022-03-21 23:30:45 -04:00
|
|
|
export default PostView
|
2022-03-21 18:55:21 -04:00
|
|
|
|