import itemStyles from './item.module.css' import styles from './comment.module.css' import UpVote from '../svgs/lightning-arrow.svg' import Text from './text' import Link from 'next/link' import Reply from './reply' import { useState } from 'react' import { gql, useQuery } from '@apollo/client' function timeSince (timeStamp) { const now = new Date() const secondsPast = (now.getTime() - timeStamp) / 1000 if (secondsPast < 60) { return parseInt(secondsPast) + 's' } if (secondsPast < 3600) { return parseInt(secondsPast / 60) + 'm' } if (secondsPast <= 86400) { return parseInt(secondsPast / 3600) + 'h' } if (secondsPast > 86400) { const day = timeStamp.getDate() const month = timeStamp.toDateString().match(/ [a-zA-Z]*/)[0].replace(' ', '') const year = timeStamp.getFullYear() === now.getFullYear() ? '' : ' ' + timeStamp.getFullYear() return day + ' ' + month + year } } function Parent ({ item }) { const { data } = useQuery( gql`{ root(id: ${item.id}) { id title } }` ) const ParentFrag = () => ( <> \ parent ) if (!data) { return } return ( <> {data.root.id !== item.parentId && } \ {data.root.title} ) } export default function Comment ({ item, children, replyOpen, includeParent }) { const [reply, setReply] = useState(replyOpen) return ( <>
@{item.user.name} {timeSince(new Date(item.createdAt))} \ {item.sats} sats \ {item.ncomments} replies {includeParent && }
{item.text}
setReply(!reply)} > {reply ? 'cancel' : 'reply'}
{reply && } {children}
{item.comments ? item.comments.map((item) => ( )) : null}
) }