import { normalizeUrl } from '@/lib/url' import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { Button } from '../ui/button' import { Input } from '../ui/input' import { Loader2, Check } from 'lucide-react' export default function AddBlockedRelay() { const { t } = useTranslation() const { blockedRelays, addBlockedRelays } = useFavoriteRelays() const [input, setInput] = useState('') const [errorMsg, setErrorMsg] = useState('') const [successMsg, setSuccessMsg] = useState('') const [isLoading, setIsLoading] = useState(false) const saveRelay = async () => { if (!input || isLoading) return const normalizedUrl = normalizeUrl(input) if (!normalizedUrl) { setErrorMsg(t('Invalid URL')) setSuccessMsg('') return } if (blockedRelays.includes(normalizedUrl)) { setErrorMsg(t('Already blocked')) setSuccessMsg('') return } setIsLoading(true) setErrorMsg('') setSuccessMsg('') try { await addBlockedRelays([normalizedUrl]) setInput('') setSuccessMsg(t('Relay blocked successfully')) setTimeout(() => setSuccessMsg(''), 3000) } catch (error) { console.error('Failed to block relay:', error) setErrorMsg(t('Failed to block relay. Please try again.')) } finally { setIsLoading(false) } } const handleNewRelayInputChange = (e: React.ChangeEvent) => { setInput(e.target.value) setErrorMsg('') setSuccessMsg('') } const handleNewRelayInputKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault() saveRelay() } } return (
{t('Block Relay')}
{errorMsg &&
{errorMsg}
} {successMsg && (
{successMsg}
)}
) }