'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { fetchWithAuth } from '@/utils/api'; export default function Home() { const [formData, setFormData] = useState({ username: '', password: '', url: '' }); const [error, setError] = useState(''); const [loading, setLoading] = useState(true); const router = useRouter(); useEffect(() => { // Check if token and API URL exist const token = localStorage.getItem('token'); const apiUrl = localStorage.getItem('apiUrl'); if (token && apiUrl) { // Verify token is still valid fetchWithAuth('/api/servers') .then(response => { if (response.ok) { router.push('/guilds'); } else { // Clear invalid token localStorage.removeItem('token'); localStorage.removeItem('apiUrl'); setLoading(false); } }) .catch(() => { // Error means token is invalid or other issue localStorage.removeItem('token'); localStorage.removeItem('apiUrl'); setLoading(false); }); } else { setLoading(false); } }, [router]); const handleChange = (e) => { setFormData({ ...formData, [e.target.name]: e.target.value }); }; const handleSubmit = async (e) => { e.preventDefault(); setLoading(true); setError(''); try { const response = await fetch(`${formData.url}/api/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: formData.username, password: formData.password }), }); const data = await response.json(); if (!response.ok) { throw new Error(data.message || 'Login failed'); } // Save token and API URL to localStorage localStorage.setItem('token', data.token); localStorage.setItem('apiUrl', formData.url); // Redirect to guilds page router.push('/guilds'); } catch (err) { setError(err.message); } finally { setLoading(false); } }; if (loading) { return (

Loading...

); } return (

AleeBot

{error &&

{error}

}
); }