🐛 fix: 无法正常保存插件的 list 类型配置 #737
This commit is contained in:
@@ -39,9 +39,10 @@ def validate_config(
|
||||
data[key] = DEFAULT_VALUE_MAP[meta["type"]]
|
||||
continue
|
||||
# 递归验证
|
||||
if meta["type"] == "list" and isinstance(value, list):
|
||||
for item in value:
|
||||
validate(item, meta["items"], path=f"{path}{key}.")
|
||||
if meta["type"] == "list" and not isinstance(value, list):
|
||||
errors.append(
|
||||
f"错误的类型 {path}{key}: 期望是 list, 得到了 {type(value).__name__}"
|
||||
)
|
||||
elif meta["type"] == "object" and isinstance(value, dict):
|
||||
validate(value, meta["items"], path=f"{path}{key}.")
|
||||
|
||||
@@ -103,6 +104,7 @@ def save_config(post_config: dict, config: AstrBotConfig, is_core: bool = False)
|
||||
except BaseException as e:
|
||||
logger.error(traceback.format_exc())
|
||||
logger.warning(f"验证配置时出现异常: {e}")
|
||||
raise ValueError(f"验证配置时出现异常: {e}")
|
||||
if errors:
|
||||
raise ValueError(f"格式校验未通过: {errors}")
|
||||
config.save_config(post_config)
|
||||
|
||||
@@ -183,6 +183,7 @@ const openExtensionConfig = async (extension_name) => {
|
||||
const res = await axios.get('/api/config/get?plugin_name=' + extension_name);
|
||||
extension_config.metadata = res.data.data.metadata;
|
||||
extension_config.config = res.data.data.config;
|
||||
|
||||
} catch (err) {
|
||||
toast(err, "error");
|
||||
}
|
||||
@@ -197,6 +198,9 @@ const updateConfig = async () => {
|
||||
toast(res.data.message, "error");
|
||||
}
|
||||
configDialog.value = false;
|
||||
extension_config.metadata = {};
|
||||
extension_config.config = {};
|
||||
getExtensions();
|
||||
} catch (err) {
|
||||
toast(err, "error");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user