Updated apps
This commit is contained in:
@@ -0,0 +1 @@
|
||||
"""Spook - Your homie."""
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
"""Spook - Your homie."""
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,65 @@
|
||||
"""Spook - Your homie."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.timer import (
|
||||
CONF_DURATION,
|
||||
DOMAIN,
|
||||
Timer,
|
||||
TimerStorageCollection,
|
||||
_format_timedelta,
|
||||
)
|
||||
from homeassistant.const import CONF_ID
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
from ....services import AbstractSpookEntityComponentService
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from homeassistant.core import ServiceCall
|
||||
|
||||
|
||||
class SpookService(AbstractSpookEntityComponentService[Timer]):
|
||||
"""Home Assistant service to set duration for a timer."""
|
||||
|
||||
domain = DOMAIN
|
||||
service = "set_duration"
|
||||
schema = {
|
||||
vol.Required(CONF_DURATION): cv.time_period,
|
||||
}
|
||||
|
||||
async def async_handle_service(
|
||||
self,
|
||||
entity: Timer,
|
||||
call: ServiceCall,
|
||||
) -> None:
|
||||
"""Handle the service call."""
|
||||
entity_id = entity.entity_id
|
||||
|
||||
if not entity.editable or not entity.unique_id:
|
||||
message = f"This timer is not editable: {entity_id}"
|
||||
raise HomeAssistantError(message)
|
||||
|
||||
# pylint: disable-next=protected-access
|
||||
updates = entity._config.copy() # noqa: SLF001
|
||||
item_id = updates.pop(CONF_ID)
|
||||
updates.update(
|
||||
{
|
||||
CONF_DURATION: _format_timedelta(call.data[CONF_DURATION]),
|
||||
}
|
||||
)
|
||||
|
||||
collection: TimerStorageCollection
|
||||
if DOMAIN in entity.hass.data:
|
||||
collection = entity.hass.data[DOMAIN]
|
||||
else:
|
||||
# Major hack borrowed from ../../zone/services/create.py:27 👻
|
||||
collection = entity.hass.data["websocket_api"]["timer/list"][
|
||||
0
|
||||
].__self__.storage_collection
|
||||
|
||||
await collection.async_update_item(item_id, updates)
|
||||
Reference in New Issue
Block a user