diff --git a/src/renderer/src/components/sider/conn-card.tsx b/src/renderer/src/components/sider/conn-card.tsx index f21ad0a..89fd523 100644 --- a/src/renderer/src/components/sider/conn-card.tsx +++ b/src/renderer/src/components/sider/conn-card.tsx @@ -138,21 +138,23 @@ const ConnCard: React.FC = (props) => { data.push(info.up + info.down) return data }) - if (platform === 'darwin' && showTraffic) { - if (drawingRef.current) return - drawingRef.current = true - try { - await drawSvg(info.up, info.down, currentUploadRef, currentDownloadRef) - hasShowTrafficRef.current = true - } catch { - // ignore - } finally { - drawingRef.current = false + if (platform === 'darwin') { + if (showTraffic) { + if (drawingRef.current) return + drawingRef.current = true + try { + await drawSvg(info.up, info.down, currentUploadRef, currentDownloadRef) + hasShowTrafficRef.current = true + } catch { + // ignore + } finally { + drawingRef.current = false + } + } else if (hasShowTrafficRef.current) { + // 只在从 showTraffic=true 切换到 false 时恢复一次原始图标 + window.electron.ipcRenderer.send('trayIconUpdate', trayIconBase64) + hasShowTrafficRef.current = false } - } else { - if (!hasShowTrafficRef.current) return - window.electron.ipcRenderer.send('trayIconUpdate', trayIconBase64) - hasShowTrafficRef.current = false } }, [showTraffic] diff --git a/src/renderer/src/components/sider/sysproxy-switcher.tsx b/src/renderer/src/components/sider/sysproxy-switcher.tsx index 44eb259..05c6bc5 100644 --- a/src/renderer/src/components/sider/sysproxy-switcher.tsx +++ b/src/renderer/src/components/sider/sysproxy-switcher.tsx @@ -3,7 +3,7 @@ import { toast } from '@renderer/components/base/toast' import BorderSwitch from '@renderer/components/base/border-swtich' import { useLocation, useNavigate } from 'react-router-dom' import { useAppConfig } from '@renderer/hooks/use-app-config' -import { triggerSysProxy, updateTrayIcon, updateTrayIconImmediate } from '@renderer/utils/ipc' +import { triggerSysProxy, updateTrayIconImmediate } from '@renderer/utils/ipc' import { useControledMihomoConfig } from '@renderer/hooks/use-controled-mihomo-config' import { AiOutlineGlobal } from 'react-icons/ai' import React from 'react' @@ -50,7 +50,6 @@ const SysproxySwitcher: React.FC = (props) => { window.electron.ipcRenderer.send('updateFloatingWindow') window.electron.ipcRenderer.send('updateTrayMenu') - await updateTrayIcon() } catch (e) { await patchAppConfig({ sysProxy: { enable: previousState } }) // 回滚图标 diff --git a/src/renderer/src/components/sider/tun-switcher.tsx b/src/renderer/src/components/sider/tun-switcher.tsx index 93cdabf..137b0e0 100644 --- a/src/renderer/src/components/sider/tun-switcher.tsx +++ b/src/renderer/src/components/sider/tun-switcher.tsx @@ -3,7 +3,7 @@ import { useControledMihomoConfig } from '@renderer/hooks/use-controled-mihomo-c import BorderSwitch from '@renderer/components/base/border-swtich' import { TbDeviceIpadHorizontalBolt } from 'react-icons/tb' import { useLocation, useNavigate } from 'react-router-dom' -import { restartCore, updateTrayIcon, updateTrayIconImmediate } from '@renderer/utils/ipc' +import { restartCore, updateTrayIconImmediate } from '@renderer/utils/ipc' import { useSortable } from '@dnd-kit/sortable' import { CSS } from '@dnd-kit/utilities' import React from 'react' @@ -99,7 +99,6 @@ const TunSwitcher: React.FC = (props) => { await restartCore() window.electron.ipcRenderer.send('updateFloatingWindow') window.electron.ipcRenderer.send('updateTrayMenu') - await updateTrayIcon() } if (iconOnly) {