From 6a573b507e0d55d0c32556411cb9b4262cf9bdb8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 6 Jun 2023 19:40:32 -0500 Subject: [PATCH] Remove `mark_read` service from persistent_notification (#94122) * Remove mark_read from persistent_notification Nothing on the frontend uses this, and the service is not documented There is not much point in keeping this as the notifications are no longer stored in the state machine * adjust * adjust --- .../persistent_notification/__init__.py | 32 ---------- .../persistent_notification/services.yaml | 12 ---- .../persistent_notification/test_init.py | 61 ------------------- 3 files changed, 105 deletions(-) diff --git a/homeassistant/components/persistent_notification/__init__.py b/homeassistant/components/persistent_notification/__init__.py index 81a9bc9de4d..fe8849c7788 100644 --- a/homeassistant/components/persistent_notification/__init__.py +++ b/homeassistant/components/persistent_notification/__init__.py @@ -29,8 +29,6 @@ ATTR_NOTIFICATION_ID: Final = "notification_id" ATTR_TITLE: Final = "title" ATTR_STATUS: Final = "status" -STATUS_UNREAD = "unread" -STATUS_READ = "read" # Remove EVENT_PERSISTENT_NOTIFICATIONS_UPDATED in Home Assistant 2023.9 EVENT_PERSISTENT_NOTIFICATIONS_UPDATED = "persistent_notifications_updated" @@ -43,7 +41,6 @@ class Notification(TypedDict): message: str notification_id: str title: str | None - status: str class UpdateType(StrEnum): @@ -98,7 +95,6 @@ def async_create( notifications[notification_id] = { ATTR_MESSAGE: message, ATTR_NOTIFICATION_ID: notification_id, - ATTR_STATUS: STATUS_UNREAD, ATTR_TITLE: title, ATTR_CREATED_AT: dt_util.utcnow(), } @@ -135,7 +131,6 @@ def async_dismiss(hass: HomeAssistant, notification_id: str) -> None: async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up the persistent notification component.""" - notifications = _async_get_or_create_notifications(hass) @callback def create_service(call: ServiceCall) -> None: @@ -152,29 +147,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Handle the dismiss notification service call.""" async_dismiss(hass, call.data[ATTR_NOTIFICATION_ID]) - @callback - def mark_read_service(call: ServiceCall) -> None: - """Handle the mark_read notification service call.""" - notification_id = call.data.get(ATTR_NOTIFICATION_ID) - if notification_id not in notifications: - _LOGGER.error( - ( - "Marking persistent_notification read failed: " - "Notification ID %s not found" - ), - notification_id, - ) - return - - notification = notifications[notification_id] - notification[ATTR_STATUS] = STATUS_READ - async_dispatcher_send( - hass, - SIGNAL_PERSISTENT_NOTIFICATIONS_UPDATED, - UpdateType.UPDATED, - {notification_id: notification}, - ) - hass.services.async_register( DOMAIN, "create", @@ -192,10 +164,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: DOMAIN, "dismiss", dismiss_service, SCHEMA_SERVICE_NOTIFICATION ) - hass.services.async_register( - DOMAIN, "mark_read", mark_read_service, SCHEMA_SERVICE_NOTIFICATION - ) - websocket_api.async_register_command(hass, websocket_get_notifications) websocket_api.async_register_command(hass, websocket_subscribe_notifications) diff --git a/homeassistant/components/persistent_notification/services.yaml b/homeassistant/components/persistent_notification/services.yaml index 5695a3c3b82..60dbf5c864a 100644 --- a/homeassistant/components/persistent_notification/services.yaml +++ b/homeassistant/components/persistent_notification/services.yaml @@ -33,15 +33,3 @@ dismiss: example: 1234 selector: text: - -mark_read: - name: Mark read - description: Mark a notification read. - fields: - notification_id: - name: Notification ID - description: Target ID of the notification, which should be mark read. - required: true - example: 1234 - selector: - text: diff --git a/tests/components/persistent_notification/test_init.py b/tests/components/persistent_notification/test_init.py index 1e083814e0e..4f0851dc477 100644 --- a/tests/components/persistent_notification/test_init.py +++ b/tests/components/persistent_notification/test_init.py @@ -25,7 +25,6 @@ async def test_create(hass: HomeAssistant) -> None: assert len(notifications) == 1 notification = notifications[list(notifications)[0]] - assert notification["status"] == pn.STATUS_UNREAD assert notification["message"] == "Hello World 2" assert notification["title"] == "2 beers" assert notification["created_at"] is not None @@ -66,39 +65,6 @@ async def test_dismiss_notification(hass: HomeAssistant) -> None: assert len(notifications) == 0 -async def test_mark_read(hass: HomeAssistant) -> None: - """Ensure notification is marked as Read.""" - notifications = pn._async_get_or_create_notifications(hass) - assert len(notifications) == 0 - - await hass.services.async_call( - pn.DOMAIN, - "create", - {"notification_id": "Beer 2", "message": "test"}, - blocking=True, - ) - - assert len(notifications) == 1 - notification = notifications[list(notifications)[0]] - assert notification["status"] == pn.STATUS_UNREAD - - await hass.services.async_call( - pn.DOMAIN, "mark_read", {"notification_id": "Beer 2"}, blocking=True - ) - - assert len(notifications) == 1 - notification = notifications[list(notifications)[0]] - assert notification["status"] == pn.STATUS_READ - - await hass.services.async_call( - pn.DOMAIN, - "dismiss", - {"notification_id": "Beer 2"}, - blocking=True, - ) - assert len(notifications) == 0 - - async def test_ws_get_notifications( hass: HomeAssistant, hass_ws_client: WebSocketGenerator ) -> None: @@ -128,19 +94,8 @@ async def test_ws_get_notifications( assert notification["notification_id"] == "Beer 2" assert notification["message"] == "test" assert notification["title"] is None - assert notification["status"] == pn.STATUS_UNREAD assert notification["created_at"] is not None - # Mark Read - await hass.services.async_call( - pn.DOMAIN, "mark_read", {"notification_id": "Beer 2"} - ) - await client.send_json({"id": 7, "type": "persistent_notification/get"}) - msg = await client.receive_json() - notifications = msg["result"] - assert len(notifications) == 1 - assert notifications[0]["status"] == pn.STATUS_READ - # Dismiss pn.async_dismiss(hass, "Beer 2") await client.send_json({"id": 8, "type": "persistent_notification/get"}) @@ -186,24 +141,8 @@ async def test_ws_get_subscribe( assert notification["notification_id"] == "Beer 2" assert notification["message"] == "test" assert notification["title"] is None - assert notification["status"] == pn.STATUS_UNREAD assert notification["created_at"] is not None - # Mark Read - await hass.services.async_call( - pn.DOMAIN, "mark_read", {"notification_id": "Beer 2"} - ) - msg = await client.receive_json() - assert msg["id"] == 5 - assert msg["type"] == "event" - assert msg["event"] - event = msg["event"] - assert event["type"] == "updated" - notifications = event["notifications"] - assert len(notifications) == 1 - notification = notifications[list(notifications)[0]] - assert notification["status"] == pn.STATUS_READ - # Dismiss pn.async_dismiss(hass, "Beer 2") msg = await client.receive_json()