/* ════════════════════════════════════════════════ Dashboard — Pertanyaan (Tanya Ustadz) Penulis lihat pertanyaan untuk artikelnya; admin lihat semua. ════════════════════════════════════════════════ */ function QuestionsModule({ user, toast }) { const [items, setItems] = useState([]); const [loading, setLoading] = useState(true); const [filter, setFilter] = useState('baru'); const [answering, setAnswering] = useState(null); const [answer, setAnswer] = useState(''); const [saving, setSaving] = useState(false); const isAdmin = user.role === 'admin'; const load = () => { setLoading(true); api.get('questions.php?action=list').then(r => { if (r.ok && r.questions) setItems(r.questions); }).finally(() => setLoading(false)); }; useEffect(load, []); const list = items.filter(q => filter === 'semua' ? true : filter === 'baru' ? q.status !== 'terjawab' : q.status === 'terjawab'); const openAnswer = (q) => { setAnswering(q); setAnswer(q.answer || ''); }; const sendAnswer = async () => { if (!answer.trim()) return; setSaving(true); const r = await api.post('questions.php?action=answer', { id: answering.id, answer }); setSaving(false); if (r.ok) { toast('✅ Jawaban terkirim ke email penanya'); setAnswering(null); load(); } else toast('⚠️ ' + (r.error || 'Gagal')); }; const del = async (q) => { if (!window.confirm('Hapus pertanyaan ini?')) return; const r = await api.post('questions.php?action=delete', { id: q.id }); if (r.ok) { toast('🗑 Dihapus'); load(); } }; const counts = { baru: items.filter(q => q.status !== 'terjawab').length, terjawab: items.filter(q => q.status === 'terjawab').length }; return (
Menampilkan pertanyaan untuk artikel yang Anda tulis.
} {loading ?{q.question}
{q.answer &&Jawaban: {q.answer}
}{answering.question}