import { useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { IconStarFilled } from '@tabler/icons-react' import { motion } from 'motion/react' import * as api from '../api' import { useStore } from '../store' export default function PuzzleRating() { const { t } = useTranslation() const puzzleId = useStore(s => s.puzzleId) const [avg, setAvg] = useState(0) const [count, setCount] = useState(0) const [myRating, setMyRating] = useState(null) const [hover, setHover] = useState(0) useEffect(() => { if (!puzzleId) return api.fetchRating(puzzleId).then(r => { setAvg(r.average) setCount(r.count) setMyRating(r.my_rating) }) }, [puzzleId]) const rate = async (rating: number) => { if (!puzzleId) return const r = await api.ratePuzzle(puzzleId, rating) setAvg(r.average) setCount(r.count) setMyRating(r.my_rating) } return ( {t('rating.label')}
setHover(0)}> {[1, 2, 3, 4, 5].map(n => ( ))}
{count > 0 && ( {t('rating.avg', { avg, count, unit: count === 1 ? t('rating.rating') : t('rating.ratings') })} )}
) }