async def websocket_handle_clear( hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict, ) -> None: """Handle clearing shopping_list items.""" await hass.data[DOMAIN].async_clear_completed() hass.bus.async_fire(EVENT, {"action": "clear"}, context=connection.context(msg)) connection.send_message(websocket_api.result_message(msg["id"]))
async def websocket_handle_add( hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict, ) -> None: """Handle add item to shopping_list.""" item = await hass.data[DOMAIN].async_add(msg["name"]) hass.bus.async_fire(EVENT, { "action": "add", "item": item }, context=connection.context(msg)) connection.send_message(websocket_api.result_message(msg["id"], item))
def websocket_handle_reorder( hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict, ) -> None: """Handle reordering shopping_list items.""" msg_id = msg.pop("id") try: hass.data[DOMAIN].async_reorder(msg.pop("item_ids")) hass.bus.async_fire(EVENT, {"action": "reorder"}, context=connection.context(msg)) connection.send_result(msg_id) except KeyError: connection.send_error( msg_id, websocket_api.const.ERR_NOT_FOUND, "One or more item id(s) not found.", ) except vol.Invalid as err: connection.send_error(msg_id, websocket_api.const.ERR_INVALID_FORMAT, f"{err}")
async def websocket_handle_update( hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict, ) -> None: """Handle update shopping_list item.""" msg_id = msg.pop("id") item_id = msg.pop("item_id") msg.pop("type") data = msg try: item = await hass.data[DOMAIN].async_update(item_id, data) hass.bus.async_fire(EVENT, { "action": "update", "item": item }, context=connection.context(msg)) connection.send_message(websocket_api.result_message(msg_id, item)) except KeyError: connection.send_message( websocket_api.error_message(msg_id, "item_not_found", "Item not found"))