import React, { useState, useEffect } from "react"; import axios from "axios"; import Button from "../../../components/ui/Button"; import "./ServerSection.css"; const ServerSection = ({ onBack, onSelect }) => { const [servers, setServers] = useState([]); const [loading, setLoading] = useState(false); const [joiningId, setJoiningId] = useState(null); const [searchTerm, setSearchTerm] = useState(""); // Стан для пошуку const fetchServers = async () => { setLoading(true); const startTime = Date.now(); try { const response = await axios.get( "http://localhost:3000/api/servers/list", ); const elapsedTime = Date.now() - startTime; const remainingTime = Math.max(0, 2000 - elapsedTime); // Трохи зменшив штучну затримку await new Promise((resolve) => setTimeout(resolve, remainingTime)); setServers(response.data); } catch (error) { console.error("Error fetching servers:", error); } finally { setLoading(false); } }; const handleJoinServer = async (server) => { setJoiningId(server._id); try { const token = JSON.parse(localStorage.getItem("user")).token; const response = await axios.post( "http://localhost:3000/api/servers/join", { serverId: server._id }, { headers: { Authorization: `Bearer ${token}` } }, ); if (response.data.success) { console.log(response.data); onSelect(response.data); } } catch (error) { console.error("Join request failed:", error); } finally { setJoiningId(null); } }; useEffect(() => { fetchServers(); }, []); // Фільтрація серверів на основі searchTerm const filteredServers = servers.filter((server) => searchTerm.length > 0 ? server.name?.toLowerCase().includes(searchTerm.toLowerCase()) : true, ); return (

Galaxy Browser

setSearchTerm(e.target.value)} />
{loading ? (

Synchronizing with Star-Net...

) : filteredServers.length > 0 ? ( filteredServers.map((server) => (
{server.name} {server.playersOnline || 0} / {server.maxPlayers || 100}
)) ) : (

{searchTerm ? "No sectors match your search." : "No active universes found."}

)}
); }; export default ServerSection;