1
1
import React , { useState } from 'react' ;
2
- import { Query } from '@apollo/react-components ' ;
2
+ import { useQuery } from '@apollo/react-hooks ' ;
3
3
import {
4
4
Button , Container , Card , Row , Jumbotron , Spinner , Form ,
5
5
} from 'react-bootstrap' ;
@@ -13,6 +13,17 @@ const Post = ({ postId }) => {
13
13
const [ commentContent , setCommentContent ] = useState ( '' ) ;
14
14
const [ commentCreateIsLoading ] = useState ( false ) ;
15
15
16
+ const {
17
+ loading : postIsLoading ,
18
+ data : postsData ,
19
+ } = useQuery ( queries . post . GET_POSTS_QUERY , {
20
+ variables : {
21
+ filters : [ { field : 'id' , operation : 'eq' , value : postId } ] ,
22
+ limit : 1 ,
23
+ } ,
24
+ } ) ;
25
+ const post = get ( postsData , 'posts.edges[0].node' , { } ) ;
26
+
16
27
// TODO: TASK 4. query comments
17
28
const commentIsLoading = false ;
18
29
const comments = [ ] ;
@@ -26,25 +37,20 @@ const Post = ({ postId }) => {
26
37
27
38
return (
28
39
< Container className = "post" >
29
- < Query query = { queries . post . GET_POSTS_QUERY } variables = { { filters : [ { field : 'id' , operation : 'eq' , value : postId } ] , limit : 1 } } >
30
- { ( { loading : postIsLoading , data : postsData } ) => {
31
- const post = get ( postsData , 'posts.edges[0].node' , { } ) ;
32
- return ( postIsLoading
33
- ? < div className = "post-loader" > < Spinner animation = "border" /> </ div >
34
- : (
35
- < Jumbotron >
36
- < h1 > { post . title } </ h1 >
37
- < footer className = "blockquote-footer" >
38
- { get ( post , 'author.username' ) }
39
- < div > { DateTime . fromISO ( post . timestamp ) . toFormat ( 'HH:mm - dd/LL/yyyy' ) } </ div >
40
- </ footer >
41
- < br />
42
- < p > { post . description } </ p >
43
- < p > { post . content } </ p >
44
- </ Jumbotron >
45
- ) ) ;
46
- } }
47
- </ Query >
40
+ { postIsLoading
41
+ ? < div className = "post-loader" > < Spinner animation = "border" /> </ div >
42
+ : (
43
+ < Jumbotron >
44
+ < h1 > { post . title } </ h1 >
45
+ < footer className = "blockquote-footer" >
46
+ { get ( post , 'author.username' ) }
47
+ < div > { DateTime . fromISO ( post . timestamp ) . toFormat ( 'HH:mm - dd/LL/yyyy' ) } </ div >
48
+ </ footer >
49
+ < br />
50
+ < p > { post . description } </ p >
51
+ < p > { post . content } </ p >
52
+ </ Jumbotron >
53
+ ) }
48
54
< div className = "post-commentForm" >
49
55
< h4 > Write a comment</ h4 >
50
56
< Form onSubmit = { handleCreateComment } >
0 commit comments