fix(config_flow): F2 — MAC-less zeroconf discovery calls the audited _async_handle_discovery_without_unique_id helper and guards against a same-host duplicate prefill, so re-discovery can't stack entries; the import guard reads entries via the base _async_current_entries helper; TestMacLessDiscoveryF2 pins helper call + one-entry outcome (t32)
This commit is contained in:
1 parent
8f40b6435c
commit
6087566336
4 files changed
+72
-2
No files matched your search
@@ -370,6 +370,19 @@ class NvidiaShieldConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
)
|
||||
return self.async_abort(reason="already_configured")
|
||||
self._abort_if_unique_id_configured()
|
||||
else:
|
||||
# t32 F2 (review rider): MAC-less discovery cannot carry a
|
||||
# unique_id — HA's helper records the uniqueness-less discovery
|
||||
# (the same discovery context can't stack duplicates) and the
|
||||
# host guard keeps a second discovery of an already-configured
|
||||
# host from stacking another prefill.
|
||||
self._async_handle_discovery_without_unique_id()
|
||||
for entry in self._async_current_entries():
|
||||
existing_host = entry.options.get(
|
||||
CONF_PROTOCOL_HOST
|
||||
) or entry.options.get(CONF_ADB_HOST)
|
||||
if existing_host and existing_host == host:
|
||||
return self.async_abort(reason="already_configured")
|
||||
|
||||
# First-time setup: pre-filled user step
|
||||
return await self.async_step_user()
|
||||
@@ -490,7 +503,7 @@ class NvidiaShieldConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
# duplicate guards
|
||||
yhost = block.get(CONF_ADB_HOST) or block.get(CONF_PROTOCOL_HOST)
|
||||
for existing in self.hass.config_entries.async_entries():
|
||||
for existing in self._async_current_entries():
|
||||
ehost = existing.options.get(CONF_PROTOCOL_HOST) or existing.options.get(
|
||||
CONF_ADB_HOST
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user