fix: incorrect delay status and update pretty config

This commit is contained in:
oomeow
2025-10-01 16:21:32 +08:00
Unverified
parent 31839b3379
commit d765c837f6
8 changed files with 37 additions and 39 deletions

View File

@@ -11,6 +11,6 @@
"arrowParens": "always",
"proseWrap": "preserve",
"htmlWhitespaceSensitivity": "css",
"endOfLine": "lf",
"endOfLine": "auto",
"embeddedLanguageFormatting": "auto"
}

View File

@@ -1,18 +1,20 @@
import { ExpandMoreRounded } from "@mui/icons-material";
import {
Box,
Snackbar,
Alert,
Box,
Chip,
Typography,
IconButton,
Menu,
MenuItem,
Snackbar,
Typography,
} from "@mui/material";
import { ExpandMoreRounded } from "@mui/icons-material";
import { useLockFn } from "ahooks";
import { useRef, useState, useEffect, useCallback } from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { Virtuoso, type VirtuosoHandle } from "react-virtuoso";
import useSWR from "swr";
import { delayGroup, healthcheckProxyProvider } from "tauri-plugin-mihomo-api";
import { useProxySelection } from "@/hooks/use-proxy-selection";
import { useVerge } from "@/hooks/use-verge";
@@ -27,12 +29,9 @@ import { BaseEmpty } from "../base";
import { ScrollTopButton } from "../layout/scroll-top-button";
import { ProxyChain } from "./proxy-chain";
import { ProxyRender } from "./proxy-render";
import { ProxyGroupNavigator } from "./proxy-group-navigator";
import { ProxyRender } from "./proxy-render";
import { useRenderList } from "./use-render-list";
import { delayGroup, healthcheckProxyProvider } from "tauri-plugin-mihomo-api";
import useSWR from "swr";
import { useMemo } from "react";
interface Props {
mode: string;
@@ -518,7 +517,7 @@ export const ProxyGroups = (props: Props) => {
},
}}
>
{availableGroups.map((group: any, index: number) => (
{availableGroups.map((group: any, _index: number) => (
<MenuItem
key={group.name}
onClick={() => handleGroupSelect(group.name)}

View File

@@ -37,12 +37,12 @@ export const ProxyItemMini = (props: Props) => {
return () => {
delayManager.removeListener(proxy.name, group.name);
};
}, [proxy.name, group.name]);
}, [isPreset, proxy.name, group.name]);
useEffect(() => {
if (!proxy) return;
setDelay(delayManager.getDelayFix(proxy, group.name));
}, [proxy]);
}, [proxy, group.name]);
const onDelay = useLockFn(async () => {
setDelay(-2);
@@ -200,7 +200,7 @@ export const ProxyItemMini = (props: Props) => {
</Widget>
)}
{delay > 0 && (
{delay >= 0 && (
// 显示延迟
<Widget
className="the-delay"
@@ -220,7 +220,7 @@ export const ProxyItemMini = (props: Props) => {
{delayManager.formatDelay(delay, timeout)}
</Widget>
)}
{delay !== -2 && delay <= 0 && selected && (
{proxy.type !== "Direct" && delay !== -2 && delay < 0 && selected && (
// 展示已选择的icon
<CheckCircleOutlineRounded
className="the-icon"

View File

@@ -1,15 +1,15 @@
import { useLockFn } from "ahooks";
import { useCallback, useMemo } from "react";
import { useProfiles } from "@/hooks/use-profiles";
import { useVerge } from "@/hooks/use-verge";
import { updateProxyAndSync, syncTrayProxySelection } from "@/services/cmds";
import {
closeConnections,
getConnections,
selectNodeForGroup,
} from "tauri-plugin-mihomo-api";
import { useProfiles } from "@/hooks/use-profiles";
import { useVerge } from "@/hooks/use-verge";
import { syncTrayProxySelection, updateProxyAndSync } from "@/services/cmds";
// 缓存连接清理
const cleanupConnections = async (previousProxy: string) => {
try {

View File

@@ -11,6 +11,7 @@ import { ComposeContextProvider } from "foxact/compose-context-provider";
import React from "react";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import { MihomoWebSocket } from "tauri-plugin-mihomo-api";
import { BaseErrorBoundary } from "./components/base";
import Layout from "./pages/_layout";
@@ -21,7 +22,6 @@ import {
ThemeModeProvider,
UpdateStateProvider,
} from "./services/states";
import { MihomoWebSocket } from "tauri-plugin-mihomo-api";
const mainElementId = "root";
const container = document.getElementById(mainElementId);

View File

@@ -1,11 +1,10 @@
import { List, Paper, ThemeProvider, SvgIcon } from "@mui/material";
import { List, Paper, SvgIcon, ThemeProvider } from "@mui/material";
import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import { useEffect, useCallback, useState, useRef } from "react";
import React from "react";
import React, { useCallback, useEffect, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { useLocation, useRoutes, useNavigate } from "react-router-dom";
import { useLocation, useNavigate, useRoutes } from "react-router-dom";
import { SWRConfig, mutate } from "swr";
import iconDark from "@/assets/image/icon_dark.svg?react";
@@ -34,12 +33,12 @@ import { useClashInfo } from "@/hooks/use-clash";
import { invoke } from "@tauri-apps/api/core";
import { showNotice } from "@/services/noticeService";
import { NoticeManager } from "@/components/base/NoticeManager";
import { useMemoryData } from "@/hooks/use-memory-data";
import { useTrafficData } from "@/hooks/use-traffic-data";
import { useConnectionData } from "@/hooks/use-connection-data";
import { useLogData } from "@/hooks/use-log-data-new";
import { useMemoryData } from "@/hooks/use-memory-data";
import { useTrafficData } from "@/hooks/use-traffic-data";
import { showNotice } from "@/services/noticeService";
const appWindow = getCurrentWebviewWindow();
export const portableFlag = false;
@@ -525,15 +524,15 @@ const Layout = () => {
borderTopRightRadius: "0px",
}}
onContextMenu={(e) => {
if (
OS === "windows" &&
!["input", "textarea"].includes(
e.currentTarget.tagName.toLowerCase(),
) &&
!e.currentTarget.isContentEditable
) {
e.preventDefault();
}
// if (
// OS === "windows" &&
// !["input", "textarea"].includes(
// e.currentTarget.tagName.toLowerCase(),
// ) &&
// !e.currentTarget.isContentEditable
// ) {
// e.preventDefault();
// }
}}
sx={[
({ palette }) => ({ bgcolor: palette.background.paper }),

View File

@@ -3,6 +3,7 @@ import { useLockFn } from "ahooks";
import { useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import useSWR from "swr";
import { closeAllConnections, getBaseConfig } from "tauri-plugin-mihomo-api";
import { BasePage } from "@/components/base";
import { ProviderButton } from "@/components/proxy/provider-button";
@@ -13,7 +14,6 @@ import {
patchClashMode,
updateProxyChainConfigInRuntime,
} from "@/services/cmds";
import { closeAllConnections, getBaseConfig } from "tauri-plugin-mihomo-api";
const ProxyPage = () => {
const { t } = useTranslation();

View File

@@ -210,13 +210,13 @@ class DelayManager {
formatDelay(delay: number, timeout = 10000) {
if (delay === -1) return "-";
if (delay === -2) return "testing";
if (delay >= timeout) return "timeout";
if (delay === 0 || delay >= timeout) return "timeout";
return `${delay}`;
}
formatDelayColor(delay: number, timeout = 10000) {
if (delay < 0) return "";
if (delay >= timeout) return "error.main";
if (delay === 0 || delay >= timeout) return "error.main";
if (delay >= 10000) return "error.main";
if (delay >= 400) return "warning.main";
if (delay >= 250) return "primary.main";