feat: add fetch timeout configuration

This commit is contained in:
Memory 2025-09-05 11:57:51 +08:00 committed by GitHub
parent 6d337818d0
commit bcecca7ab7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 33 additions and 3 deletions

View File

@ -129,7 +129,7 @@ export async function createProfile(item: Partial<IProfileItem>): Promise<IProfi
} as IProfileItem
switch (newItem.type) {
case 'remote': {
const { userAgent } = await getAppConfig()
const { userAgent, subscriptionTimeout = 30000 } = await getAppConfig()
const { 'mixed-port': mixedPort = 7890 } = await getControledMihomoConfig()
if (!item.url) throw new Error('Empty URL')
let res: AxiosResponse
@ -146,7 +146,8 @@ export async function createProfile(item: Partial<IProfileItem>): Promise<IProfi
headers: {
'User-Agent': userAgent || `mihomo.party/v${app.getVersion()} (clash.meta)`
},
responseType: 'text'
responseType: 'text',
timeout: subscriptionTimeout
})
} else {
res = await axios.get(item.url, {
@ -160,7 +161,8 @@ export async function createProfile(item: Partial<IProfileItem>): Promise<IProfi
headers: {
'User-Agent': userAgent || `mihomo.party/v${app.getVersion()} (clash.meta)`
},
responseType: 'text'
responseType: 'text',
timeout: subscriptionTimeout
})
}

View File

@ -19,6 +19,7 @@ export const defaultConfig: IAppConfig = {
proxyDisplayOrder: 'default',
autoCheckUpdate: true,
autoCloseConnection: true,
subscriptionTimeout: 30000,
useNameserverPolicy: false,
controlDns: true,
controlSniff: true,

View File

@ -23,6 +23,7 @@ const MihomoConfig: React.FC = () => {
pauseSSID = [],
delayTestUrl,
userAgent,
subscriptionTimeout = 30000,
mihomoCpuPriority = 'PRIORITY_NORMAL',
proxyCols = 'auto'
} = appConfig || {}
@ -49,6 +50,27 @@ const MihomoConfig: React.FC = () => {
}}
></Input>
</SettingItem>
<SettingItem title={t('settings.subscriptionTimeout')} divider>
<div className="flex items-center gap-2">
<Input
size="sm"
className="w-[100px]"
type="number"
value={(subscriptionTimeout / 1000)?.toString()}
onValueChange={async (v: string) => {
let num = parseInt(v)
await patchAppConfig({ subscriptionTimeout: num * 1000 })
}}
onBlur={async (e) => {
let num = parseInt(e.target.value)
if (isNaN(num)) num = 30
if (num < 30) num = 30
await patchAppConfig({ subscriptionTimeout: num * 1000 })
}}
/>
<span className="text-default-500">{t('common.seconds')}</span>
</div>
</SettingItem>
<SettingItem title={t('mihomo.delayTest.url')} divider>
<Input
size="sm"

View File

@ -53,6 +53,7 @@
"settings.silentStart": "Silent Start",
"settings.autoQuitWithoutCore": "Auto Enable Light Mode",
"settings.autoQuitWithoutCoreTooltip": "Automatically enter light mode after closing window for specified time",
"settings.subscriptionTimeout": "Subscription Timeout",
"settings.autoQuitWithoutCoreDelay": "Light Mode Auto Enable Delay",
"settings.envType": "Environment Variable Type",
"settings.showFloatingWindow": "Show Floating Window",

View File

@ -52,6 +52,7 @@
"settings.silentStart": "اجرای بی‌صدا",
"settings.autoQuitWithoutCore": "ورود خودکار به حالت سبک",
"settings.autoQuitWithoutCoreTooltip": "ورود خودکار به حالت سبک پس از بستن پنجره برای زمان مشخص",
"settings.subscriptionTimeout": "زمان انتظار اشتراک",
"settings.autoQuitWithoutCoreDelay": "تاخیر فعال‌سازی خودکار حالت سبک",
"settings.envType": "نوع متغیر محیطی",
"settings.showFloatingWindow": "نمایش پنجره شناور",

View File

@ -52,6 +52,7 @@
"settings.silentStart": "Тихий запуск",
"settings.autoQuitWithoutCore": "Автоматический облегчённый режим",
"settings.autoQuitWithoutCoreTooltip": "Автоматически переходить в облегчённый режим после закрытия окна",
"settings.subscriptionTimeout": "Таймаут подписки",
"settings.autoQuitWithoutCoreDelay": "Задержка включения облегчённого режима",
"settings.envType": "Тип переменных окружения",
"settings.showFloatingWindow": "Показывать плавающее окно",

View File

@ -53,6 +53,7 @@
"settings.silentStart": "静默启动",
"settings.autoQuitWithoutCore": "自动进入轻量模式",
"settings.autoQuitWithoutCoreTooltip": "关闭窗口后指定时间自动进入轻量模式",
"settings.subscriptionTimeout": "订阅超时时间",
"settings.autoQuitWithoutCoreDelay": "轻量模式自动启用延迟",
"settings.envType": "环境变量类型",
"settings.showFloatingWindow": "显示悬浮窗",

View File

@ -282,6 +282,7 @@ interface IAppConfig {
delayTestConcurrency?: number
delayTestUrl?: string
delayTestTimeout?: number
subscriptionTimeout?: number
encryptedPassword?: number[]
controlDns?: boolean
controlSniff?: boolean