import { useState } from 'react' import { RemoteServer } from '../hooks/useRemoteServers' import { remoteServersAPI } from '../services/api' interface RemoteServerFormProps { server?: RemoteServer onSubmit: (data: Partial) => Promise onCancel: () => void } export default function RemoteServerForm({ server, onSubmit, onCancel }: RemoteServerFormProps) { const [formData, setFormData] = useState({ name: server?.name || '', provider: server?.provider || 'generic', host: server?.host || '', port: server?.port || 80, username: server?.username || '', enabled: server?.enabled ?? true, }) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const [testResult, setTestResult] = useState(null) const [testing, setTesting] = useState(false) 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 remote server') } finally { setLoading(false) } } const handleTestConnection = async () => { if (!server) return setTesting(true) setTestResult(null) setError(null) try { const result = await remoteServersAPI.test(server.uuid) setTestResult(result) } catch (err) { setError(err instanceof Error ? err.message : 'Failed to test connection') } finally { setTesting(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" />
setFormData({ ...formData, username: e.target.value })} placeholder="admin" 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" />
{/* Connection Test */} {server && (
{testResult && (
{testResult.reachable ? '✓ Connection Successful' : '✗ Connection Failed'}
{testResult.error && (
{testResult.error}
)} {testResult.address && (
Address: {testResult.address}
)}
)}
)}
) }