diff --git a/src/renderer/src/components/sider/mihomo-core-card.tsx.tsx b/src/renderer/src/components/sider/mihomo-core-card.tsx.tsx index 6227732..f440ac3 100644 --- a/src/renderer/src/components/sider/mihomo-core-card.tsx.tsx +++ b/src/renderer/src/components/sider/mihomo-core-card.tsx.tsx @@ -7,7 +7,7 @@ import { useLocation, useNavigate } from 'react-router-dom' import useSWR from 'swr' const MihomoCoreCard: React.FC = () => { - const { data: version } = useSWR('mihomoVersion', mihomoVersion) + const { data: version, mutate } = useSWR('mihomoVersion', mihomoVersion) const navigate = useNavigate() const location = useLocation() const match = location.pathname.includes('/mihomo') @@ -15,10 +15,17 @@ const MihomoCoreCard: React.FC = () => { const [mem, setMem] = useState(0) useEffect(() => { + const token = PubSub.subscribe('mihomo-core-changed', () => { + mutate() + setTimeout(() => { + mutate() + }, 1000) + }) window.electron.ipcRenderer.on('mihomoMemory', (_e, info: IMihomoMemoryInfo) => { setMem(info.inuse) }) return (): void => { + PubSub.unsubscribe(token) window.electron.ipcRenderer.removeAllListeners('mihomoMemory') } }, []) diff --git a/src/renderer/src/components/sider/rule-card.tsx b/src/renderer/src/components/sider/rule-card.tsx index 4953c72..2dd58bb 100644 --- a/src/renderer/src/components/sider/rule-card.tsx +++ b/src/renderer/src/components/sider/rule-card.tsx @@ -8,7 +8,7 @@ const RuleCard: React.FC = () => { const navigate = useNavigate() const location = useLocation() const match = location.pathname.includes('/rules') - const { data: rules } = useSWR('/rules', mihomoRules, { + const { data: rules } = useSWR('mihomoRules', mihomoRules, { refreshInterval: 5000 }) diff --git a/src/renderer/src/pages/mihomo.tsx b/src/renderer/src/pages/mihomo.tsx index 4cdeadc..f9e7087 100644 --- a/src/renderer/src/pages/mihomo.tsx +++ b/src/renderer/src/pages/mihomo.tsx @@ -2,11 +2,19 @@ import { Button, Input, Select, SelectItem, Switch } from '@nextui-org/react' import BasePage from '@renderer/components/base/base-page' import SettingCard from '@renderer/components/base/base-setting-card' import SettingItem from '@renderer/components/base/base-setting-item' +import { useAppConfig } from '@renderer/hooks/use-app-config' import { useControledMihomoConfig } from '@renderer/hooks/use-controled-mihomo-config' import { patchMihomoConfig, restartCore } from '@renderer/utils/ipc' import React, { useState } from 'react' +const CoreMap = { + mihomo: '稳定版', + 'mihomo-alpha': '预览版' +} + const Mihomo: React.FC = () => { + const { appConfig, patchAppConfig } = useAppConfig() + const { core = 'mihomo' } = appConfig || {} const { controledMihomoConfig, patchControledMihomoConfig } = useControledMihomoConfig() const { ipv6, @@ -34,6 +42,20 @@ const Mihomo: React.FC = () => { return ( + + +
{mixedPortInput !== mixedPort && ( diff --git a/src/renderer/src/pages/rules.tsx b/src/renderer/src/pages/rules.tsx index bc83b94..9e9f371 100644 --- a/src/renderer/src/pages/rules.tsx +++ b/src/renderer/src/pages/rules.tsx @@ -6,7 +6,7 @@ import useSWR from 'swr' import { mihomoRules } from '@renderer/utils/ipc' const Rules: React.FC = () => { - const { data: rules = { rules: [] } } = useSWR('/rules', mihomoRules, { + const { data: rules = { rules: [] } } = useSWR('mihomoRules', mihomoRules, { refreshInterval: 5000 }) const [filter, setFilter] = useState('')