import { useStuff } from '@/hooks/useStuff' import { cn } from '@/lib/utils' import { useNostr } from '@/providers/NostrProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider' import stuffStatsService from '@/services/stuff-stats.service' import { Event } from 'nostr-tools' import { useEffect, useState } from 'react' import BookmarkButton from '../BookmarkButton' import LikeButton from './LikeButton' import Likes from './Likes' import ReplyButton from './ReplyButton' import RepostButton from './RepostButton' import SeenOnButton from './SeenOnButton' import TopZaps from './TopZaps' import ZapButton from './ZapButton' export default function StuffStats({ stuff, className, classNames, fetchIfNotExisting = false, displayTopZapsAndLikes = false }: { stuff: Event | string className?: string classNames?: { buttonBar?: string } fetchIfNotExisting?: boolean displayTopZapsAndLikes?: boolean }) { const { isSmallScreen } = useScreenSize() const { pubkey } = useNostr() const [loading, setLoading] = useState(false) const { event } = useStuff(stuff) useEffect(() => { if (!fetchIfNotExisting) return setLoading(true) stuffStatsService.fetchStuffStats(stuff, pubkey).finally(() => setLoading(false)) }, [event, fetchIfNotExisting]) if (isSmallScreen) { return (
{displayTopZapsAndLikes && ( <> )}
e.stopPropagation()} >
) } return (
{displayTopZapsAndLikes && ( <> )}
e.stopPropagation()} >
e.stopPropagation()}>
) }