From 878ba4a958d17b6b8e26b058bb3350851205e6d9 Mon Sep 17 00:00:00 2001 From: Mathieu Moran Date: Tue, 11 Aug 2026 18:57:40 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20skip=20device=20config=20save=20when=20s?= =?UTF-8?q?ync=20is=20enabled=20=E2=80=94=20prevents=20'Invalid=20device?= =?UTF-8?q?=20config'=20blocking=20settings=20save?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/js/settings.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/static/js/settings.js b/static/js/settings.js index bf626e2..ad0cc76 100644 --- a/static/js/settings.js +++ b/static/js/settings.js @@ -459,18 +459,20 @@ form.addEventListener('submit', async event => { } populateRemoteConfig(remoteConfigResult); - // Save device config - const deviceConfigResponse = await fetch('/api/device-config', { - method: 'POST', - headers: {'Content-Type': 'application/json'}, - body: JSON.stringify(deviceConfigPayload()), - }); - const deviceConfigResult = await deviceConfigResponse.json(); - if (!deviceConfigResponse.ok) { - applyErrors(deviceConfigResult.fields || {}); - throw new Error(deviceConfigResult.error || `HTTP ${deviceConfigResponse.status}`); + // Save device config (skip if sync is enabled — server is source of truth) + if (!fields.deviceSyncEnabled.checked) { + const deviceConfigResponse = await fetch('/api/device-config', { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify(deviceConfigPayload()), + }); + const deviceConfigResult = await deviceConfigResponse.json(); + if (!deviceConfigResponse.ok) { + applyErrors(deviceConfigResult.fields || {}); + throw new Error(deviceConfigResult.error || `HTTP ${deviceConfigResponse.status}`); + } + populateDeviceConfig(deviceConfigResult); } - populateDeviceConfig(deviceConfigResult); showMessage('Settings saved.', 'success'); } catch (error) {