// 加入房间弹窗 'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { X, Lock } from 'lucide-react'; import { useWatchRoomContext } from '@/components/WatchRoomProvider'; interface JoinRoomModalProps { onClose: () => void; roomId?: string; // 可选的预填房间号 } export default function JoinRoomModal({ onClose, roomId: initialRoomId }: JoinRoomModalProps) { const router = useRouter(); const { joinRoom } = useWatchRoomContext(); const [roomId, setRoomId] = useState(initialRoomId || ''); const [password, setPassword] = useState(''); const [userName, setUserName] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); if (!roomId.trim()) { setError('请输入房间号'); return; } if (!userName.trim()) { setError('请输入您的昵称'); return; } setLoading(true); try { const { room, members } = await joinRoom({ roomId: roomId.trim().toUpperCase(), password: password.trim() || undefined, userName: userName.trim(), }); console.log('[WatchRoom] Joined room:', room, 'Members:', members); onClose(); // 加入成功后跳转到对应页面 // 如果房主已经在播放,跳转到播放页面 // 否则等待房主开始播放 } catch (err: any) { setError(err.message || '加入房间失败'); } finally { setLoading(false); } }; return (
加入后将跟随房主的播放内容