diff --git a/custom_components/bahmcloud_store/storage.py b/custom_components/bahmcloud_store/storage.py index 4d8540a..ca99c1c 100644 --- a/custom_components/bahmcloud_store/storage.py +++ b/custom_components/bahmcloud_store/storage.py @@ -36,6 +36,7 @@ class BCSStorage: Keys: - custom_repos: list of manually added repositories - installed_repos: mapping repo_id -> installed metadata + - settings: persistent user settings (e.g. toggles in the UI) """ def __init__(self, hass: HomeAssistant) -> None: @@ -53,8 +54,32 @@ class BCSStorage: if "installed_repos" not in data or not isinstance(data.get("installed_repos"), dict): data["installed_repos"] = {} + if "settings" not in data or not isinstance(data.get("settings"), dict): + data["settings"] = {} + return data + async def get_settings(self) -> dict[str, Any]: + """Return persistent settings. + + Currently used for UI/behavior toggles. + """ + data = await self._load() + settings = data.get("settings", {}) + return settings if isinstance(settings, dict) else {} + + async def set_settings(self, updates: dict[str, Any]) -> dict[str, Any]: + """Update persistent settings and return the merged settings.""" + data = await self._load() + settings = data.get("settings", {}) + if not isinstance(settings, dict): + settings = {} + for k, v in (updates or {}).items(): + settings[str(k)] = v + data["settings"] = settings + await self._save(data) + return settings + async def _save(self, data: dict[str, Any]) -> None: await self._store.async_save(data)