import { gql, useApolloClient, useLazyQuery } from '@apollo/client' import { useState } from 'react' import Comment, { CommentSkeleton } from './comment' import styles from './header.module.css' import { Nav, Navbar } from 'react-bootstrap' import { COMMENTS_QUERY } from '../fragments/items' import { COMMENTS } from '../fragments/comments' import { abbrNum } from '../lib/format' import { defaultCommentSort } from '../lib/item' export function CommentsHeader ({ handleSort, pinned, bio, parentCreatedAt, commentSats }) { const [sort, setSort] = useState(defaultCommentSort(pinned, bio, parentCreatedAt)) const getHandleClick = sort => { return () => { setSort(sort) handleSort(sort) } } return ( ) } export default function Comments ({ parentId, pinned, bio, parentCreatedAt, commentSats, comments, ...props }) { const client = useApolloClient() const [loading, setLoading] = useState() const [getComments] = useLazyQuery(COMMENTS_QUERY, { fetchPolicy: 'cache-first', onCompleted: data => { client.writeFragment({ id: `Item:${parentId}`, fragment: gql` ${COMMENTS} fragment Comments on Item { comments { ...CommentsRecursive } } `, fragmentName: 'Comments', data: { comments: data.comments } }) setLoading(false) } }) return ( <> {comments.length ? { setLoading(true) getComments({ variables: { id: parentId, sort } }) }} /> : null} {loading ? : comments.map(item => ( ))} ) } export function CommentsSkeleton () { return }