diff --git a/homeassistant/components/bring/const.py b/homeassistant/components/bring/const.py index f8a10d5c26b..64a6ec67f85 100644 --- a/homeassistant/components/bring/const.py +++ b/homeassistant/components/bring/const.py @@ -1,14 +1,3 @@ """Constants for the Bring! integration.""" -from typing import Final - DOMAIN = "bring" - -ATTR_SENDER: Final = "sender" -ATTR_ITEM_NAME: Final = "item" -ATTR_NOTIFICATION_TYPE: Final = "message" -ATTR_REACTION: Final = "reaction" -ATTR_ACTIVITY: Final = "uuid" -ATTR_RECEIVER: Final = "publicUserUuid" -SERVICE_PUSH_NOTIFICATION = "send_message" -SERVICE_ACTIVITY_STREAM_REACTION = "send_reaction" diff --git a/homeassistant/components/bring/services.py b/homeassistant/components/bring/services.py index e648fcdd2f1..258bad0c7fa 100644 --- a/homeassistant/components/bring/services.py +++ b/homeassistant/components/bring/services.py @@ -1,6 +1,5 @@ """Actions for Bring! integration.""" -import logging from typing import TYPE_CHECKING from bring_api import ( @@ -13,22 +12,28 @@ from bring_api import ( import voluptuous as vol from homeassistant.components.event import ATTR_EVENT_TYPE +from homeassistant.components.todo import DOMAIN as TODO_DOMAIN from homeassistant.config_entries import ConfigEntryState from homeassistant.const import ATTR_ENTITY_ID -from homeassistant.core import HomeAssistant, ServiceCall +from homeassistant.core import HomeAssistant, ServiceCall, callback from homeassistant.exceptions import HomeAssistantError, ServiceValidationError -from homeassistant.helpers import config_validation as cv, entity_registry as er - -from .const import ( - ATTR_ACTIVITY, - ATTR_REACTION, - ATTR_RECEIVER, - DOMAIN, - SERVICE_ACTIVITY_STREAM_REACTION, +from homeassistant.helpers import ( + config_validation as cv, + entity_registry as er, + service, ) + +from .const import DOMAIN from .coordinator import BringConfigEntry -_LOGGER = logging.getLogger(__name__) +ATTR_ACTIVITY = "uuid" +ATTR_ITEM_NAME = "item" +ATTR_NOTIFICATION_TYPE = "message" +ATTR_REACTION = "reaction" +ATTR_RECEIVER = "publicUserUuid" + +SERVICE_PUSH_NOTIFICATION = "send_message" +SERVICE_ACTIVITY_STREAM_REACTION = "send_reaction" SERVICE_ACTIVITY_STREAM_REACTION_SCHEMA = vol.Schema( { @@ -54,6 +59,7 @@ def get_config_entry(hass: HomeAssistant, entry_id: str) -> BringConfigEntry: return entry +@callback def async_setup_services(hass: HomeAssistant) -> None: """Set up services for Bring! integration.""" @@ -108,3 +114,17 @@ def async_setup_services(hass: HomeAssistant) -> None: async_send_activity_stream_reaction, SERVICE_ACTIVITY_STREAM_REACTION_SCHEMA, ) + + service.async_register_platform_entity_service( + hass, + DOMAIN, + SERVICE_PUSH_NOTIFICATION, + entity_domain=TODO_DOMAIN, + schema={ + vol.Required(ATTR_NOTIFICATION_TYPE): vol.All( + vol.Upper, vol.Coerce(BringNotificationType) + ), + vol.Optional(ATTR_ITEM_NAME): cv.string, + }, + func="async_send_message", + ) diff --git a/homeassistant/components/bring/todo.py b/homeassistant/components/bring/todo.py index 04902f3e724..00d2b07e582 100644 --- a/homeassistant/components/bring/todo.py +++ b/homeassistant/components/bring/todo.py @@ -13,7 +13,6 @@ from bring_api import ( BringNotificationType, BringRequestException, ) -import voluptuous as vol from homeassistant.components.todo import ( TodoItem, @@ -23,15 +22,9 @@ from homeassistant.components.todo import ( ) from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import HomeAssistantError, ServiceValidationError -from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from .const import ( - ATTR_ITEM_NAME, - ATTR_NOTIFICATION_TYPE, - DOMAIN, - SERVICE_PUSH_NOTIFICATION, -) +from .const import DOMAIN from .coordinator import BringConfigEntry, BringData, BringDataUpdateCoordinator from .entity import BringBaseEntity @@ -63,19 +56,6 @@ async def async_setup_entry( coordinator.async_add_listener(add_entities) add_entities() - platform = entity_platform.async_get_current_platform() - - platform.async_register_entity_service( - SERVICE_PUSH_NOTIFICATION, - { - vol.Required(ATTR_NOTIFICATION_TYPE): vol.All( - vol.Upper, vol.Coerce(BringNotificationType) - ), - vol.Optional(ATTR_ITEM_NAME): cv.string, - }, - "async_send_message", - ) - class BringTodoListEntity(BringBaseEntity, TodoListEntity): """A To-do List representation of the Bring! Shopping List.""" diff --git a/tests/components/bring/test_notification.py b/tests/components/bring/test_notification.py index 711598d3f4b..0a301f55feb 100644 --- a/tests/components/bring/test_notification.py +++ b/tests/components/bring/test_notification.py @@ -6,10 +6,10 @@ from unittest.mock import AsyncMock from bring_api import BringNotificationType, BringRequestException import pytest -from homeassistant.components.bring.const import ( +from homeassistant.components.bring.const import DOMAIN +from homeassistant.components.bring.services import ( ATTR_ITEM_NAME, ATTR_NOTIFICATION_TYPE, - DOMAIN, SERVICE_PUSH_NOTIFICATION, ) from homeassistant.config_entries import ConfigEntryState diff --git a/tests/components/bring/test_services.py b/tests/components/bring/test_services.py index d010c2b86a0..c6e40dff7a5 100644 --- a/tests/components/bring/test_services.py +++ b/tests/components/bring/test_services.py @@ -11,9 +11,9 @@ from bring_api import ( ) import pytest -from homeassistant.components.bring.const import ( +from homeassistant.components.bring.const import DOMAIN +from homeassistant.components.bring.services import ( ATTR_REACTION, - DOMAIN, SERVICE_ACTIVITY_STREAM_REACTION, ) from homeassistant.config_entries import ConfigEntryState