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(); const API_URL = import.meta.env.VITE_API_URL; try { const response = await axios.get(`${API_URL}/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); const API_URL = import.meta.env.VITE_API_URL; try { const token = JSON.parse(localStorage.getItem("user")).token; const response = await axios.post( `${API_URL}/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(); }, []); const filteredServers = servers.filter((server) => searchTerm.length > 0 ? server.name?.toLowerCase().includes(searchTerm.toLowerCase()) : true, ); return (
Synchronizing with Star-Net...
{searchTerm ? "No sectors match your search." : "No active universes found."}