// frontend/src/pages/Feedback.tsx import { useState, type FormEvent } from 'react' import Textarea from '../components/Textarea' const API_URL = import.meta.env.VITE_API_URL ?? 'http://localhost:8080' export default function Feedback() { const [message, setMessage] = useState('') const [isSubmitting, setIsSubmitting] = useState(false) const [error, setError] = useState(null) const [successMessage, setSuccessMessage] = useState(null) async function handleSubmit(event: FormEvent) { event.preventDefault() const trimmedMessage = message.trim() if (!trimmedMessage) { setError('Bitte gib dein Feedback ein.') setSuccessMessage(null) return } setIsSubmitting(true) setError(null) setSuccessMessage(null) try { const response = await fetch(`${API_URL}/feedback`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, credentials: 'include', body: JSON.stringify({ message: trimmedMessage, }), }) if (!response.ok) { const errorData = await response.json().catch(() => null) throw new Error(errorData?.error ?? 'Feedback konnte nicht gesendet werden') } setMessage('') setSuccessMessage('Danke, dein Feedback wurde gespeichert.') } catch (error) { setError( error instanceof Error ? error.message : 'Feedback konnte nicht gesendet werden', ) } finally { setIsSubmitting(false) } } return (

Feedback

Teile uns mit, wenn dir etwas auffällt, etwas nicht funktioniert oder du eine Idee zur Verbesserung hast. Beim Absenden wird automatisch ein technisches Log mit deinem Benutzerkonto angehängt.

{successMessage && (
{successMessage}
)} {error && (
{error}
)}