From 90606b1283f93583f00d542eb0378437de056789 Mon Sep 17 00:00:00 2001 From: pompurin404 Date: Sat, 10 Aug 2024 11:02:30 +0800 Subject: [PATCH] fix group delay --- src/main/core/mihomoApi.ts | 16 ++++++++++++++++ src/main/utils/ipc.ts | 2 ++ src/renderer/src/pages/proxies.tsx | 12 +++++++++--- src/renderer/src/utils/ipc.ts | 7 +++++-- src/shared/types.d.ts | 2 ++ 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/main/core/mihomoApi.ts b/src/main/core/mihomoApi.ts index dbe78ea..b2567c8 100644 --- a/src/main/core/mihomoApi.ts +++ b/src/main/core/mihomoApi.ts @@ -136,6 +136,22 @@ export const mihomoProxyDelay = async (proxy: string, url?: string): Promise => { + const appConfig = getAppConfig() + const { delayTestUrl, delayTestTimeout } = appConfig + const instance = await getAxios() + return (await instance + .get(`/group/${encodeURIComponent(group)}/delay`, { + params: { + url: url || delayTestUrl || 'https://www.gstatic.com/generate_204', + timeout: delayTestTimeout || 5000 + } + }) + .catch((e) => { + return e.response.data + })) as IMihomoGroupDelay +} + export const startMihomoTraffic = (): void => { mihomoTraffic() } diff --git a/src/main/utils/ipc.ts b/src/main/utils/ipc.ts index 963f4a6..167beff 100644 --- a/src/main/utils/ipc.ts +++ b/src/main/utils/ipc.ts @@ -3,6 +3,7 @@ import { mihomoChangeProxy, mihomoCloseAllConnections, mihomoCloseConnection, + mihomoGroupDelay, mihomoProxies, mihomoProxyDelay, mihomoProxyProviders, @@ -56,6 +57,7 @@ export function registerIpcMainHandlers(): void { ipcMain.handle('mihomoChangeProxy', (_e, group, proxy) => mihomoChangeProxy(group, proxy)) ipcMain.handle('mihomoUpgradeGeo', mihomoUpgradeGeo) ipcMain.handle('mihomoProxyDelay', (_e, proxy, url) => mihomoProxyDelay(proxy, url)) + ipcMain.handle('mihomoGroupDelay', (_e, group, url) => mihomoGroupDelay(group, url)) ipcMain.handle('startMihomoLogs', startMihomoLogs) ipcMain.handle('stopMihomoLogs', stopMihomoLogs) ipcMain.handle('startMihomoConnections', () => startMihomoConnections()) diff --git a/src/renderer/src/pages/proxies.tsx b/src/renderer/src/pages/proxies.tsx index aff5814..eff79ab 100644 --- a/src/renderer/src/pages/proxies.tsx +++ b/src/renderer/src/pages/proxies.tsx @@ -1,7 +1,12 @@ import { Avatar, Button, Card, CardBody, Chip } from '@nextui-org/react' import BasePage from '@renderer/components/base/base-page' import { useAppConfig } from '@renderer/hooks/use-app-config' -import { mihomoChangeProxy, mihomoProxies, mihomoProxyDelay } from '@renderer/utils/ipc' +import { + mihomoChangeProxy, + mihomoGroupDelay, + mihomoProxies, + mihomoProxyDelay +} from '@renderer/utils/ipc' import { CgDetailsLess, CgDetailsMore } from 'react-icons/cg' import { FaBoltLightning } from 'react-icons/fa6' import { TbCircleLetterD } from 'react-icons/tb' @@ -79,8 +84,9 @@ const Proxies: React.FC = () => { return await mihomoProxyDelay(proxy, url) } - const onGroupDelay = async (group: string): Promise => { + const onGroupDelay = async (group: string, url?: string): Promise => { PubSub.publish(`${group}-delay`) + await mihomoGroupDelay(group, url) } return ( @@ -211,7 +217,7 @@ const Proxies: React.FC = () => { size="sm" isIconOnly onPress={() => { - onGroupDelay(groups[index].name) + onGroupDelay(groups[index].name, groups[index].testUrl) }} > diff --git a/src/renderer/src/utils/ipc.ts b/src/renderer/src/utils/ipc.ts index 59b8844..532d81c 100644 --- a/src/renderer/src/utils/ipc.ts +++ b/src/renderer/src/utils/ipc.ts @@ -43,8 +43,11 @@ export async function mihomoUpgradeGeo(): Promise { } export async function mihomoProxyDelay(proxy: string, url?: string): Promise { - const res = await window.electron.ipcRenderer.invoke('mihomoProxyDelay', proxy, url) - return res + return await window.electron.ipcRenderer.invoke('mihomoProxyDelay', proxy, url) +} + +export async function mihomoGroupDelay(group: string, url?: string): Promise { + return await window.electron.ipcRenderer.invoke('mihomoGroupDelay', group, url) } export async function startMihomoLogs(): Promise { diff --git a/src/shared/types.d.ts b/src/shared/types.d.ts index 6938a01..49c0e82 100644 --- a/src/shared/types.d.ts +++ b/src/shared/types.d.ts @@ -107,6 +107,8 @@ interface IMihomoHistory { delay: number } +type IMihomoGroupDelay = Record + interface IMihomoDelay { delay?: number message?: string