import { createSignal } from 'solid-js'; import { gql } from '@urql/core'; import { createMutation } from '@urql/solid'; const CREATE_ROOM_MUTATION = gql` mutation CreateRoom( $name: String! $description: String $isPrivate: Boolean ) { createRoom(name: $name, description: $description, isPrivate: $isPrivate) { id name description isPrivate } } `; interface CreateRoomProps { onRoomCreated: (roomId: string) => void; } export function CreateRoom(props: CreateRoomProps) { const [name, setName] = createSignal(''); const [description, setDescription] = createSignal(''); const [isPrivate, setIsPrivate] = createSignal(false); const [error, setError] = createSignal(''); const [isOpen, setIsOpen] = createSignal(false); const [state, executeMutation] = createMutation(CREATE_ROOM_MUTATION); const handleSubmit = async (e: Event) => { e.preventDefault(); if (!name().trim()) { setError('Room name is required'); return; } try { const result = await executeMutation({ name: name(), description: description(), isPrivate: isPrivate(), }); if (result.error) { setError(result.error.message); return; } if (result.data?.createRoom) { setName(''); setDescription(''); setIsPrivate(false); setIsOpen(false); props.onRoomCreated(result.data.createRoom.id); } } catch (err) { setError(err instanceof Error ? err.message : 'An error occurred'); } }; return (