Compare commits

..

3 Commits

Author SHA1 Message Date
thekiwismarthome d50bd39210 feat: expose installed version from manifest via get_integration_settings WS 2026-05-19 22:49:56 +12:00
thekiwismarthome 8652996b65 fix: add translations/en.json to resolve 500 on options flow 2026-05-18 20:29:48 +12:00
thekiwismarthome d5c43fe3b5 Merge pull request #12 from thekiwismarthome/v2.5.0---Improvements-and-Tweaks
V2.5.0   improvements and tweaks
2026-05-11 14:39:37 +12:00
3 changed files with 45 additions and 4 deletions
@@ -27,27 +27,33 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Shopping List Manager from a config entry."""
_LOGGER.info("Setting up Shopping List Manager")
# Get component path for loading data files
component_path = os.path.dirname(__file__)
config_path = hass.config.path()
# Get country from options (or fall back to data, or default to NZ)
country = entry.options.get("country") or entry.data.get("country", "NZ")
_LOGGER.info("Using country: %s", country)
# Initialize storage with country
storage = ShoppingListStorage(hass, component_path, country)
await storage.async_load()
# Initialize image handler
image_handler = ImageHandler(hass, config_path)
# Read installed version from manifest
import json as _json
with open(os.path.join(component_path, "manifest.json")) as _f:
_manifest = _json.load(_f)
# Store instances in hass.data
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][DATA_STORAGE] = storage
hass.data[DOMAIN]["image_handler"] = image_handler
hass.data[DOMAIN]["country"] = country
hass.data[DOMAIN]["version"] = _manifest.get("version", "unknown")
# Register update listener for options changes
entry.async_on_unload(entry.add_update_listener(update_listener))
@@ -0,0 +1,33 @@
{
"config": {
"step": {
"user": {
"title": "Shopping List Manager",
"description": "Set up the Shopping List Manager integration. Country and other settings can be configured after setup via the Configure button."
}
},
"abort": {
"single_instance_allowed": "Only a single instance of Shopping List Manager is allowed."
}
},
"options": {
"step": {
"init": {
"title": "Shopping List Manager Options",
"description": "Changing country will reload the product catalog on next restart.",
"data": {
"country": "Country",
"enable_price_tracking": "Enable price tracking",
"enable_image_search": "Enable image search",
"metric_units_only": "Metric units only"
},
"data_description": {
"country": "Used to localise product catalog and pricing.",
"enable_price_tracking": "Track and display product prices.",
"enable_image_search": "Search for product images automatically.",
"metric_units_only": "Show only metric units (g, kg, ml, L)."
}
}
}
}
}
@@ -1182,10 +1182,12 @@ def websocket_get_integration_settings(
) -> None:
"""Return current country and available country options."""
country = hass.data[DOMAIN].get("country", "NZ")
version = hass.data[DOMAIN].get("version", "unknown")
connection.send_result(
msg["id"],
{
"country": country,
"version": version,
"available_countries": {
"NZ": "New Zealand",
"AU": "Australia",