From 0b8c77d200c5d976ede0fdc5be39b31825d33edd Mon Sep 17 00:00:00 2001 From: ezequielnick <107352853+ezequielnick@users.noreply.github.com> Date: Fri, 6 Jun 2025 19:29:49 +0800 Subject: [PATCH] feat: add animation during latency testing for better user feedback --- .../src/components/proxies/proxy-item.tsx | 15 +++++--- src/renderer/src/pages/proxies.tsx | 35 +++++++++++++++---- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/renderer/src/components/proxies/proxy-item.tsx b/src/renderer/src/components/proxies/proxy-item.tsx index ee08afa..29e43b1 100644 --- a/src/renderer/src/components/proxies/proxy-item.tsx +++ b/src/renderer/src/components/proxies/proxy-item.tsx @@ -1,6 +1,7 @@ import { Button, Card, CardBody } from '@heroui/react' import { mihomoUnfixedProxy } from '@renderer/utils/ipc' -import React, { useMemo, useState } from 'react' +import React from 'react' +import { useMemo, useState } from 'react' import { FaMapPin } from 'react-icons/fa6' import { useTranslation } from 'react-i18next' @@ -12,11 +13,12 @@ interface Props { group: IMihomoMixedGroup onSelect: (group: string, proxy: string) => void selected: boolean + isGroupTesting?: boolean } const ProxyItem: React.FC = (props) => { const { t } = useTranslation() - const { mutateProxies, proxyDisplayMode, group, proxy, selected, onSelect, onProxyDelay } = props + const { mutateProxies, proxyDisplayMode, group, proxy, selected, onSelect, onProxyDelay, isGroupTesting = false } = props const delay = useMemo(() => { if (proxy.history.length > 0) { @@ -26,6 +28,9 @@ const ProxyItem: React.FC = (props) => { }, [proxy]) const [loading, setLoading] = useState(false) + + const isLoading = loading || isGroupTesting + function delayColor(delay: number): 'primary' | 'success' | 'warning' | 'danger' { if (delay === -1) return 'primary' if (delay === 0) return 'danger' @@ -106,7 +111,7 @@ const ProxyItem: React.FC = (props) => {