'use client';

import {useEffect, useState} from 'react';
import {useRouter} from 'next/navigation';
import {jwtDecode} from 'jwt-decode';
import UserWelcomeFullScreen from '@/components/UserWelcomeFullScreen'

type DecodedToken = {
    id: number;
    email: string;
    fullName: string;
    exp: number;
};

const DashboardPage = () => {
    const router = useRouter();
    const [user, setUser] = useState<DecodedToken | null>(null);
    const [loading, setLoading] = useState(true);

    const handleLogout = () => {
        localStorage.removeItem('token');
        router.push('/auth/login');
    };

    useEffect(() => {
        const token = localStorage.getItem('token');

        if (!token) {
            router.replace('/auth/login');
            return;
        }

        try {
            const decoded = jwtDecode<DecodedToken>(token);

            if (decoded.exp * 1000 < Date.now()) {
                localStorage.removeItem('token');
                router.replace('/auth/login');
                return;
            }

            setUser(decoded);
        } catch {
            localStorage.removeItem('token');
            router.replace('/auth/login');
        } finally {
            setLoading(false);
        }
    }, [router]);

    if (loading) {
        return (
            <div className="flex h-screen items-center justify-center">
                <p>Loading dashboard...</p>
            </div>
        );
    }

    return (
        <UserWelcomeFullScreen User={user}/>
    );
};

export default DashboardPage;
