diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs
index 18127038..3571a227 100644
--- a/src-tauri/src/core/tray/mod.rs
+++ b/src-tauri/src/core/tray/mod.rs
@@ -31,10 +31,7 @@ use tauri::{
tray::{MouseButton, MouseButtonState, TrayIconEvent},
};
-// TODO:
-// - 定时更新代理菜单(5s)
-// - 前端选择节点/代理组测速后,发送 event 事件,Tray 监听此事件
-// - 是否需要将可变菜单抽离存储起来,后续直接更新对应菜单实例,无需重新创建菜单(待考虑)
+// TODO: 是否需要将可变菜单抽离存储起来,后续直接更新对应菜单实例,无需重新创建菜单(待考虑)
#[derive(Clone)]
struct TrayState {}
diff --git a/src/components/home/clash-info-card.tsx b/src/components/home/clash-info-card.tsx
index 7f548eff..816cae7e 100644
--- a/src/components/home/clash-info-card.tsx
+++ b/src/components/home/clash-info-card.tsx
@@ -53,7 +53,7 @@ export const ClashInfoCard = () => {
{t("Mixed Port")}
- {clashConfig["mixed-port"] || "-"}
+ {clashConfig.mixedPort || "-"}
diff --git a/src/hooks/use-clash.ts b/src/hooks/use-clash.ts
index 58d8a6b3..483f197d 100644
--- a/src/hooks/use-clash.ts
+++ b/src/hooks/use-clash.ts
@@ -1,12 +1,12 @@
import { useLockFn } from "ahooks";
import useSWR, { mutate } from "swr";
+import { getVersion } from "tauri-plugin-mihomo-api";
import {
getClashInfo,
patchClashConfig,
getRuntimeConfig,
} from "@/services/cmds";
-import { getVersion } from "tauri-plugin-mihomo-api";
export const useClash = () => {
const { data: clash, mutate: mutateClash } = useSWR(
diff --git a/src/providers/app-data-provider.tsx b/src/providers/app-data-provider.tsx
index d45ffe46..139398fd 100644
--- a/src/providers/app-data-provider.tsx
+++ b/src/providers/app-data-provider.tsx
@@ -2,14 +2,18 @@ import { listen } from "@tauri-apps/api/event";
import React, { createContext, use, useEffect, useMemo, useRef } from "react";
import useSWR from "swr";
import {
+ BaseConfig,
getBaseConfig,
getRuleProviders,
getRules,
+ ProxyProvider,
+ Rule,
+ RuleProvider,
} from "tauri-plugin-mihomo-api";
-import { useClashInfo } from "@/hooks/use-clash";
+// import { useClashInfo } from "@/hooks/use-clash";
import { useVerge } from "@/hooks/use-verge";
-import { useVisibility } from "@/hooks/use-visibility";
+// import { useVisibility } from "@/hooks/use-visibility";
import {
calcuProxies,
calcuProxyProviders,
@@ -31,16 +35,16 @@ interface ConnectionWithSpeed extends IConnectionsItem {
curDownload: number;
}
-// 定义AppDataContext类型 - 使用宽松类型
+// 定义AppDataContext类型
interface AppDataContextType {
proxies: any;
- clashConfig: any;
- rules: any[];
+ clashConfig: BaseConfig;
+ rules: Rule[];
sysproxy: any;
runningMode?: string;
uptime: number;
- proxyProviders: any;
- ruleProviders: any;
+ proxyProviders: Record;
+ ruleProviders: Record;
// connections: {
// data: ConnectionWithSpeed[];
// count: number;
@@ -69,8 +73,8 @@ export const AppDataProvider = ({
}: {
children: React.ReactNode;
}) => {
- const pageVisible = useVisibility();
- const { clashInfo } = useClashInfo();
+ // const pageVisible = useVisibility();
+ // const { clashInfo } = useClashInfo();
const { verge } = useVerge();
// 存储上一次连接数据用于速度计算
@@ -157,6 +161,8 @@ export const AppDataProvider = ({
lastProfileId = newProfileId;
lastUpdateTime = now;
+ refreshRules();
+ refreshRuleProviders();
});
// 监听Clash配置刷新事件(enhance操作等)
@@ -502,7 +508,7 @@ export const AppDataProvider = ({
refreshProxyProviders,
refreshRuleProviders,
refreshAll,
- };
+ } as AppDataContextType;
}, [
proxiesData,
clashConfig,