Fix options flow bugs in Google/Waze Time Travel (#49866)

This commit is contained in:
Raman Gupta 2021-04-29 15:57:48 -04:00 committed by GitHub
parent 22bda640b0
commit 042099de14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 11 deletions

View file

@ -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]),
}
),
)

View file

@ -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,

View file

@ -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]