import { useState, useEffect } from 'react' import { Link } from 'react-router-dom' import { ChevronLeft, Save } from 'lucide-react' import { api } from '../../api/client' import AccountPicker, { type PickedAccount } from './AccountPicker' interface Package { id: number name: string diskMb: number bandwidthMb: number } export default function Modify() { const [selected, setSelected] = useState(null) const [email, setEmail] = useState('') const [notes, setNotes] = useState('') const [packageId, setPackageId] = useState('') const [packages, setPackages] = useState([]) const [loading, setLoading] = useState(false) const [message, setMessage] = useState('') const [error, setError] = useState('') useEffect(() => { api.get('/nixserver/packages').then(r => setPackages(r.data.data?.items ?? r.data.data ?? [])).catch(() => {}) }, []) const handleSelect = (acc: PickedAccount) => { setSelected(acc) setEmail(acc.email) setNotes('') setPackageId('') setMessage('') setError('') } const handleSubmit = async () => { if (!selected) return setLoading(true); setMessage(''); setError('') const body: Record = {} if (email && email !== selected.email) body.email = email if (notes) body.notes = notes if (packageId) body.packageId = parseInt(packageId, 10) try { await api.put(`/nixserver/accounts/${selected.id}`, body) setMessage(`Account "${selected.username}" has been updated.`) } catch (e: unknown) { setError((e as { response?: { data?: { error?: string } } })?.response?.data?.error ?? 'Action failed') } finally { setLoading(false) } } return (
Accounts / Modify an Account

Modify an Account

Update account settings such as email, notes, or package.

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