diff --git a/src/components/proxy/proxy-item.tsx b/src/components/proxy/proxy-item.tsx index 7ad6fbd52ba3aea29c63f9b965ccc0d6e608754b..14ebbe8620c8089c0411be395ed377f0d8ca3fc0 100644 --- a/src/components/proxy/proxy-item.tsx +++ b/src/components/proxy/proxy-item.tsx @@ -59,17 +59,7 @@ const ProxyItem = (props: Props) => { useEffect(() => { if (!proxy) return; - - if (!proxy.provider) { - setDelay(delayManager.getDelay(proxy.name, groupName)); - return; - } - - const { history = [] } = proxy; - if (history.length > 0) { - // 0ms以error显示 - setDelay(history[history.length - 1].delay || 1e6); - } + setDelay(delayManager.getDelayFix(proxy, groupName)); }, [proxy]); const onDelay = useLockFn(async () => { diff --git a/src/components/proxy/use-filter-sort.ts b/src/components/proxy/use-filter-sort.ts index 3171b0f86ed123ec026815e7b549d8bec585c806..2a0ce705f946e4937b80208ffcbbe1f9c17c6d01 100644 --- a/src/components/proxy/use-filter-sort.ts +++ b/src/components/proxy/use-filter-sort.ts @@ -61,7 +61,7 @@ function filterProxies( symbol2 === "error" ? 1e5 : symbol2 === "timeout" ? 3000 : +symbol2; return proxies.filter((p) => { - const delay = delayManager.getDelay(p.name, groupName); + const delay = delayManager.getDelayFix(p, groupName); if (delay < 0) return false; if (symbol === "=" && symbol2 === "error") return delay >= 1e5; @@ -98,8 +98,8 @@ function sortProxies( if (sortType === 1) { list.sort((a, b) => { - const ad = delayManager.getDelay(a.name, groupName); - const bd = delayManager.getDelay(b.name, groupName); + const ad = delayManager.getDelayFix(a, groupName); + const bd = delayManager.getDelayFix(b, groupName); if (ad === -1 || ad === -2) return 1; if (bd === -1 || bd === -2) return -1; diff --git a/src/services/delay.ts b/src/services/delay.ts index 7c24b022b5784e6dab5a1a1dc597228fe950ae03..502b5e14c6cb45c250c550f95230831b7212fc27 100644 --- a/src/services/delay.ts +++ b/src/services/delay.ts @@ -55,6 +55,17 @@ class DelayManager { return -1; } + /// 暂时修å¤provider的节点延迟排åºçš„问题 + getDelayFix(proxy: ApiType.ProxyItem, group: string) { + if (!proxy.provider) return this.getDelay(proxy.name, group); + + if (proxy.history.length > 0) { + // 0ms以error显示 + return proxy.history[proxy.history.length - 1].delay || 1e6; + } + return -1; + } + async checkDelay(name: string, group: string) { let delay = -1;