'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { ChevronRight, Heart, Plus, UsersRound } from 'lucide-react'; import { useAuth } from '@/components/id/auth-provider'; import { IdShell } from '@/components/id/shell'; import { useToast } from '@/components/id/toast-provider'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { useRequireAuth } from '@/hooks/use-require-auth'; import { apiFetch, FamilyGroup, fetchFamilyGroups, getApiErrorMessage } from '@/lib/api'; export default function FamilyPage() { const router = useRouter(); const { user, token } = useAuth(); const { isReady, isPinLocked } = useRequireAuth(); const { showToast } = useToast(); const [groups, setGroups] = useState([]); const [name, setName] = useState('Моя семья'); const [creating, setCreating] = useState(false); useEffect(() => { if (!user || !token || isPinLocked) return; fetchFamilyGroups(user.id, token) .then((response) => setGroups(response.groups ?? [])) .catch((error) => { const message = getApiErrorMessage(error, 'Не удалось загрузить семью'); if (message) showToast(message); }); }, [isPinLocked, showToast, token, user]); async function createGroup() { if (!user || !token) return; setCreating(true); try { const group = await apiFetch('/family/groups', { method: 'POST', body: JSON.stringify({ ownerId: user.id, name }) }, token); router.push(`/family/${group.id}`); } catch (error) { const message = getApiErrorMessage(error, 'Не удалось создать семью'); if (message) showToast(message); } finally { setCreating(false); } } if (!isReady) { return (
Загрузка...
); } return (

Семья

Семейный доступ

Приглашайте близких, общайтесь в чатах и управляйте семейной группой.

setName(event.target.value)} placeholder="Название семьи" />
{groups.length ? groups.map((group) => ( )) : (
Семейных групп пока нет
)}
); }