diff --git a/frontend/src/api/remoteServers.ts b/frontend/src/api/remoteServers.ts index 02032b5d..832c514c 100644 --- a/frontend/src/api/remoteServers.ts +++ b/frontend/src/api/remoteServers.ts @@ -43,3 +43,8 @@ export const testRemoteServerConnection = async (uuid: string): Promise<{ addres const { data } = await client.post<{ address: string }>(`/remote-servers/${uuid}/test`); return data; }; + +export const testCustomRemoteServerConnection = async (host: string, port: number): Promise<{ address: string; reachable: boolean; error?: string }> => { + const { data } = await client.post<{ address: string; reachable: boolean; error?: string }>('/remote-servers/test', { host, port }); + return data; +}; diff --git a/frontend/src/components/RemoteServerForm.tsx b/frontend/src/components/RemoteServerForm.tsx index f5765dd9..18969fae 100644 --- a/frontend/src/components/RemoteServerForm.tsx +++ b/frontend/src/components/RemoteServerForm.tsx @@ -1,5 +1,6 @@ import { useEffect, useState } from 'react' -import { type RemoteServer, testRemoteServerConnection } from '../api/remoteServers' +import { Loader2, Check, X, CircleHelp } from 'lucide-react' +import { type RemoteServer, testCustomRemoteServerConnection } from '../api/remoteServers' interface Props { server?: RemoteServer @@ -19,6 +20,7 @@ export default function RemoteServerForm({ server, onSubmit, onCancel }: Props) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) + const [testStatus, setTestStatus] = useState<'idle' | 'testing' | 'success' | 'error'>('idle') useEffect(() => { setFormData({ @@ -45,16 +47,21 @@ export default function RemoteServerForm({ server, onSubmit, onCancel }: Props) } const handleTestConnection = async () => { - if (!server?.uuid) return - setLoading(true) + if (!formData.host || !formData.port) return + setTestStatus('testing') setError(null) try { - const result = await testRemoteServerConnection(server.uuid) - alert(`Connection successful: ${result.address}`) + const result = await testCustomRemoteServerConnection(formData.host, formData.port) + if (result.reachable) { + setTestStatus('success') + setTimeout(() => setTestStatus('idle'), 3000) + } else { + setTestStatus('error') + setError(`Connection failed: ${result.error || 'Unknown error'}`) + } } catch { + setTestStatus('error') setError('Connection failed') - } finally { - setLoading(false) } } @@ -156,16 +163,22 @@ export default function RemoteServerForm({ server, onSubmit, onCancel }: Props)
- {server && ( - - )} +