From 042099de143df7460a072dbba6e83c92aca4f817 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Thu, 29 Apr 2021 15:57:48 -0400 Subject: [PATCH] Fix options flow bugs in Google/Waze Time Travel (#49866) --- .../google_travel_time/config_flow.py | 17 ++++++++++------- .../components/waze_travel_time/config_flow.py | 9 ++++++--- .../components/waze_travel_time/sensor.py | 6 +++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/google_travel_time/config_flow.py b/homeassistant/components/google_travel_time/config_flow.py index 899ce804796..3bef7d35d50 100644 --- a/homeassistant/components/google_travel_time/config_flow.py +++ b/homeassistant/components/google_travel_time/config_flow.py @@ -56,14 +56,17 @@ class GoogleOptionsFlow(config_entries.OptionsFlow): user_input[CONF_ARRIVAL_TIME] = time else: user_input[CONF_DEPARTURE_TIME] = time - return self.async_create_entry(title="", data=user_input) + return self.async_create_entry( + title="", + data={k: v for k, v in user_input.items() if v not in (None, "")}, + ) if CONF_ARRIVAL_TIME in self.config_entry.options: default_time_type = ARRIVAL_TIME default_time = self.config_entry.options[CONF_ARRIVAL_TIME] else: default_time_type = DEPARTURE_TIME - default_time = self.config_entry.options.get(CONF_ARRIVAL_TIME) + default_time = self.config_entry.options.get(CONF_ARRIVAL_TIME, "") return self.async_show_form( step_id="init", @@ -75,10 +78,10 @@ class GoogleOptionsFlow(config_entries.OptionsFlow): vol.Optional( CONF_LANGUAGE, default=self.config_entry.options.get(CONF_LANGUAGE), - ): vol.In(ALL_LANGUAGES), + ): vol.In([None, *ALL_LANGUAGES]), vol.Optional( CONF_AVOID, default=self.config_entry.options.get(CONF_AVOID) - ): vol.In(AVOID), + ): vol.In([None, *AVOID]), vol.Optional( CONF_UNITS, default=self.config_entry.options[CONF_UNITS] ): vol.In(UNITS), @@ -89,17 +92,17 @@ class GoogleOptionsFlow(config_entries.OptionsFlow): vol.Optional( CONF_TRAFFIC_MODEL, default=self.config_entry.options.get(CONF_TRAFFIC_MODEL), - ): vol.In(TRAVEL_MODEL), + ): vol.In([None, *TRAVEL_MODEL]), vol.Optional( CONF_TRANSIT_MODE, default=self.config_entry.options.get(CONF_TRANSIT_MODE), - ): vol.In(TRANSPORT_TYPE), + ): vol.In([None, *TRANSPORT_TYPE]), vol.Optional( CONF_TRANSIT_ROUTING_PREFERENCE, default=self.config_entry.options.get( CONF_TRANSIT_ROUTING_PREFERENCE ), - ): vol.In(TRANSIT_PREFS), + ): vol.In([None, *TRANSIT_PREFS]), } ), ) diff --git a/homeassistant/components/waze_travel_time/config_flow.py b/homeassistant/components/waze_travel_time/config_flow.py index 4100284273e..10262e12804 100644 --- a/homeassistant/components/waze_travel_time/config_flow.py +++ b/homeassistant/components/waze_travel_time/config_flow.py @@ -41,7 +41,10 @@ class WazeOptionsFlow(config_entries.OptionsFlow): async def async_step_init(self, user_input=None): """Handle the initial step.""" if user_input is not None: - return self.async_create_entry(title="", data=user_input) + return self.async_create_entry( + title="", + data={k: v for k, v in user_input.items() if v not in (None, "")}, + ) return self.async_show_form( step_id="init", @@ -49,11 +52,11 @@ class WazeOptionsFlow(config_entries.OptionsFlow): { vol.Optional( CONF_INCL_FILTER, - default=self.config_entry.options.get(CONF_INCL_FILTER), + default=self.config_entry.options.get(CONF_INCL_FILTER, ""), ): cv.string, vol.Optional( CONF_EXCL_FILTER, - default=self.config_entry.options.get(CONF_EXCL_FILTER), + default=self.config_entry.options.get(CONF_EXCL_FILTER, ""), ): cv.string, vol.Optional( CONF_REALTIME, diff --git a/homeassistant/components/waze_travel_time/sensor.py b/homeassistant/components/waze_travel_time/sensor.py index f85e25cf0d3..965cd5c8a37 100644 --- a/homeassistant/components/waze_travel_time/sensor.py +++ b/homeassistant/components/waze_travel_time/sensor.py @@ -331,7 +331,11 @@ class WazeTravelTimeData: if excl_filter.lower() not in k.lower() } - route = list(routes)[0] + if len(routes) > 0: + route = list(routes)[0] + else: + _LOGGER.warning("No routes found") + return self.duration, distance = routes[route]