Allow resetting filters for waze_travel_time (#88253)

* Allow resetting filters by using vol.Maybe

* Fix return types

* Use suggested values

* Apply feedback

* Apply nitpick
This commit is contained in:
Kevin Stillhammer 2023-03-29 21:05:20 +02:00 committed by GitHub
parent a478e278fd
commit 28d045cf75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 44 deletions

View File

@ -31,6 +31,19 @@ from .const import (
)
from .helpers import is_valid_config_entry
OPTIONS_SCHEMA = vol.Schema(
{
vol.Optional(CONF_INCL_FILTER, default=""): cv.string,
vol.Optional(CONF_EXCL_FILTER, default=""): cv.string,
vol.Optional(CONF_REALTIME): cv.boolean,
vol.Optional(CONF_VEHICLE_TYPE): vol.In(VEHICLE_TYPES),
vol.Optional(CONF_UNITS): vol.In(UNITS),
vol.Optional(CONF_AVOID_TOLL_ROADS): cv.boolean,
vol.Optional(CONF_AVOID_SUBSCRIPTION_ROADS): cv.boolean,
vol.Optional(CONF_AVOID_FERRIES): cv.boolean,
}
)
def default_options(hass: HomeAssistant) -> dict[str, str | bool]:
"""Get the default options."""
@ -57,43 +70,8 @@ class WazeOptionsFlow(config_entries.OptionsFlow):
return self.async_show_form(
step_id="init",
data_schema=vol.Schema(
{
vol.Optional(
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, ""),
): cv.string,
vol.Optional(
CONF_REALTIME,
default=self.config_entry.options[CONF_REALTIME],
): cv.boolean,
vol.Optional(
CONF_VEHICLE_TYPE,
default=self.config_entry.options[CONF_VEHICLE_TYPE],
): vol.In(VEHICLE_TYPES),
vol.Optional(
CONF_UNITS,
default=self.config_entry.options[CONF_UNITS],
): vol.In(UNITS),
vol.Optional(
CONF_AVOID_TOLL_ROADS,
default=self.config_entry.options[CONF_AVOID_TOLL_ROADS],
): cv.boolean,
vol.Optional(
CONF_AVOID_SUBSCRIPTION_ROADS,
default=self.config_entry.options[
CONF_AVOID_SUBSCRIPTION_ROADS
],
): cv.boolean,
vol.Optional(
CONF_AVOID_FERRIES,
default=self.config_entry.options[CONF_AVOID_FERRIES],
): cv.boolean,
}
data_schema=self.add_suggested_values_to_schema(
OPTIONS_SCHEMA, self.config_entry.options
),
)

View File

@ -60,8 +60,6 @@ async def async_setup_entry(
name = config_entry.data.get(CONF_NAME, DEFAULT_NAME)
data = WazeTravelTimeData(
None,
None,
region,
config_entry,
)
@ -85,7 +83,14 @@ class WazeTravelTime(SensorEntity):
configuration_url="https://www.waze.com",
)
def __init__(self, unique_id, name, origin, destination, waze_data):
def __init__(
self,
unique_id: str,
name: str,
origin: str,
destination: str,
waze_data: WazeTravelTimeData,
) -> None:
"""Initialize the Waze travel time sensor."""
self._attr_unique_id = unique_id
self._waze_data = waze_data
@ -126,7 +131,7 @@ class WazeTravelTime(SensorEntity):
"destination": self._waze_data.destination,
}
async def first_update(self, _=None):
async def first_update(self, _=None) -> None:
"""Run first update and write state."""
await self.hass.async_add_executor_job(self.update)
self.async_write_ha_state()
@ -142,12 +147,12 @@ class WazeTravelTime(SensorEntity):
class WazeTravelTimeData:
"""WazeTravelTime Data object."""
def __init__(self, origin, destination, region, config_entry):
def __init__(self, region: str, config_entry: ConfigEntry) -> None:
"""Set up WazeRouteCalculator."""
self.origin = origin
self.destination = destination
self.region = region
self.config_entry = config_entry
self.origin: str | None = None
self.destination: str | None = None
self.duration = None
self.distance = None
self.route = None