import React, { useState, useEffect } from 'react'; import { authService } from '../services/AuthService'; import { DiscordUser } from '../types'; interface Player { uuid: string; username: string; tags: string[]; stats: { playtimeHours: number; level: number; role: string; }; } const LinkPlayer: React.FC = () => { const [user, setUser] = useState(null); const [unlinkedPlayers, setUnlinkedPlayers] = useState([]); const [loading, setLoading] = useState(true); const [linking, setLinking] = useState(false); const [error, setError] = useState(null); useEffect(() => { // Get current user const unsubscribe = authService.subscribe(setUser); return unsubscribe; }, []); useEffect(() => { // Fetch unlinked players if (user) { fetchUnlinkedPlayers(); } }, [user]); const fetchUnlinkedPlayers = async () => { try { setLoading(true); const response = await fetch('https://vollidioten.ceraticsoft.de/api/unlinked-players'); if (response.ok) { const players = await response.json(); setUnlinkedPlayers(players); } else { setError('Fehler beim Laden der Spielerliste'); } } catch (err) { console.error('Error fetching unlinked players:', err); setError('Netzwerkfehler beim Laden der Spielerliste'); } finally { setLoading(false); } }; const linkPlayer = async (playerUuid: string) => { if (!user) return; try { setLinking(true); setError(null); const response = await fetch('https://vollidioten.ceraticsoft.de/api/link-user', { method: 'POST', headers: { 'Content-Type': 'application/json', }, credentials: 'include', body: JSON.stringify({ playerUuid }), }); if (response.ok) { // Update user data const updatedUser = { ...user, linkedPlayerUuid: playerUuid }; setUser(updatedUser); // Redirect to dashboard window.location.href = '/'; } else { setError('Fehler beim Verknüpfen des Accounts'); } } catch (err) { console.error('Error linking player:', err); setError('Netzwerkfehler beim Verknüpfen'); } finally { setLinking(false); } }; if (!user) { return (

Nicht eingeloggt

Bitte loggen Sie sich zuerst ein.

); } if (user.linkedPlayerUuid) { // User is already linked, redirect to dashboard window.location.href = '/'; return null; } return (
{user.username}

Willkommen, {user.username}!

Verbinde deinen Discord-Account mit einem Bürger

Wähle deinen Bürger

Wähle einen Bürger aus der Liste der verfügbaren Charaktere aus, um deinen Discord-Account zu verknüpfen.

{error && (

{error}

)} {loading ? (
) : (
{unlinkedPlayers.map((player) => (
{player.username.charAt(0).toUpperCase()}

{player.username}

Level {player.stats.level}

{player.tags.map((tag, index) => ( {tag} ))}

Spielzeit: {player.stats.playtimeHours}h

Rolle: {player.stats.role}

))}
)} {unlinkedPlayers.length === 0 && !loading && (

Keine verfügbaren Bürger gefunden.

Alle Bürger sind bereits verknüpft oder es gibt einen Fehler beim Laden.

)}
); }; export default LinkPlayer;