'use client'; import { useTranslations } from 'next-intl'; import { useState } from 'react'; import { captureScreenshot } from '@/lib/bug-report-api'; import { useAuthStore } from '@/lib/stores/auth-store'; import { BugReportDialog } from './bug-report-dialog'; /** * Fehler-melden-Knopf in der Kopfzeile (quick-260914-m97), Stil wie * `ThemeToggle`. Kernanforderung: das Bild der Seite wird aufgenommen, * BEVOR der Dialog erscheint — sonst waere der Dialog im Bild. */ export function BugReportButton() { const t = useTranslations('bugReport'); const user = useAuthStore((s) => s.user); const isAdmin = user?.role === 'ADMIN' || user?.role === 'SUPER_ADMIN'; const [capturing, setCapturing] = useState(false); const [open, setOpen] = useState(false); const [screenshot, setScreenshot] = useState(null); const handleClick = async () => { if (capturing) return; setCapturing(true); // Reihenfolge ist die Kernanforderung: erst aufnehmen, dann oeffnen. const shot = await captureScreenshot(); setScreenshot(shot); setOpen(true); setCapturing(false); }; return ( <> {/* Nur eingehaengt, solange offen (quick-260921-ldf): so startet jedes Oeffnen mit frischem Zustand — Haekchen, Text und Status stimmen schon im ersten Commit, statt einen Commit spaeter nachgezogen zu werden. */} {open && setOpen(false)} />} ); }