import { useEffect, useState } from 'react' import './Feed.css' import { useAuth } from '../context/AuthContext' import { getFeedPairs, saveProgress, getUserProgress } from '../api/directus' import PairSentenceCard from '../components/PairSentenceCard' import PairYesNoCard from '../components/PairYesNoCard' import PairWordCard from '../components/PairWordCard' // Points per answer_type const POINTS = { text: 2, yes_no: 2, word: 3, question: 3 } function buildCard(pair) { return { type: pair.answer_type, meta: { pairId: pair.id, points: pair.difficulty_level || POINTS[pair.answer_type] || 2, cardType: pair.answer_type }, card: pair, } } export default function Feed() { const { user, token } = useAuth() const [cards, setCards] = useState([]) const [done, setDone] = useState(new Set()) const [loading, setLoading] = useState(true) const [empty, setEmpty] = useState(false) const [totalEp, setTotalEp] = useState(null) // Target language from user profile, fall back to 'de' const lang = user?.language_target_short || 'de' useEffect(() => { getFeedPairs(token, lang, 20) .then(pairs => { const built = pairs.map(buildCard) setCards(built) setEmpty(built.length === 0) }) .catch(err => { console.error('Feed load error', err); setEmpty(true) }) .finally(() => setLoading(false)) }, [token, lang]) useEffect(() => { getUserProgress(token) .then(p => setTotalEp(p.total_ep)) .catch(() => {}) }, [token]) function handleComplete(item, result) { setDone(prev => new Set([...prev, item.meta.pairId])) const correct = result === 'correct' saveProgress({ pairId: item.meta.pairId, correct, points: correct ? item.meta.points : 0, userToken: token, }) .then(res => { if (res?.total_ep != null) setTotalEp(res.total_ep) }) .catch(err => console.error('saveProgress error', err)) } const visible = cards.filter(c => !done.has(c.meta.pairId)) if (loading) { return (