fix(devices): preserve existing URL on PATCH-without-url

When a PATCH omits `url` (rename / icon-only edit), normalized_url
arrived at the processor as None and the manager kept whatever it had
cached — or refused to re-sync if it had nothing. Fall back to
existing.url so the processor is always told the current address.
Surfaced by the production-review backlog.
This commit is contained in:
2026-05-23 01:13:13 +03:00
parent fd46c51dba
commit 0dd8d430b9
+9 -2
View File
@@ -640,11 +640,18 @@ async def update_device(
icon_color=update_data.icon_color,
)
# Sync connection info in processor manager
# Sync connection info in processor manager.
#
# When a PATCH omits `url` (rename / icon-only edit) `normalized_url`
# is None — fall back to the existing record's URL so the processor
# is always told the current address, otherwise it silently keeps
# whatever it had cached (or worse, treats None as "unconfigured"
# and refuses to re-sync).
effective_url = normalized_url if normalized_url is not None else existing.url
try:
manager.update_device_info(
device_id,
device_url=normalized_url,
device_url=effective_url,
led_count=normalized_led_count,
baud_rate=update_data.baud_rate,
)