import { useState } from 'react'; import api from '../api'; interface User { id: number; username: string; email: string; fullName: string; mandateId: number; } interface UseUserReturn { deleteUser: (userId: number) => Promise; updateUser: (userId: number, userData: Partial) => Promise; getUser: (userId: number) => Promise; error: string | null; isLoading: boolean; } export function useUser(): UseUserReturn { const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const deleteUser = async (userId: number): Promise => { setIsLoading(true); setError(null); try { await api.delete(`/api/users/${userId}`); } catch (error: any) { let errorMessage = 'Fehler beim Löschen des Benutzers'; 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); throw new Error(errorMessage); } finally { setIsLoading(false); } }; const updateUser = async (userId: number, userData: Partial): Promise => { setIsLoading(true); setError(null); try { const response = await api.put(`/api/users/${userId}`, userData); return response.data; } catch (error: any) { let errorMessage = 'Fehler beim Aktualisieren des Benutzers'; 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); throw new Error(errorMessage); } finally { setIsLoading(false); } }; const getUser = async (userId: number): Promise => { setIsLoading(true); setError(null); try { const response = await api.get(`/api/users/${userId}`); return response.data; } catch (error: any) { let errorMessage = 'Fehler beim Abrufen des Benutzers'; 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); throw new Error(errorMessage); } finally { setIsLoading(false); } }; return { deleteUser, updateUser, getUser, error, isLoading }; }