Fix options flow bugs in Google/Waze Time Travel (#49866)
This commit is contained in:
parent
22bda640b0
commit
042099de14
3 changed files with 21 additions and 11 deletions
|
@ -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]),
|
||||
}
|
||||
),
|
||||
)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue