Rfxtrx fixup config entry creation (#38185)

* Make sure import flow completely replace existing config

* Make sure added device contain correct config data

* Revert change to directly run init
This commit is contained in:
Joakim Plate 2020-07-25 19:13:10 +02:00 committed by GitHub
parent 3206f4dc83
commit 1776540757
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View file

@ -280,11 +280,14 @@ async def async_setup_internal(hass, entry: config_entries.ConfigEntry):
@callback
def _add_device(event, device_id):
"""Add a device to config entry."""
config = DEVICE_DATA_SCHEMA({})
config[CONF_DEVICE_ID] = device_id
data = entry.data.copy()
event_code = binascii.hexlify(event.data).decode("ASCII")
data[CONF_DEVICES][event_code] = device_id
data[CONF_DEVICES][event_code] = config
hass.config_entries.async_update_entry(entry=entry, data=data)
devices[device_id] = {}
devices[device_id] = config
@callback
def _start_rfxtrx(event):

View file

@ -16,6 +16,8 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
async def async_step_import(self, import_config=None):
"""Handle the initial step."""
await self.async_set_unique_id(DOMAIN)
self._abort_if_unique_id_configured(import_config)
entry = await self.async_set_unique_id(DOMAIN)
if entry and import_config.items() != entry.data.items():
self.hass.config_entries.async_update_entry(entry, data=import_config)
return self.async_abort(reason="already_configured")
return self.async_create_entry(title="RFXTRX", data=import_config)