From 3fd3888306b6d78ad0c03710bc6748216a1909c4 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 18 Dec 2025 14:01:04 +0100 Subject: [PATCH] Fix config values not persisting when making changes (#2839) --- music_assistant/controllers/config.py | 21 ++++++++++++++++--- .../controllers/webserver/controller.py | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/music_assistant/controllers/config.py b/music_assistant/controllers/config.py index fb1899e8..6f8899c8 100644 --- a/music_assistant/controllers/config.py +++ b/music_assistant/controllers/config.py @@ -422,13 +422,18 @@ class ConfigController: ): extra_entries.append(CONF_ENTRY_LIBRARY_SYNC_BACK) - return [ + all_entries = [ *DEFAULT_PROVIDER_CONFIG_ENTRIES, *extra_entries, *await prov_mod.get_config_entries( self.mass, instance_id=instance_id, action=action, values=values ), ] + # set current value from stored values + for entry in all_entries: + if entry.value is None: + entry.value = values.get(entry.key, None) + return all_entries @api_command("config/providers/save", required_role="admin") async def save_provider_config( @@ -554,7 +559,12 @@ class ConfigController: if values is None: values = self.get(f"{CONF_PLAYERS}/{player_id}/values", {}) - return await player.get_config_entries(action=action, values=values) + all_entries = await player.get_config_entries(action=action, values=values) + # set current value from stored values + for entry in all_entries: + if entry.value is None: + entry.value = values.get(entry.key, None) + return all_entries @overload async def get_player_config_value( @@ -1036,10 +1046,15 @@ class ConfigController: if values is None: values = self.get(f"{CONF_CORE}/{domain}/values", {}) controller: CoreController = getattr(self.mass, domain) - return list( + all_entries = list( await controller.get_config_entries(action=action, values=values) + DEFAULT_CORE_CONFIG_ENTRIES ) + # set current value from stored values + for entry in all_entries: + if entry.value is None: + entry.value = values.get(entry.key, None) + return all_entries @api_command("config/core/save", required_role="admin") async def save_core_config( diff --git a/music_assistant/controllers/webserver/controller.py b/music_assistant/controllers/webserver/controller.py index d7deffec..15070875 100644 --- a/music_assistant/controllers/webserver/controller.py +++ b/music_assistant/controllers/webserver/controller.py @@ -158,6 +158,7 @@ class WebserverController(CoreController): required=False, depends_on=CONF_ENABLE_SSL, depends_on_value=False, + hidden=bool(values.get(CONF_ENABLE_SSL, False)) if values else False, ), ConfigEntry( key=CONF_ENABLE_SSL, -- 2.34.1