import { useState, useEffect } from 'react'; import api from '../api'; interface CurrentUser { id: number; username: string; fullName: string; email: string; privilege: string; mandateId: number; } interface UseCurrentUserReturn { user: CurrentUser | null; error: string | null; isLoading: boolean; refetch: () => Promise; } export function useCurrentUser(): UseCurrentUserReturn { const [user, setUser] = useState(null); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const fetchCurrentUser = async () => { setIsLoading(true); setError(null); try { const response = await api.get('/api/user/me'); setUser(response.data); } catch (error: any) { let errorMessage = 'Fehler beim Abrufen des Benutzerprofils'; if (error.response) { errorMessage = error.response.data?.detail || error.response.data?.message || errorMessage; } else if (error.request) { errorMessage = 'Keine Antwort vom Server erhalten'; } else { errorMessage = error.message || errorMessage; } setError(errorMessage); setUser(null); } finally { setIsLoading(false); } }; useEffect(() => { fetchCurrentUser(); }, []); return { user, error, isLoading, refetch: fetchCurrentUser }; }