"use client"; import { useState, useEffect } from 'react'; import { useSession } from 'next-auth/react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import LinkTable from '@/components/ui/dashboard/LinkTable'; import styles from './Dashboard.module.css'; import { useToast } from '@/contexts/ToastContext'; export default function Dashboard() { const { data: session, status } = useSession(); const router = useRouter(); const { showToast } = useToast(); const [links, setLinks] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { if (status === "unauthenticated") { router.push('/'); } }, [status, router]); useEffect(() => { if (session?.user?.accountId) { fetchLinks(); } }, [session]); const fetchLinks = async () => { try { setLoading(true); const response = await fetch('/api/links'); if (!response.ok) { throw new Error('Failed to fetch links'); } const data = await response.json(); if (data.success) { setLinks(data.links); } else { showToast(data.message || 'Failed to load links', 'error'); } } catch (error) { console.error('Error fetching links:', error); showToast('Failed to load links', 'error'); } finally { setLoading(false); } }; if (status === "loading") { return