fix: 修复配置预设和设置页面激活状态联动

This commit is contained in:
xiamuceer
2026-03-14 20:36:17 +08:00
parent 950424f68a
commit d48b7bfe8a
+12 -23
View File
@@ -139,29 +139,18 @@ export default function SettingsPage() {
setTestResult(null); setTestResult(null);
setShowTestResult(false); setShowTestResult(false);
// 手动保存配置后,需要同步新预设激活状态 // 手动保存配置后,同步新预设激活状态
// 因为用户手动修改的配置可能与之前激活预设不一致 // 后端会在配置与激活预设不一致时自动取消激活,这里统一拉取最新状态,
// 重新加载预设列表以确保状态正确(后端在save时会自动取消激活状态) // 确保设置界面与预设列表联动一致。
if (activePresetId) { const previousActivePresetId = activePresetId;
// 检查当前保存的配置是否与激活预设一致 await loadPresets();
const activePreset = presets.find(p => p.id === activePresetId);
if (activePreset) { if (previousActivePresetId) {
const presetConfig = activePreset.config; const latestPresets = await settingsApi.getPresets();
const configMismatch = const stillActive = latestPresets.active_preset_id === previousActivePresetId;
presetConfig.api_provider !== values.api_provider || if (!stillActive) {
presetConfig.api_key !== values.api_key || setActivePresetId(undefined);
presetConfig.api_base_url !== values.api_base_url || message.info('配置已更改,预设激活状态已取消');
presetConfig.llm_model !== values.llm_model ||
presetConfig.temperature !== values.temperature ||
presetConfig.max_tokens !== values.max_tokens;
if (configMismatch) {
// 配置已变更,清除前端的激活状态标记
setActivePresetId(undefined);
message.info('配置已更改,预设激活状态已取消');
// 刷新预设列表以同步后端取消激活的状态
loadPresets();
}
} }
} }