ux: admin/internet: visual clue that https form is being saved

Massimo Melina committed Dec 30, 2024 at 19:31 UTC 27e8bc910243185b0ab8d3419325f7f044297728
1 file changed +4 -1
admin/src/InternetPage.ts
+4 -1
@@ -164,6 +164,7 @@ export default function InternetPage({ setTitleSide }: PageProps) {
164 const [values, setValues] = useState<any>()
165 const cert = useApiEx('get_cert')
166 useEffect(() => { apiCall('get_config', { only: ['acme_domain', 'acme_email', 'acme_renew'] }).then(setValues) } , [])
167 + const [saving, setSaving] = useState(false)
168 if (!status || !values) return h(CircularProgress)
169 const { https } = status.data ||{}
170 const disabled = https?.port === PORT_DISABLED
@@ -187,7 +188,8 @@ export default function InternetPage({ setTitleSide }: PageProps) {
188 set(v, k) {
189 setValues((was: any) => {
190 const values = { ...was, [k]: v }
190 - apiCall('set_config', { values })
191 + setSaving(true)
192 + apiCall('set_config', { values }).finally(() => setSaving(false))
193 return values
194 })
195 },
@@ -214,6 +216,7 @@ export default function InternetPage({ setTitleSide }: PageProps) {
216 save: {
217 children: "Request",
218 startIcon: h(Send),
219 + ...saving && { loading: true },
220 async onClick() {
221 const [domain, ...altNames] = values.acme_domain.split(',')
222 const fresh = domain === cert.data.subject?.CN && Number(new Date(cert.data.validTo)) - Date.now() >= 30 * DAY