import { useState } from 'react'; import { Dialog } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { Select } from '@/components/ui/select'; import { apiClient } from '@/services/api/client'; import { useToast } from '@/hooks/useToast'; import { useChatStore } from '../store/chatStore'; import { parseApiError } from '@/utils/apiErrorHandler'; // FE-PAGE-005: Complete Chat page implementation - Room Management interface CreateRoomDialogProps { open: boolean; onClose: () => void; } export function CreateRoomDialog({ open, onClose }: CreateRoomDialogProps) { const [name, setName] = useState(''); const [type, setType] = useState<'public' | 'private'>('public'); const [isCreating, setIsCreating] = useState(false); const toast = useToast(); const { addConversation, setCurrentConversation } = useChatStore(); const handleCreate = async () => { if (!name.trim()) { toast.error('Room name is required'); return; } try { setIsCreating(true); const response = await apiClient.post('/conversations', { name: name.trim(), type, }); const newRoom = { id: response.data.id || response.data.conversation?.id, name: response.data.name || response.data.conversation?.name, type: response.data.type || response.data.conversation?.type || type, participants: response.data.participants || [], unread_count: 0, }; addConversation(newRoom); setCurrentConversation(newRoom.id); toast.success('Room created successfully'); setName(''); setType('public'); onClose(); onClose(); } catch (error: unknown) { const apiError = parseApiError(error); toast.error(apiError.message); } finally { setIsCreating(false); } }; return (
setName(e.target.value)} placeholder="Enter room name" maxLength={100} />