import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; import { useRoom } from '../hooks/useRoom'; import { questionsApi } from '../services/api'; import NameInputModal from '../components/NameInputModal'; const CreateRoom = () => { const navigate = useNavigate(); const { user, loginAnonymous, loading: authLoading } = useAuth(); const { createRoom, loading: roomLoading } = useRoom(); const [questionPacks, setQuestionPacks] = useState([]); const [selectedPackId, setSelectedPackId] = useState(''); const [settings, setSettings] = useState({ maxPlayers: 10, allowSpectators: true, timerEnabled: false, timerDuration: 30, password: '', }); const [loading, setLoading] = useState(true); const [isNameModalOpen, setIsNameModalOpen] = useState(false); const [isHostNameModalOpen, setIsHostNameModalOpen] = useState(false); // Проверка авторизации и показ модального окна для ввода имени useEffect(() => { if (!authLoading && !user) { setIsNameModalOpen(true); } else if (user) { setIsNameModalOpen(false); } }, [authLoading, user]); // Обработка ввода имени и авторизация const handleNameSubmit = async (name) => { try { await loginAnonymous(name); setIsNameModalOpen(false); } catch (error) { console.error('Login error:', error); alert('Ошибка при авторизации. Попробуйте еще раз.'); } }; useEffect(() => { const fetchPacks = async () => { try { const response = await questionsApi.getPacks(user?.id); setQuestionPacks(response.data); } catch (error) { console.error('Error fetching question packs:', error); } finally { setLoading(false); } }; if (user) { fetchPacks(); } else { setLoading(false); } }, [user]); const handleCreateRoom = async () => { if (!user) { setIsNameModalOpen(true); return; } // Всегда спрашиваем имя хоста перед созданием комнаты setIsHostNameModalOpen(true); }; const handleHostNameSubmit = async (name) => { setIsHostNameModalOpen(false); try { // Очищаем пустой пароль перед отправкой const cleanSettings = { ...settings }; if (!cleanSettings.password || !cleanSettings.password.trim()) { delete cleanSettings.password; } else { cleanSettings.password = cleanSettings.password.trim(); } const room = await createRoom( user.id, selectedPackId || undefined, cleanSettings, name.trim(), ); navigate(`/room/${room.code}`); } catch (error) { console.error('Error creating room:', error); alert('Ошибка создания комнаты'); } }; if (loading) { return