'use client'; import { useEffect, useState } from 'react'; import Link from 'next/link'; import { useRouter, useSearchParams } from 'next/navigation'; import { authApi, wishlistsApi, type Wishlist } from '@/lib/api'; export default function HomePage() { const router = useRouter(); const params = useSearchParams(); const [state, setState] = useState<'checking' | 'guest' | 'none'>('checking'); const [wishlists, setWishlists] = useState([]); useEffect(() => { let cancelled = false; (async () => { const adm = params.get('adm'); const usr = params.get('usr'); try { if (adm) { await authApi.session({ adm }); router.replace('/admin'); return; } if (usr) { await authApi.session({ usr }); } const who = await authApi.whoami(); if (cancelled) return; if (who.role === 'admin') { router.replace('/admin'); return; } if (who.role === 'guest') { const lists = await wishlistsApi.getAllPublic(); if (cancelled) return; if (lists.length === 1) { router.replace(`/${lists[0].slug}`); return; } setWishlists(lists); setState('guest'); return; } setState('none'); } catch { if (!cancelled) setState('none'); } })(); return () => { cancelled = true; }; }, [params, router]); if (state === 'checking') { return
Carregando…
; } if (state === 'guest') { return (

Bem-vindo

{wishlists.length === 0 ? (

Nenhuma lista disponível ainda.

) : (
    {wishlists.map((w) => (
  • {w.name}
    {w.description && (
    {w.description}
    )}
  • ))}
)}
); } return (

Convite necessário

Esta página é por convite. Use o link que recebeu.

); }