diff --git a/src/renderer/src/components/proxies/proxy-item.tsx b/src/renderer/src/components/proxies/proxy-item.tsx index 6abb7a4..66bff0e 100644 --- a/src/renderer/src/components/proxies/proxy-item.tsx +++ b/src/renderer/src/components/proxies/proxy-item.tsx @@ -1,6 +1,5 @@ import { Button, Card, CardBody } from '@nextui-org/react' -import React, { useEffect, useMemo, useState } from 'react' -import PubSub from 'pubsub-js' +import React, { useMemo, useState } from 'react' interface Props { mutateProxies: () => void @@ -45,13 +44,6 @@ const ProxyItem: React.FC = (props) => { }) } - useEffect(() => { - const token = PubSub.subscribe(`${group.name}-delay`, onDelay) - - return (): void => { - PubSub.unsubscribe(token) - } - }, []) const fixed = group.fixed && group.fixed === proxy.name return ( diff --git a/src/renderer/src/components/sider/mihomo-core-card.tsx b/src/renderer/src/components/sider/mihomo-core-card.tsx index 6cf0739..e13a060 100644 --- a/src/renderer/src/components/sider/mihomo-core-card.tsx +++ b/src/renderer/src/components/sider/mihomo-core-card.tsx @@ -6,6 +6,7 @@ import { IoMdRefresh } from 'react-icons/io' import { useSortable } from '@dnd-kit/sortable' import { CSS } from '@dnd-kit/utilities' import { useLocation, useNavigate } from 'react-router-dom' +import PubSub from 'pubsub-js' import useSWR from 'swr' const MihomoCoreCard: React.FC = () => { diff --git a/src/renderer/src/pages/mihomo.tsx b/src/renderer/src/pages/mihomo.tsx index 3a8569f..d0cffb9 100644 --- a/src/renderer/src/pages/mihomo.tsx +++ b/src/renderer/src/pages/mihomo.tsx @@ -7,6 +7,7 @@ import { useControledMihomoConfig } from '@renderer/hooks/use-controled-mihomo-c import { platform } from '@renderer/utils/init' import { FaNetworkWired } from 'react-icons/fa' import { IoMdCloudDownload } from 'react-icons/io' +import PubSub from 'pubsub-js' import { mihomoUpgrade, restartCore, triggerSysProxy } from '@renderer/utils/ipc' import React, { useState } from 'react' import InterfaceModal from '@renderer/components/mihomo/interface-modal' diff --git a/src/renderer/src/pages/proxies.tsx b/src/renderer/src/pages/proxies.tsx index 1355429..e867391 100644 --- a/src/renderer/src/pages/proxies.tsx +++ b/src/renderer/src/pages/proxies.tsx @@ -30,6 +30,7 @@ const Proxies: React.FC = () => { } = appConfig || {} const [cols, setCols] = useState(1) const [isOpen, setIsOpen] = useState(Array(groups.length).fill(false)) + const [delaying, setDelaying] = useState(Array(groups.length).fill(false)) const [searchValue, setSearchValue] = useState(Array(groups.length).fill('')) const virtuosoRef = useRef(null) const { groupCounts, allProxies } = useMemo(() => { @@ -76,9 +77,19 @@ const Proxies: React.FC = () => { return await mihomoProxyDelay(proxy, url) } - const onGroupDelay = async (group: string, url?: string): Promise => { - PubSub.publish(`${group}-delay`) - await mihomoGroupDelay(group, url) + const onGroupDelay = async (index: number): Promise => { + setDelaying((prev) => { + const newDelaying = [...prev] + newDelaying[index] = true + return newDelaying + }) + await mihomoGroupDelay(groups[index].name, groups[index].testUrl) + setDelaying((prev) => { + const newDelaying = [...prev] + newDelaying[index] = false + return newDelaying + }) + mutate() } const calcCols = (): number => { @@ -267,10 +278,11 @@ const Proxies: React.FC = () => {