import { useState } from 'react'
import { useNetwork } from '@txnlab/use-wallet-react'
function NodeConfigForm() {
const {
activeNetwork,
activeNetworkConfig,
updateAlgodConfig,
resetNetworkConfig
} = useNetwork()
const [formData, setFormData] = useState({
baseServer: activeNetworkConfig.algod.baseServer,
port: activeNetworkConfig.algod.port || '',
token: ''
})
const [error, setError] = useState('')
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
setError('')
try {
await updateAlgodConfig(activeNetwork, {
baseServer: formData.baseServer,
port: formData.port || undefined,
token: formData.token || ''
})
} catch (error: any) {
setError(error.message)
}
}
return (
<form onSubmit={handleSubmit}>
<h3>Configure {activeNetwork} Node</h3>
<div>
<label>Server URL:</label>
<input
type="url"
value={formData.baseServer}
onChange={(e) => setFormData((d) => ({ ...d, baseServer: e.target.value }))}
required
/>
</div>
<div>
<label>Port:</label>
<input
type="text"
value={formData.port}
onChange={(e) => setFormData((d) => ({ ...d, port: e.target.value }))}
placeholder="Optional"
/>
</div>
<div>
<label>Token:</label>
<input
type="password"
value={formData.token}
onChange={(e) => setFormData((d) => ({ ...d, token: e.target.value }))}
placeholder="Optional"
/>
</div>
{error && (
<div className="error">
{error}
</div>
)}
<div>
<button type="submit">
Update Node
</button>
<button type="button" onClick={() => resetNetworkConfig(activeNetwork)}>
Reset to Default
</button>
</div>
</form>
)
}