CoastalCommitsPastes/client/pages/mine.tsx

68 lines
1.3 KiB
TypeScript
Raw Normal View History

2022-04-09 20:48:19 -04:00
import styles from "@styles/Home.module.css"
2022-03-06 19:46:59 -05:00
2022-04-09 20:48:19 -04:00
import Header from "@components/header"
import MyPosts from "@components/my-posts"
import cookie from "cookie"
import type { GetServerSideProps } from "next"
import { Post } from "@lib/types"
import { Page } from "@geist-ui/core"
2022-03-06 19:46:59 -05:00
2022-04-09 20:48:19 -04:00
const Home = ({
morePosts,
posts,
error
}: {
morePosts: boolean
posts: Post[]
error: boolean
}) => {
return (
<Page className={styles.wrapper}>
<Page.Content className={styles.main}>
<MyPosts morePosts={morePosts} error={error} posts={posts} />
</Page.Content>
</Page>
)
2022-03-06 19:46:59 -05:00
}
2022-04-09 20:48:19 -04:00
// get server side props
export const getServerSideProps: GetServerSideProps = async ({ req }) => {
2022-04-09 20:48:19 -04:00
const driftToken = cookie.parse(req.headers.cookie || "")[`drift-token`]
if (!driftToken) {
return {
redirect: {
destination: "/",
permanent: false
}
}
}
2022-04-09 20:48:19 -04:00
const posts = await fetch(process.env.API_URL + `/posts/mine`, {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${driftToken}`,
"x-secret-key": process.env.SECRET_KEY || ""
}
})
2022-04-09 20:48:19 -04:00
if (!posts.ok) {
return {
redirect: {
destination: "/",
permanent: false
}
}
}
2022-04-09 20:48:19 -04:00
const data = await posts.json()
return {
props: {
posts: data.posts,
error: posts.status !== 200,
morePosts: data.hasMore
}
}
}
2022-03-06 19:46:59 -05:00
export default Home