import React, { useEffect, useState } from 'react' import { Link } from 'react-router-dom' import '../styles/cardMod.css' import { handleModImageError } from '../utils' import { ModDetails } from 'types' import { getModPageRoute } from 'routes' import { kinds, nip19 } from 'nostr-tools' import { useDidMount, useNDKContext, useReactions } from 'hooks' import { toast } from 'react-toastify' import { useComments } from 'hooks/useComments' export const ModCard = React.memo((props: ModDetails) => { const [totalZappedAmount, setTotalZappedAmount] = useState(0) const [commentCount, setCommentCount] = useState(0) const { commentEvents } = useComments(props) const { likesCount, disLikesCount } = useReactions({ pubkey: props.author, eTag: props.id, aTag: props.aTag }) const { getTotalZapAmount } = useNDKContext() useDidMount(() => { getTotalZapAmount(props.author, props.id, props.aTag) .then((res) => { setTotalZappedAmount(res.accumulatedZapAmount) }) .catch((err) => { toast.error(err.message || err) }) }) useEffect(() => { setCommentCount(commentEvents.length) }, [commentEvents]) const route = getModPageRoute( nip19.naddrEncode({ identifier: props.aTag, pubkey: props.author, kind: kinds.ClassifiedListing }) ) return (
{`featured {props.nsfw && (

NSFW

)}

{props.title}

{props.summary}

{props.game}

{likesCount}

{disLikesCount}

{commentCount}

{totalZappedAmount}

) })