fix: 超时设置三个输入框独立处理,改一个只打印一条日志
This commit is contained in:
@@ -69,42 +69,41 @@ export function initSettingsModal(): void {
|
|||||||
const inputStreamTimeout = document.querySelector('#inputStreamTimeout') as HTMLInputElement;
|
const inputStreamTimeout = document.querySelector('#inputStreamTimeout') as HTMLInputElement;
|
||||||
const inputMCPTimeout = document.querySelector('#inputMCPTimeout') as HTMLInputElement;
|
const inputMCPTimeout = document.querySelector('#inputMCPTimeout') as HTMLInputElement;
|
||||||
|
|
||||||
const applyTimeouts = async () => {
|
|
||||||
const db = state.get<ChatDB | null>(KEYS.DB);
|
|
||||||
const bridge = window.metonaDesktop;
|
|
||||||
|
|
||||||
// 辅助:解析输入值,空→-1(默认),数字→该值(含0=禁用)
|
// 辅助:解析输入值,空→-1(默认),数字→该值(含0=禁用)
|
||||||
const parseSec = (val: string): number => (val !== '' ? parseInt(val) : -1);
|
const parseSec = (val: string): number => (val !== '' ? parseInt(val) : -1);
|
||||||
|
|
||||||
// HTTP 超时(秒→毫秒)
|
const saveHttpTimeout = debounce(async () => {
|
||||||
const httpSec = parseSec(inputHttpTimeout.value.trim());
|
const db = state.get<ChatDB | null>(KEYS.DB);
|
||||||
const httpMs = httpSec >= 0 ? httpSec * 1000 : 30_000;
|
const sec = parseSec(inputHttpTimeout.value.trim());
|
||||||
if (db) await db.saveSetting('httpTimeout', httpSec);
|
const ms = sec >= 0 ? sec * 1000 : 30_000;
|
||||||
|
if (db) await db.saveSetting('httpTimeout', sec);
|
||||||
|
const bridge = window.metonaDesktop;
|
||||||
if (bridge?.tool?.setTimeouts) {
|
if (bridge?.tool?.setTimeouts) {
|
||||||
await bridge.tool.setTimeouts({ http: httpMs });
|
await bridge.tool.setTimeouts({ http: ms });
|
||||||
}
|
}
|
||||||
logSetting('HTTP 超时', httpSec >= 0 ? (httpSec === 0 ? '已禁用' : `${httpSec}s`) : '默认(30s)');
|
logSetting('HTTP 超时', sec >= 0 ? (sec === 0 ? '已禁用' : `${sec}s`) : '默认(30s)');
|
||||||
|
}, 500);
|
||||||
|
|
||||||
// 流式超时(秒→毫秒)
|
const saveStreamTimeout = debounce(async () => {
|
||||||
const streamSec = parseSec(inputStreamTimeout.value.trim());
|
const db = state.get<ChatDB | null>(KEYS.DB);
|
||||||
const streamMs = streamSec >= 0 ? streamSec * 1000 : 300_000;
|
const sec = parseSec(inputStreamTimeout.value.trim());
|
||||||
state.set('streamTimeout', streamMs);
|
const ms = sec >= 0 ? sec * 1000 : 300_000;
|
||||||
if (db) await db.saveSetting('streamTimeout', streamSec);
|
state.set('streamTimeout', ms);
|
||||||
logSetting('流式超时', streamSec >= 0 ? (streamSec === 0 ? '已禁用' : `${streamSec}s`) : '默认(300s)');
|
if (db) await db.saveSetting('streamTimeout', sec);
|
||||||
|
logSetting('流式超时', sec >= 0 ? (sec === 0 ? '已禁用' : `${sec}s`) : '默认(300s)');
|
||||||
|
}, 500);
|
||||||
|
|
||||||
// MCP 超时(秒→毫秒)
|
const saveMCPTimeout = debounce(async () => {
|
||||||
const mcpSec = parseSec(inputMCPTimeout.value.trim());
|
const db = state.get<ChatDB | null>(KEYS.DB);
|
||||||
const mcpMs = mcpSec >= 0 ? mcpSec * 1000 : 60_000;
|
const sec = parseSec(inputMCPTimeout.value.trim());
|
||||||
if (db) await db.saveSetting('mcpTimeout', mcpSec);
|
const ms = sec >= 0 ? sec * 1000 : 60_000;
|
||||||
|
if (db) await db.saveSetting('mcpTimeout', sec);
|
||||||
|
const bridge = window.metonaDesktop;
|
||||||
if (bridge?.tool?.setTimeouts) {
|
if (bridge?.tool?.setTimeouts) {
|
||||||
await bridge.tool.setTimeouts({ mcp: mcpMs });
|
await bridge.tool.setTimeouts({ mcp: ms });
|
||||||
}
|
}
|
||||||
logSetting('MCP 超时', mcpSec >= 0 ? (mcpSec === 0 ? '已禁用' : `${mcpSec}s`) : '默认(60s)');
|
logSetting('MCP 超时', sec >= 0 ? (sec === 0 ? '已禁用' : `${sec}s`) : '默认(60s)');
|
||||||
};
|
}, 500);
|
||||||
|
|
||||||
const saveHttpTimeout = debounce(applyTimeouts, 500);
|
|
||||||
const saveStreamTimeout = debounce(applyTimeouts, 500);
|
|
||||||
const saveMCPTimeout = debounce(applyTimeouts, 500);
|
|
||||||
|
|
||||||
inputHttpTimeout.addEventListener('input', saveHttpTimeout);
|
inputHttpTimeout.addEventListener('input', saveHttpTimeout);
|
||||||
inputStreamTimeout.addEventListener('input', saveStreamTimeout);
|
inputStreamTimeout.addEventListener('input', saveStreamTimeout);
|
||||||
|
|||||||
Reference in New Issue
Block a user