60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
import gql from 'graphql-tag'
|
|
import Item from '../../components/item'
|
|
import Layout from '../../components/layout'
|
|
import ApolloClient from '../../api/client'
|
|
import Reply from '../../components/reply'
|
|
import Comment from '../../components/comment'
|
|
import Text from '../../components/text'
|
|
import Comments from '../../components/comments'
|
|
|
|
export async function getServerSideProps ({ params }) {
|
|
const { error, data: { item } } = await ApolloClient.query({
|
|
query:
|
|
gql`{
|
|
item(id: ${params.id}) {
|
|
id
|
|
createdAt
|
|
title
|
|
url
|
|
text
|
|
parentId
|
|
user {
|
|
name
|
|
}
|
|
sats
|
|
ncomments
|
|
}
|
|
}`
|
|
})
|
|
|
|
if (!item || error) {
|
|
return {
|
|
notFound: true
|
|
}
|
|
}
|
|
|
|
return {
|
|
props: {
|
|
item: item
|
|
}
|
|
}
|
|
}
|
|
|
|
export default function FullItem ({ item }) {
|
|
return (
|
|
<Layout>
|
|
{item.parentId
|
|
? <Comment item={item} replyOpen includeParent cacheId='ROOT_QUERY' />
|
|
: (
|
|
<>
|
|
<Item item={item}>
|
|
{item.text && <Text>{item.text}</Text>}
|
|
<Reply parentId={item.id} cacheId='ROOT_QUERY' />
|
|
</Item>
|
|
</>
|
|
)}
|
|
<Comments parentId={item.id} />
|
|
</Layout>
|
|
)
|
|
}
|