config entry wrong value convert
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 26 Mar 2023 23:56:19 +0000 (01:56 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 26 Mar 2023 23:56:19 +0000 (01:56 +0200)
music_assistant/common/models/config_entries.py
music_assistant/server/controllers/config.py

index 7013370d8657545ee1e76c85a224a6f6bc2835e3..8d5bd57b7f934a1424d98b1e12105d288f62c327 100644 (file)
@@ -215,12 +215,14 @@ class Config(DataClassDictMixin):
         if update.values is not None:
             for key, new_val in update.values.items():
                 cur_val = self.values[key].value
-                if cur_val == new_val:
+                # parse entry to do type validation
+                parsed_val = ConfigEntryValue.parse(self.values[key], new_val)
+                if cur_val == parsed_val.value:
                     continue
-                if new_val is None:
-                    self.values[key].value = self.values[key].default_value
+                if parsed_val.value is None:
+                    self.values[key].value = parsed_val.default_value
                 else:
-                    self.values[key].value = new_val
+                    self.values[key].value = parsed_val.value
                 changed_keys.add(f"values/{key}")
 
         return changed_keys
index 0240f3923a7261d950423ba4c9f3106bf437fc73..1f7c967cdec9f1214d50543b05577a78cb441bd8 100644 (file)
@@ -199,6 +199,10 @@ class ConfigController:
         """Add new Provider (instance) Config Flow."""
         if not config:
             return await self._get_default_provider_config(provider_domain)
+        for key, conf_entry_value in config.values.items():
+            # parse entry to do type validation
+            parsed_val = ConfigEntryValue.parse(conf_entry_value, conf_entry_value.value)
+            conf_entry_value.value = parsed_val.value
         # if provider config is provided, the frontend wants to submit a new provider instance
         # based on the earlier created template config.
         # try to load the provider first to catch errors before we save it.