import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import axiosInstance from "../api/axiosInstance"; import LoadingSpinner from "../components/LoadingSpinner"; interface User { 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 = axiosInstance.get("/users/na/all"); setUsers((await response).data); }; fetchUsers(); }, []); const handleUserClick = (username: string) => { navigate(`/users/${username}`); }; const handleSearch = async (e: React.FormEvent) => { e.preventDefault(); try { const response = await axiosInstance.get(`/users/na/search`, { params: { name: searchedUser }, }); setUsers(response.data); } catch (err: any) { const errorMessage = err.response?.data?.error || "Search failed"; setError(errorMessage); } }; if (users.length == 0) { return ; } if (error) { return (

Error

{error}

); } return (

All Users

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

{u.fullName}

@{u.username}

))}
); }; export default AllUsers;