From 19bf03a5c608516053259c5077b1258468ffd6ec Mon Sep 17 00:00:00 2001 From: thekiwismarthome Date: Sat, 8 Aug 2026 23:31:27 +1200 Subject: [PATCH] feat: add ha_todo_entity_id field to ShoppingList for global todo sync config --- custom_components/shopping_list_manager/models.py | 3 ++- .../shopping_list_manager/websocket/handlers.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/custom_components/shopping_list_manager/models.py b/custom_components/shopping_list_manager/models.py index 13736ac..b4d0680 100644 --- a/custom_components/shopping_list_manager/models.py +++ b/custom_components/shopping_list_manager/models.py @@ -132,7 +132,8 @@ class ShoppingList: # Ownership: None = visible to all users; set = private to owner + allowed_users owner_id: Optional[str] = None allowed_users: List[str] = field(default_factory=list) - + ha_todo_entity_id: Optional[str] = None + def to_dict(self) -> Dict[str, Any]: """Convert to dictionary.""" return asdict(self) diff --git a/custom_components/shopping_list_manager/websocket/handlers.py b/custom_components/shopping_list_manager/websocket/handlers.py index a93eb00..5423a51 100644 --- a/custom_components/shopping_list_manager/websocket/handlers.py +++ b/custom_components/shopping_list_manager/websocket/handlers.py @@ -341,6 +341,7 @@ async def websocket_create_list( vol.Optional("name"): str, vol.Optional("icon"): str, vol.Optional("category_order"): [str], + vol.Optional("ha_todo_entity_id"): vol.Any(str, None), } ) @websocket_api.async_response @@ -364,7 +365,9 @@ async def websocket_update_list( update_data["icon"] = msg["icon"] if "category_order" in msg: update_data["category_order"] = msg["category_order"] - + if "ha_todo_entity_id" in msg: + update_data["ha_todo_entity_id"] = msg["ha_todo_entity_id"] + updated_list = await storage.update_list(list_id, **update_data) if updated_list is None: