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 UserContext from '@/contexts/userContext'; import { FaRegEdit } from 'react-icons/fa'; import beerPostQueryResult from '@/services/BeerPost/schema/BeerPostQueryResult'; import { z } from 'zod'; import BeerPostLikeButton from './BeerPostLikeButton'; const BeerInfoHeader: FC<{ beerPost: z.infer; initialLikeCount: number; }> = ({ beerPost, initialLikeCount }) => { const createdAtDate = new Date(beerPost.createdAt); const [timeDistance, setTimeDistance] = useState(''); const { user } = useContext(UserContext); const [likeCount, setLikeCount] = useState(initialLikeCount); const idMatches = user && beerPost.postedBy.id === user.id; const isPostOwner = !!(user && idMatches); 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;