diff options
Diffstat (limited to 'src/components/CommentsList')
| -rw-r--r-- | src/components/CommentsList/CommentsList.tsx | 27 | 
1 files changed, 24 insertions, 3 deletions
| diff --git a/src/components/CommentsList/CommentsList.tsx b/src/components/CommentsList/CommentsList.tsx index 6630a03..1e7c3e7 100644 --- a/src/components/CommentsList/CommentsList.tsx +++ b/src/components/CommentsList/CommentsList.tsx @@ -1,6 +1,9 @@  import Comment from '@components/Comment/Comment'; +import Spinner from '@components/Spinner/Spinner'; +import { getCommentsByPostId } from '@services/graphql/queries';  import { Comment as CommentData } from '@ts/types/comments';  import { useIntl } from 'react-intl'; +import useSWR from 'swr';  import styles from './CommentsList.module.scss';  const CommentsList = ({ @@ -11,11 +14,29 @@ const CommentsList = ({    comments: CommentData[];  }) => {    const intl = useIntl(); +  const { data, error } = useSWR<CommentData[]>( +    '/api/comments', +    () => getCommentsByPostId(articleId), +    { fallbackData: comments } +  );    const getCommentsList = () => { -    return comments.map((comment) => { +    if (error) { +      return intl.formatMessage({ +        defaultMessage: 'Failed to load.', +        description: 'CommentsList: failed to load', +      }); +    } + +    if (!data) return <Spinner />; + +    return data.map((comment) => {        return ( -        <Comment key={comment.id} articleId={articleId} comment={comment} /> +        <Comment +          key={comment.commentId} +          articleId={articleId} +          comment={comment} +        />        );      });    }; @@ -28,7 +49,7 @@ const CommentsList = ({            description: 'CommentsList: Comments section title',          })}        </h2> -      {comments.length > 0 ? ( +      {data && data.length > 0 ? (          <ol className={styles.list}>{getCommentsList()}</ol>        ) : (          <p className={styles['no-comments']}> | 
