import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; interface User { id: number; username: string; fullName: string; } const AllUsers = () => { const [users, setUsers] = useState([]); const [searchedUser, setSearchedUser] = useState(""); const [error, setError] = useState(null); const navigate = useNavigate(); useEffect(() => { const fetchUsers = async () => { const response = await fetch("http://localhost:8080/users/all"); const data = await response.json(); setUsers(data); }; fetchUsers(); }, []); const handleUserClick = (userId: number) => { navigate(`/users/${userId}`); }; const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); try { const response = await fetch( `http://localhost:8080/users/search?name=${searchedUser}`, ); if (!response.ok) throw new Error("Search failed"); const data = await response.json(); setUsers(data); } catch (err: any) { setError(err.message); } }; if (users.length == 0) return
Loading...
; return (

All Users

setSearchedUser(e.target.value)} className="border p-2 rounded w-full" placeholder="Search for a user..." />
{users.map((u) => (
handleUserClick(u.id)} className="bg-white shadow-md rounded-lg p-4 hover:shadow-lg hover:bg-gray-50 cursor-pointer transition-all" >

{u.fullName}

@{u.username}

{u.id}

))}
); }; export default AllUsers;