feat: '🔄 Neu übersetzen' im Review-Modal (überschreibt Zielsprachen)
Ruft /pairs/:id/translate mit overwrite:true, um falsche bestehende Übersetzungen (z.B. SV) neu zu generieren, und lädt den Modal-Inhalt neu. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -59,13 +59,22 @@ function buildRows(content) {
|
||||
return rows;
|
||||
}
|
||||
|
||||
export default function PairReviewModal({ pair, content, onClose, onDone }) {
|
||||
const [busy, setBusy] = useState(null); // 'review' | 'block'
|
||||
export default function PairReviewModal({ pair, content, onClose, onDone, onRetranslate }) {
|
||||
const [busy, setBusy] = useState(null); // 'review' | 'block' | 'retranslate'
|
||||
const [missing, setMissing] = useState(null);
|
||||
const [error, setError] = useState(null);
|
||||
|
||||
const rows = buildRows(content);
|
||||
|
||||
async function handleRetranslate() {
|
||||
setBusy('retranslate'); setMissing(null); setError(null);
|
||||
try {
|
||||
await onRetranslate();
|
||||
} catch (e) {
|
||||
setError(e.message);
|
||||
} finally { setBusy(null); }
|
||||
}
|
||||
|
||||
async function handleReview() {
|
||||
setBusy('review'); setMissing(null); setError(null);
|
||||
try {
|
||||
@@ -129,7 +138,15 @@ export default function PairReviewModal({ pair, content, onClose, onDone }) {
|
||||
)}
|
||||
|
||||
{/* Footer — Aktionen */}
|
||||
<div className="flex items-center justify-end gap-2 px-6 py-4 border-t border-slate-200">
|
||||
<div className="flex items-center gap-2 px-6 py-4 border-t border-slate-200">
|
||||
{onRetranslate && (
|
||||
<button onClick={handleRetranslate} disabled={!!busy}
|
||||
className="px-4 py-2 text-sm font-medium rounded-lg bg-indigo-50 text-indigo-700 hover:bg-indigo-100 disabled:opacity-40"
|
||||
title="Alle Zielsprachen neu übersetzen (überschreibt vorhandene)">
|
||||
{busy === 'retranslate' ? 'Läuft …' : '🔄 Neu übersetzen'}
|
||||
</button>
|
||||
)}
|
||||
<div className="flex-1" />
|
||||
<button onClick={onClose} disabled={!!busy}
|
||||
className="px-4 py-2 text-sm rounded-lg text-slate-500 hover:bg-slate-100 disabled:opacity-40">Abbrechen</button>
|
||||
<button onClick={handleBlock} disabled={!!busy}
|
||||
|
||||
Reference in New Issue
Block a user