import Link from 'next/link'; import formatDistanceStrict from 'date-fns/formatDistanceStrict'; import format from 'date-fns/format'; import { FC, useContext, useEffect, useState } from 'react'; import { BeerPostQueryResult } from '@/services/BeerPost/schema/BeerPostQueryResult'; import UserContext from '@/contexts/userContext'; import { FaRegEdit } from 'react-icons/fa'; import BeerPostLikeButton from './BeerPostLikeButton'; const BeerInfoHeader: FC<{ beerPost: BeerPostQueryResult; initialLikeCount: number }> = ({ beerPost, initialLikeCount, }) => { const createdAtDate = new Date(beerPost.createdAt); const [timeDistance, setTimeDistance] = useState(''); const { user } = useContext(UserContext); const [likeCount, setLikeCount] = useState(initialLikeCount); const [isPostOwner, setIsPostOwner] = useState(false); useEffect(() => { const idMatches = user && beerPost.postedBy.id === user.id; if (!(user && idMatches)) { setIsPostOwner(false); return; } setIsPostOwner(true); }, [user, beerPost]); useEffect(() => { setLikeCount(initialLikeCount); }, [initialLikeCount]); useEffect(() => { setTimeDistance(formatDistanceStrict(new Date(beerPost.createdAt), new Date())); }, [beerPost.createdAt]); return (

{beerPost.name}

by{' '} {beerPost.brewery.name}

{isPostOwner && (
)}

posted by{' '} {beerPost.postedBy.username}{' '} {timeDistance} ago

{beerPost.description}

{beerPost.type.name}
{beerPost.abv}% ABV {beerPost.ibu} IBU
Liked by {likeCount} user{likeCount !== 1 && 's'}
{user && ( )}
); }; export default BeerInfoHeader;