stacker.news/pages/[username]/comments.js

65 lines
1.6 KiB
JavaScript
Raw Normal View History

2021-04-22 22:14:32 +00:00
import Layout from '../../components/layout'
2021-09-30 15:46:58 +00:00
import { useQuery } from '@apollo/client'
2021-04-22 22:14:32 +00:00
import UserHeader from '../../components/user-header'
2021-06-24 23:56:01 +00:00
import CommentsFlat from '../../components/comments-flat'
2021-07-08 00:15:27 +00:00
import Seo from '../../components/seo'
2021-09-30 15:46:58 +00:00
import { USER_FULL } from '../../fragments/users'
import { useRouter } from 'next/router'
import { MORE_FLAT_COMMENTS } from '../../fragments/comments'
import { getServerSideProps as headerProps } from './index'
import getSSRApolloClient from '../../api/ssrApollo'
2021-04-22 22:14:32 +00:00
2021-09-30 15:46:58 +00:00
export async function getServerSideProps ({ req, params: { username } }) {
const { notFound, props } = await headerProps({ req, params: { username } })
2021-04-22 22:14:32 +00:00
2021-09-30 15:46:58 +00:00
if (notFound) {
2021-04-22 22:14:32 +00:00
return {
2021-09-30 15:46:58 +00:00
notFound
2021-04-22 22:14:32 +00:00
}
}
2021-09-30 15:46:58 +00:00
const { user } = props
const client = await getSSRApolloClient(req)
const { data } = await client.query({
query: MORE_FLAT_COMMENTS,
variables: { userId: user.id }
})
let comments, cursor
if (data) {
({ moreFlatComments: { comments, cursor } } = data)
}
2021-04-22 22:14:32 +00:00
return {
props: {
2021-09-30 15:46:58 +00:00
...props,
comments,
cursor
2021-04-22 22:14:32 +00:00
}
}
}
2021-09-30 15:46:58 +00:00
export default function UserComments ({ user, comments, cursor }) {
const router = useRouter()
const { data } = useQuery(
USER_FULL(user.name), {
fetchPolicy: router.query.cache ? 'cache-first' : undefined
})
if (data) {
({ user } = data)
}
2021-04-22 22:14:32 +00:00
return (
2021-07-08 00:34:23 +00:00
<Layout noSeo>
2021-07-08 00:15:27 +00:00
<Seo user={user} />
2021-04-22 22:14:32 +00:00
<UserHeader user={user} />
2021-09-30 15:46:58 +00:00
<CommentsFlat
comments={comments} cursor={cursor}
variables={{ userId: user.id }} includeParent noReply
/>
2021-04-22 22:14:32 +00:00
</Layout>
)
}