import { useEffect, useState } from 'react' import { type RemoteServer, testRemoteServerConnection } from '../api/remoteServers' interface Props { server?: RemoteServer onSubmit: (data: Partial) => Promise onCancel: () => void } export default function RemoteServerForm({ server, onSubmit, onCancel }: Props) { const [formData, setFormData] = useState({ name: server?.name || '', provider: server?.provider || 'generic', host: server?.host || '', port: server?.port ?? 22, username: server?.username || '', enabled: server?.enabled ?? true, }) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) useEffect(() => { setFormData({ name: server?.name || '', provider: server?.provider || 'generic', host: server?.host || '', port: server?.port ?? 22, username: server?.username || '', enabled: server?.enabled ?? true, }) }, [server]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError(null) try { await onSubmit(formData) } catch (err) { setError(err instanceof Error ? err.message : 'Failed to save server') } finally { setLoading(false) } } const handleTestConnection = async () => { if (!server?.uuid) return setLoading(true) setError(null) try { const result = await testRemoteServerConnection(server.uuid) alert(`Connection successful: ${result.address}`) } catch { setError('Connection failed') } finally { setLoading(false) } } return (

{server ? 'Edit Remote Server' : 'Add Remote Server'}

{error && (
{error}
)}
setFormData({ ...formData, name: e.target.value })} placeholder="My Production Server" className="w-full bg-gray-900 border border-gray-700 rounded-lg px-4 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500" />
setFormData({ ...formData, host: e.target.value })} placeholder="192.168.1.100" className="w-full bg-gray-900 border border-gray-700 rounded-lg px-4 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500" />
setFormData({ ...formData, port: parseInt(e.target.value) })} className="w-full bg-gray-900 border border-gray-700 rounded-lg px-4 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500" />
{formData.provider !== 'docker' && (
setFormData({ ...formData, username: e.target.value })} className="w-full bg-gray-900 border border-gray-700 rounded-lg px-4 py-2 text-white focus:outline-none focus:ring-2 focus:ring-blue-500" />
)}
{server && ( )}
) }