fix: resolve speed test functionality issue after IPC migration #4221, #4218 (#4228)

* chore(deps): update cargo dependencies

* fix: sysinfo crate use limit features

* fix: update headers-core dependency and kode-bridge version; enhance system monitor status validation

* fix: extend overall_status type in ISystemMonitorOverview to include 'healthy'

* refactor: update URL encoding strategy in IpcManager and cmdGetProxyDelay function

* fix: resolve speed test functionality issue after IPC migration

* fix: resolve speed test functionality issue after IPC migration #4221, #4218

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This commit is contained in:
Tunglies
2025-07-27 02:07:00 +08:00
committed by GitHub
parent 02e19bb132
commit 4905b44c8a
7 changed files with 72 additions and 94 deletions

View File

@@ -512,12 +512,9 @@ export async function cmdGetProxyDelay(
) {
// 确保URL不为空
const testUrl = url || "https://cp.cloudflare.com/generate_204";
console.log(
`[API] 调用延迟测试API代理: ${name}, 超时: ${timeout}ms, URL: ${testUrl}`,
);
try {
name = encodeURIComponent(name);
// 不再在前端编码代理名称,由后端统一处理编码
const result = await invoke<{ delay: number }>(
"clash_api_get_proxy_delay",
{
@@ -529,20 +526,12 @@ export async function cmdGetProxyDelay(
// 验证返回结果中是否有delay字段并且值是一个有效的数字
if (result && typeof result.delay === "number") {
console.log(
`[API] 延迟测试API调用成功代理: ${name}, 延迟: ${result.delay}ms`,
);
return result;
} else {
console.error(
`[API] 延迟测试API返回无效结果代理: ${name}, 结果:`,
result,
);
// 返回一个有效的结果对象,但标记为超时
return { delay: 1e6 };
}
} catch (error) {
console.error(`[API] 延迟测试API调用失败代理: ${name}`, error);
// 返回一个有效的结果对象,但标记为错误
return { delay: 1e6 };
}

View File

@@ -181,7 +181,7 @@ interface ISystemMonitorOverview {
};
is_fresh: boolean;
};
overall_status: "active" | "inactive" | "error" | "unknown";
overall_status: "active" | "inactive" | "error" | "unknown" | "healthy";
}
// 类型安全的数据验证器

View File

@@ -138,7 +138,7 @@ export class SystemMonitorValidator implements ISystemMonitorOverviewValidator {
private validateOverallStatus(status: any): boolean {
return (
typeof status === "string" &&
["active", "inactive", "error", "unknown"].includes(status)
["active", "inactive", "error", "unknown", "healthy"].includes(status)
);
}
@@ -190,12 +190,12 @@ export class SystemMonitorValidator implements ISystemMonitorOverviewValidator {
private sanitizeOverallStatus(
status: any,
): "active" | "inactive" | "error" | "unknown" {
): "active" | "inactive" | "error" | "unknown" | "healthy" {
if (
typeof status === "string" &&
["active", "inactive", "error", "unknown"].includes(status)
["active", "inactive", "error", "unknown", "healthy"].includes(status)
) {
return status as "active" | "inactive" | "error" | "unknown";
return status as "active" | "inactive" | "error" | "unknown" | "healthy";
}
return "unknown";
}