feat(ui): add API_TIMEOUT_MS setting to configuration UI

- Add API_TIMEOUT_MS input field to SettingsDialog
- Add translations for the new setting in both English and Chinese locales
- Update ConfigProvider to handle API_TIMEOUT_MS configuration
This commit is contained in:
BigUncle
2025-07-30 23:15:57 +08:00
parent aea48239f9
commit 754125e3a3
5 changed files with 12 additions and 2 deletions

View File

@@ -4,6 +4,7 @@
"HOST": "127.0.0.1", "HOST": "127.0.0.1",
"PORT": 8080, "PORT": 8080,
"APIKEY": "1", "APIKEY": "1",
"API_TIMEOUT_MS": 600000,
"transformers": [ "transformers": [
{ {
"path": "/Users/abc/.claude-code-router/plugins/gemini-cli.js", "path": "/Users/abc/.claude-code-router/plugins/gemini-cli.js",

View File

@@ -41,6 +41,7 @@ export interface Config {
HOST: string; HOST: string;
PORT: number; PORT: number;
APIKEY: string; APIKEY: string;
API_TIMEOUT_MS: string;
transformers: Transformer[]; transformers: Transformer[];
Providers: Provider[]; Providers: Provider[];
Router: RouterConfig; Router: RouterConfig;
@@ -116,6 +117,7 @@ export function ConfigProvider({ children }: ConfigProviderProps) {
HOST: typeof data.HOST === 'string' ? data.HOST : '127.0.0.1', HOST: typeof data.HOST === 'string' ? data.HOST : '127.0.0.1',
PORT: typeof data.PORT === 'number' ? data.PORT : 3456, PORT: typeof data.PORT === 'number' ? data.PORT : 3456,
APIKEY: typeof data.APIKEY === 'string' ? data.APIKEY : '', APIKEY: typeof data.APIKEY === 'string' ? data.APIKEY : '',
API_TIMEOUT_MS: typeof data.API_TIMEOUT_MS === 'string' ? data.API_TIMEOUT_MS : '600000',
transformers: Array.isArray(data.transformers) ? data.transformers : [], transformers: Array.isArray(data.transformers) ? data.transformers : [],
Providers: Array.isArray(data.Providers) ? data.Providers : [], Providers: Array.isArray(data.Providers) ? data.Providers : [],
Router: data.Router && typeof data.Router === 'object' ? { Router: data.Router && typeof data.Router === 'object' ? {
@@ -146,6 +148,7 @@ export function ConfigProvider({ children }: ConfigProviderProps) {
HOST: '127.0.0.1', HOST: '127.0.0.1',
PORT: 3456, PORT: 3456,
APIKEY: '', APIKEY: '',
API_TIMEOUT_MS: '600000',
transformers: [], transformers: [],
Providers: [], Providers: [],
Router: { Router: {

View File

@@ -57,6 +57,10 @@ export function SettingsDialog({ isOpen, onOpenChange }: SettingsDialogProps) {
<Label htmlFor="port" className="transition-all-ease hover:scale-[1.01] cursor-pointer">{t("toplevel.port")}</Label> <Label htmlFor="port" className="transition-all-ease hover:scale-[1.01] cursor-pointer">{t("toplevel.port")}</Label>
<Input id="port" type="number" value={config.PORT} onChange={(e) => setConfig({ ...config, PORT: parseInt(e.target.value, 10) })} className="transition-all-ease focus:scale-[1.01]" /> <Input id="port" type="number" value={config.PORT} onChange={(e) => setConfig({ ...config, PORT: parseInt(e.target.value, 10) })} className="transition-all-ease focus:scale-[1.01]" />
</div> </div>
<div className="space-y-2">
<Label htmlFor="timeout" className="transition-all-ease hover:scale-[1.01] cursor-pointer">{t("toplevel.timeout")}</Label>
<Input id="timeout" value={config.API_TIMEOUT_MS} onChange={(e) => setConfig({ ...config, API_TIMEOUT_MS: e.target.value })} className="transition-all-ease focus:scale-[1.01]" />
</div>
<div className="space-y-2"> <div className="space-y-2">
<Label htmlFor="apikey" className="transition-all-ease hover:scale-[1.01] cursor-pointer">{t("toplevel.apikey")}</Label> <Label htmlFor="apikey" className="transition-all-ease hover:scale-[1.01] cursor-pointer">{t("toplevel.apikey")}</Label>
<Input id="apikey" type="password" value={config.APIKEY} onChange={(e) => setConfig({ ...config, APIKEY: e.target.value })} className="transition-all-ease focus:scale-[1.01]" /> <Input id="apikey" type="password" value={config.APIKEY} onChange={(e) => setConfig({ ...config, APIKEY: e.target.value })} className="transition-all-ease focus:scale-[1.01]" />

View File

@@ -30,7 +30,8 @@
"claude_path": "Claude Path", "claude_path": "Claude Path",
"host": "Host", "host": "Host",
"port": "Port", "port": "Port",
"apikey": "API Key" "apikey": "API Key",
"timeout": "API Timeout (ms)"
}, },
"transformers": { "transformers": {
"title": "Custom Transformers", "title": "Custom Transformers",

View File

@@ -30,7 +30,8 @@
"claude_path": "Claude 路径", "claude_path": "Claude 路径",
"host": "主机", "host": "主机",
"port": "端口", "port": "端口",
"apikey": "API 密钥" "apikey": "API 密钥",
"timeout": "API 超时时间 (毫秒)"
}, },
"transformers": { "transformers": {
"title": "自定义转换器", "title": "自定义转换器",