import React, { useState, useEffect } from 'react' import { useAuth } from './auth/AuthContext' import './BoardJoinPreview.css' function BoardJoinPreview({ inviteToken, onNavigate }) { const { authFetch, user } = useAuth() const [board, setBoard] = useState(null) const [loading, setLoading] = useState(true) const [joining, setJoining] = useState(false) const [error, setError] = useState('') useEffect(() => { if (inviteToken) { fetchBoardInfo() } }, [inviteToken]) const fetchBoardInfo = async () => { try { const res = await authFetch(`/api/wishlist/invite/${inviteToken}`) if (res.ok) { setBoard(await res.json()) } else { const err = await res.json() setError(err.error || 'Ссылка недействительна или устарела') } } catch (err) { setError('Ошибка загрузки') } finally { setLoading(false) } } const handleJoin = async () => { if (!user) { // Сохраняем токен для возврата после логина sessionStorage.setItem('pendingInviteToken', inviteToken) onNavigate('login') return } setJoining(true) setError('') try { const res = await authFetch(`/api/wishlist/invite/${inviteToken}/join`, { method: 'POST' }) if (res.ok) { const data = await res.json() // Переходим на доску onNavigate('wishlist', { boardId: data.board.id }) } else { const err = await res.json() setError(err.error || 'Ошибка при присоединении') } } catch (err) { setError('Ошибка при присоединении') } finally { setJoining(false) } } const handleGoBack = () => { onNavigate('wishlist') } if (loading) { return (
Загрузка...
{error}
Для присоединения необходимо войти в аккаунт