feat: remove state and let rust handle

This commit is contained in:
2026-09-12 19:37:59 +02:00
parent 2717dfe99a
commit 1e00ca3a7c
17 changed files with 221 additions and 1426 deletions
+19 -20
View File
@@ -1,5 +1,5 @@
import { useState, useRef } from 'react';
import { DSP, DSP_DEFAULT_PARAMETERS, DSPTypes } from '../../types';
import { DSP_DEFAULT_PARAMETERS, DSPTypes } from '../../types';
import Button from '../../components/Button/Button';
import Card from '../../components/Card/Card';
import ChoiceStepper from '../../components/ChoiceStepper/ChoiceStepper';
@@ -37,7 +37,7 @@ function AddDSPForm({
onAdd,
}: {
onCancel: () => void;
onAdd: (dsp: Omit<DSP, 'status' | 'id' | 'state' | 'meters' | 'pollingPaused'>) => void;
onAdd: (params: DSPForm) => void;
}) {
const [form, setForm] = useState<DSPForm>({
name: '',
@@ -60,39 +60,37 @@ function AddDSPForm({
form.deviceId <= 255;
function validateIp() {
if (form.demo) return;
if (form.demo) return;
const ip = form.ip.trim();
const ip = form.ip.trim();
if (isValidIPv4(ip)) {
lastValidIp.current = ip;
if (isValidIPv4(ip)) {
lastValidIp.current = ip;
if (ip !== form.ip) {
setForm((prev) => ({ ...prev, ip }));
if (ip !== form.ip) {
setForm((prev) => ({ ...prev, ip }));
}
return;
}
return;
setForm((prev) => ({
...prev,
ip: lastValidIp.current,
}));
}
setForm((prev) => ({
...prev,
ip: lastValidIp.current,
}));
}
function submit() {
if (!canSubmit) return;
onAdd({ ...form });
onAdd(form);
}
return (
<Card className="add-dsp-form">
<div className="add-dsp-form__header">
<h1 className="add-dsp-form__title">Add DSP</h1>
<p className="add-dsp-form__hint">
Register a new device to control from this app.
</p>
<p className="add-dsp-form__hint">Register a new device to control from this app.</p>
</div>
<div className="add-dsp-form__field">
@@ -109,6 +107,7 @@ function AddDSPForm({
<div className="add-dsp-form__field">
<label htmlFor="f-type">Model</label>
<ChoiceSelect
className=""
id="f-type"
value={form.type}
options={DSP_TYPES}
@@ -200,4 +199,4 @@ function AddDSPForm({
);
}
export default AddDSPForm;
export default AddDSPForm;