import Link from 'next/link' import { FaRegComment } from 'react-icons/fa' // import { FaLink } from 'react-icons/fa6' // import { MdDelete, MdEdit } from 'react-icons/md' import { useSession } from 'next-auth/react' import { useRouter } from 'next/router' import { useEffect, useState } from 'react' import { CgLoadbarSound } from 'react-icons/cg' import { FaRegStar, FaStar } from 'react-icons/fa' import { FcLike } from 'react-icons/fc' import { FiHeart } from 'react-icons/fi' import { Post } from '../../../type' import { DropDownShare } from '../atoms/DropDownShare' import Modal from '../atoms/Modal' interface CardPerfilProps { post: Post } export function CardPerfil({ post }: CardPerfilProps) { // const { postData, updatePostData } = usePostContext() const { description, title, Category, slug, url, Like, id, comments, views, twitterShareCount, whatsappShareCount, Favorite } = post const { data: session } = useSession() // const likeOfUser = Like?.some((user) => user.userEmail === session?.user?.email) const [isLike, setIsLike] = useState() const [isFavorite, setIsFavorite] = useState() const [likesCount, setLikesCount] = useState(Like?.length || 0) const [favoriteCount, setFavoriteCount] = useState(Favorite?.length || 0) let [isOpen, setIsOpen] = useState(false) const router = useRouter() useEffect(() => { if (session && Like?.some((like) => like?.userEmail === session?.user?.email)) { setIsLike(true) } else { setIsLike(false) } }, [Like, session]) useEffect(() => { if (session && Favorite?.some((fav) => fav?.userEmail === session?.user?.email)) { setIsFavorite(true) } else { setIsFavorite(false) } }, [Favorite, session]) const handleAddLike = async () => { if (!session) { setIsOpen(true) return } const response = await fetch(`/api/like`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: session.user.email, postId: id, session: session }) }) const data = await response.json() if (response.ok) { data && setIsLike(true) setLikesCount((prevCount) => prevCount + 1) } else { console.error('Error al dar like:', data.error) } } const handleDeleteLike = async () => { if (!session) { setIsOpen(true) return } const response = await fetch('/api/like', { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: session.user.email, postId: id, session: session }) }) const data = await response.json() if (response.ok) { setIsLike(false) setLikesCount((prevCount) => Math.max(0, prevCount - 1)) } else { console.error('Error al quitar like:', data.error) } } const handleAddFavorite = async () => { if (!session) { setIsOpen(true) return } const response = await fetch(`/api/favorite`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: session.user.email, postId: id, session: session }) }) const data = await response.json() if (response.ok) { data && setIsFavorite(true) setFavoriteCount((prevCount) => prevCount + 1) } else { console.error('Error al dar like:', data.error) } } const handleDeleteFavorite = async () => { if (!session) { setIsOpen(true) return } const response = await fetch('/api/favorite', { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: session.user.email, postId: id, session: session }) }) const data = await response.json() if (response.ok) { setIsFavorite(false) setFavoriteCount((prevCount) => Math.max(0, prevCount - 1)) } else { console.error('Error al quitar like:', data.error) } } return (
{/*
img post
*/}

{title}

{/* */}
{ isLike ? handleDeleteLike() : handleAddLike() }} > {isLike ? ( ) : ( )} {/* */}
{likesCount}
{ isFavorite ? handleDeleteFavorite() : handleAddFavorite() }} > {isFavorite ? ( ) : ( )} {favoriteCount}
{comments?.length} {' '}
{twitterShareCount + whatsappShareCount} {' '}
{views} {' '}
router.push('/login')} functionFalse={() => router.back()} />
) }