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 (

Загрузка...

) } if (error && !board) { return (

Ошибка

{error}

) } return (

Приглашение на доску

{board.name}
Владелец: {board.owner_name}
{board.member_count > 0 && (
Участников: {board.member_count}
)}
{error && (
{error}
)} {user ? ( ) : (

Для присоединения необходимо войти в аккаунт

)}
) } export default BoardJoinPreview