import React, { useEffect, useState } from 'react'; import { fetchPlayers,createPlayer,deletePlayer,updatePlayer } from './api'; import { Navigate, useNavigate } from 'react-router-dom'; import { User, UserRole } from '../components/interfaces/users'; // interface Player { // id: string; // name: string; // email: string; // } export default function PlayerManagement() { const [players, setPlayers] = useState([]); const [Username, setName] = useState(""); const [Email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [editingId, setEditingId] = useState(null); const token = localStorage.getItem('token'); const navigate = useNavigate(); useEffect(() => { if (token) loadPlayers(token); }, [token]); const loadPlayers = async (token: string) => { try { const data = await fetchPlayers(token); console.log("Geladene Spieler:", data); setPlayers(data); } catch (error) { console.error("Fehler beim Laden der Spieler:", error); } }; const handleAddOrUpdate = () => { if (!Username || !Email) return; if (editingId !== null) { setPlayers(players.map(p => p.UUID === editingId ? { ...p, Username, Email } : p )); if (token) { updatePlayer(editingId, { Username, Email }, token); } setEditingId(null); } else { const newPlayer: User = { UUID: "", Username:"", Email: "", Role: [UserRole.Player], IsActive: true, }; if (token) { createPlayer(newPlayer, token); setPlayers([...players, newPlayer]); } } setName(""); setEmail(""); }; const handleViewEdit = (playerID: string) => () => { navigate(`/players/${playerID}`); }; const handleDelete = (id: string) => { setPlayers(players.filter(p => p.UUID !== id)); if (token) { deletePlayer(id, token); } if (editingId === id) { setEditingId(null); setName(""); setEmail(""); } }; return (

🏐 Spielerverwaltung

setName(e.target.value)} className="border p-2 rounded" /> setEmail(e.target.value)} className="border p-2 rounded" /> setPassword(e.target.value)} className="border p-2 rounded" />
{players.map(player => ( ))}
Name Email Aktionen
{player.Username} {player.Email}
); }