This commit is contained in:
Mateusz Gruszczyński
2026-09-18 11:21:48 +02:00
parent 3ffb02595e
commit 8d96ad2d38
29 changed files with 758 additions and 256 deletions
+24 -7
View File
@@ -366,22 +366,39 @@ $('#tokenForm').addEventListener('submit', async event => {
$('#discoverForm').addEventListener('submit', async event => {
event.preventDefault(); const form = event.currentTarget, raw = Object.fromEntries(new FormData(form));
await runFormTask(form, async () => {
const result = await api('/api/discovery', { method: 'POST', body: { protocol_version: Number(raw.protocol_version), passes: Number(raw.passes), timeout_ms: Number(raw.timeout_ms) } });
form.closest('dialog').close(); await loadBootstrap(); toast(tr('toast.found', { count: result.count })); showDiscoveryNames(result.new_device_ids || []);
const protocolVersion = Number(raw.protocol_version);
const result = await api('/api/discovery/scan', { method: 'POST', body: { protocol_version: protocolVersion, passes: Number(raw.passes), timeout_ms: Number(raw.timeout_ms) } });
form.closest('dialog').close();
toast(tr('toast.found', { count: result.count }));
showDiscoveryNames(result.devices || []);
}, { busyKey: 'actions.discovering' });
});
$('#discoveryNamesForm').addEventListener('submit', async event => {
event.preventDefault();
const form = event.currentTarget;
const inputs = $$('input[data-device-id]', form);
const selected = $$('[data-discovery-select]:checked', form);
if (!selected.length) {
toast(tr('discovery.selectAtLeastOne'), true);
return;
}
await runFormTask(form, async () => {
const updated = await Promise.all(inputs.map(input => api(`/api/devices/${encodeURIComponent(input.dataset.deviceId)}`, { method: 'PATCH', body: { name: input.value.trim() } })));
updated.forEach(updateDevice);
const devices = selected.map(input => {
const index = Number(input.dataset.discoveryIndex);
const candidate = app.localDiscoveryCandidates[index];
const nameInput = $(`[data-discovery-name="${index}"]`, form);
return { ...candidate, name: String(nameInput?.value || candidate?.name || '').trim() };
}).filter(Boolean);
const result = await api('/api/discovery/add', {
method: 'POST',
body: { devices },
});
await loadBootstrap();
form.closest('dialog').close();
app.localDiscoveryCandidates = [];
renderAll();
toast(tr('common.saved'));
});
toast(tr('discovery.addedCount', { count: result.count }));
}, { validate: false });
});
$('#renameDeviceForm').addEventListener('submit', async event => {