From 0bb1790206beec655a3f50e88b356a1596c7b4bd Mon Sep 17 00:00:00 2001 From: GyDi Date: Fri, 11 Nov 2022 01:21:23 +0800 Subject: [PATCH] fix: provider proxy sort by delay --- src/components/proxy/proxy-item.tsx | 12 +----------- src/components/proxy/use-filter-sort.ts | 6 +++--- src/services/delay.ts | 11 +++++++++++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/components/proxy/proxy-item.tsx b/src/components/proxy/proxy-item.tsx index 7ad6fbd..14ebbe8 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 3171b0f..2a0ce70 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 7c24b02..502b5e1 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;