import { useState } from 'react' import { Link } from 'react-router-dom' import { ChevronLeft, Network } from 'lucide-react' import { api } from '../../api/client' import AccountPicker, { type PickedAccount } from './AccountPicker' export default function ChangeIP() { const [selected, setSelected] = useState(null) const [ipAddress, setIpAddress] = useState('') const [loading, setLoading] = useState(false) const [message, setMessage] = useState('') const [error, setError] = useState('') const handleSelect = (acc: PickedAccount) => { setSelected(acc) setIpAddress(acc.ipAddress ?? '') setMessage('') setError('') } const handleSubmit = async () => { if (!selected || !ipAddress.trim()) return setLoading(true); setMessage(''); setError('') try { await api.post(`/nixserver/accounts/${selected.id}/change-ip`, { ipAddress: ipAddress.trim() }) setMessage(`IP address for "${selected.username}" updated to ${ipAddress.trim()}.`) setSelected(prev => prev ? { ...prev, ipAddress: ipAddress.trim() } : null) } catch (e: unknown) { setError((e as { response?: { data?: { error?: string } } })?.response?.data?.error ?? 'Action failed') } finally { setLoading(false) } } return (
Accounts / Change Site's IP Address

Change Site's IP Address

Assign a different IP address to a hosting account.

{selected && (

Current IP Address

{selected.ipAddress ?? 'Not assigned'}

setIpAddress(e.target.value)} placeholder="e.g. 192.168.1.100" className="w-full bg-[#0f1117] border border-[#2a2d3e] text-white font-mono text-sm rounded-lg px-3 py-2 focus:outline-none focus:border-indigo-500" />
)} {message && (

{message}

)} {error && (

{error}

)}
) }