import { useNavigate } from 'react-router-dom'; import { useEffect, useState } from 'react'; import './TierList.css'; const API_BASE_URL = "/api"; const YourRanksContainer = () => { const navigate = useNavigate(); const [tierLists, setTierLists] = useState([]); const [loading, setLoading] = useState(true); const [newName, setNewName] = useState(''); const [creating, setCreating] = useState(false); useEffect(() => { fetchTierLists(); }, []); const fetchTierLists = () => { setLoading(true); fetch(`${API_BASE_URL}/tierlist/read`) .then(async res => { const text = await res.text(); try { const data = JSON.parse(text); setTierLists(Array.isArray(data) ? data : []); } catch (e) { console.error('Invalid JSON from tierlist/read:', text); setTierLists([]); } setLoading(false); }) .catch(error => { console.error('Error fetching tier lists:', error); setLoading(false); }); }; const handleCreate = async (e) => { e.preventDefault(); if (!newName.trim() || creating) return; setCreating(true); try { const response = await fetch(`${API_BASE_URL}/tierlist/create`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: newName.trim() }), }); const text = await response.text(); let data = null; try { data = JSON.parse(text); } catch (e) { console.error('Non-JSON response from create:', text); alert('Server error creating tier list: ' + text); setCreating(false); return; } console.log('Create response:', data); if (data && data.success && data.id) { setNewName(''); await fetchTierLists(); navigate(`/start-ranking/${data.id}`); } else { alert((data && data.message) ? data.message : 'Failed to create tier list. Please try again.'); } } catch (error) { console.error('Error creating tier list:', error); alert('Error creating tier list. Check console for details.'); } finally { setCreating(false); } }; const handleDelete = async (id) => { if (!window.confirm('Are you sure you want to delete this tier list?')) return; try { const response = await fetch(`${API_BASE_URL}/tierlist/delete`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id }), }); const text = await response.text(); let data = null; try { data = JSON.parse(text); } catch (e) { console.error('Non-JSON response from delete:', text); } if (data && data.success) { await fetchTierLists(); } else { alert((data && data.message) ? data.message : 'Failed to delete tier list. Please try again.'); } } catch (error) { console.error('Error deleting tier list:', error); alert('Error deleting tier list. Please try again.'); } }; return (
Create a new tier list or continue ranking your existing ones.
You haven't created any tier lists yet.
Create one above to get started!