import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { getStoredRelays, storeRelays, testRelay } from '../utils/relay'; import type { RelayConfig } from '../types/identity'; export function RelaySettingsScreen(): JSX.Element { const navigate = useNavigate(); const [relays, setRelays] = useState([]); const [newEndpoint, setNewEndpoint] = useState(''); const [testing, setTesting] = useState(null); useEffect(() => { setRelays(getStoredRelays()); }, []); const handleAdd = (): void => { if (newEndpoint.trim() === '') { return; } const newRelay: RelayConfig = { endpoint: newEndpoint.trim(), priority: relays.length, enabled: true, }; const updated = [...relays, newRelay]; setRelays(updated); storeRelays(updated); setNewEndpoint(''); }; const handleRemove = (index: number): void => { const updated = relays.filter((_, i) => i !== index); setRelays(updated); storeRelays(updated); }; const handleToggle = (index: number): void => { const updated = [...relays]; updated[index] = { ...updated[index]!, enabled: !updated[index]!.enabled }; setRelays(updated); storeRelays(updated); }; const handleTest = async (endpoint: string): Promise => { setTesting(endpoint); const isOk = await testRelay(endpoint); setTesting(null); if (isOk) { alert('Relais accessible'); } else { alert('Relais inaccessible'); } }; return (

Réglages relais

Liste des relais

{relays.length === 0 ? (

Aucun relais configuré

) : (
    {relays.map((relay, index) => (
  • { handleToggle(index); }} aria-label={`Activer ${relay.endpoint}`} /> {relay.endpoint}
  • ))}
)}

Ajouter un relais

{ setNewEndpoint(e.target.value); }} placeholder="http://relay.example.com:3019" onKeyDown={(e) => { if (e.key === 'Enter') { handleAdd(); } }} />
); }