Move some setups during onboarding to background (#138558)

* Move some setups during onboarding to background

* Update homeassistant/components/onboarding/views.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
Paulus Schoutsen 2025-02-16 23:06:28 -05:00 committed by GitHub
parent 6b90e7b2c2
commit c357b3ae65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,7 +33,6 @@ from homeassistant.helpers.hassio import is_hassio
from homeassistant.helpers.system_info import async_get_system_info from homeassistant.helpers.system_info import async_get_system_info
from homeassistant.helpers.translation import async_get_translations from homeassistant.helpers.translation import async_get_translations
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from homeassistant.util.async_ import create_eager_task
if TYPE_CHECKING: if TYPE_CHECKING:
from . import OnboardingData, OnboardingStorage, OnboardingStoreData from . import OnboardingData, OnboardingStorage, OnboardingStoreData
@ -235,22 +234,21 @@ class CoreConfigOnboardingView(_BaseOnboardingView):
): ):
onboard_integrations.append("rpi_power") onboard_integrations.append("rpi_power")
coros: list[Coroutine[Any, Any, Any]] = [ for domain in onboard_integrations:
# Create tasks so onboarding isn't affected
# by errors in these integrations.
hass.async_create_task(
hass.config_entries.flow.async_init( hass.config_entries.flow.async_init(
domain, context={"source": "onboarding"} domain, context={"source": "onboarding"}
),
f"onboarding_setup_{domain}",
) )
for domain in onboard_integrations
]
if "analytics" not in hass.config.components: if "analytics" not in hass.config.components:
# If by some chance that analytics has not finished # If by some chance that analytics has not finished
# setting up, wait for it here so its ready for the # setting up, wait for it here so its ready for the
# next step. # next step.
coros.append(async_setup_component(hass, "analytics", {})) await async_setup_component(hass, "analytics", {})
# Set up integrations after onboarding and ensure
# analytics is ready for the next step.
await asyncio.gather(*(create_eager_task(coro) for coro in coros))
return self.json({}) return self.json({})