mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 08:45:41 +08:00
fix: resolve system proxy status detection and display inconsistency
- Fixed getSystemProxyActualState logic to properly check actual system status - Unified system proxy state display across all components - Replaced systemProxyIndicator with actualState for consistent UI display - Updated components: setting-system, ProxyControlSwitches, proxy-tun-card - Added entry to v2.4.0 changelog
This commit is contained in:
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
### 🐞 修复问题
|
### 🐞 修复问题
|
||||||
|
|
||||||
|
- 修复系统代理状态检测和显示不一致问题
|
||||||
- 修复系统主题窗口颜色不一致问题
|
- 修复系统主题窗口颜色不一致问题
|
||||||
- 修复特殊字符 URL 处理问题
|
- 修复特殊字符 URL 处理问题
|
||||||
- 修复配置修改后缓存不同步问题
|
- 修复配置修改后缓存不同步问题
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ identifier = "io.github.clash-verge-rev.clash-verge-rev"
|
|||||||
tauri-build = { version = "2.3.1", features = [] }
|
tauri-build = { version = "2.3.1", features = [] }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
warp = { version = "0.4.0", features = ["server"]}
|
warp = { version = "0.4.0", features = ["server"] }
|
||||||
anyhow = "1.0.98"
|
anyhow = "1.0.98"
|
||||||
dirs = "6.0"
|
dirs = "6.0"
|
||||||
open = "5.3.2"
|
open = "5.3.2"
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ export const ProxyTunCard: FC = () => {
|
|||||||
|
|
||||||
const { verge } = useVerge();
|
const { verge } = useVerge();
|
||||||
const { isAdminMode } = useSystemState();
|
const { isAdminMode } = useSystemState();
|
||||||
const { indicator: systemProxyIndicator } = useSystemProxyState();
|
const { actualState: systemProxyActualState } = useSystemProxyState();
|
||||||
|
|
||||||
const { enable_tun_mode } = verge ?? {};
|
const { enable_tun_mode } = verge ?? {};
|
||||||
|
|
||||||
@@ -182,7 +182,7 @@ export const ProxyTunCard: FC = () => {
|
|||||||
const tabDescription = useMemo(() => {
|
const tabDescription = useMemo(() => {
|
||||||
if (activeTab === "system") {
|
if (activeTab === "system") {
|
||||||
return {
|
return {
|
||||||
text: systemProxyIndicator
|
text: systemProxyActualState
|
||||||
? t("System Proxy Enabled")
|
? t("System Proxy Enabled")
|
||||||
: t("System Proxy Disabled"),
|
: t("System Proxy Disabled"),
|
||||||
tooltip: t("System Proxy Info"),
|
tooltip: t("System Proxy Info"),
|
||||||
@@ -197,7 +197,7 @@ export const ProxyTunCard: FC = () => {
|
|||||||
tooltip: t("TUN Mode Intercept Info"),
|
tooltip: t("TUN Mode Intercept Info"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, [activeTab, systemProxyIndicator, enable_tun_mode, isTunAvailable, t]);
|
}, [activeTab, systemProxyActualState, enable_tun_mode, isTunAvailable, t]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box sx={{ display: "flex", flexDirection: "column", width: "100%" }}>
|
<Box sx={{ display: "flex", flexDirection: "column", width: "100%" }}>
|
||||||
@@ -216,7 +216,7 @@ export const ProxyTunCard: FC = () => {
|
|||||||
onClick={() => handleTabChange("system")}
|
onClick={() => handleTabChange("system")}
|
||||||
icon={ComputerRounded}
|
icon={ComputerRounded}
|
||||||
label={t("System Proxy")}
|
label={t("System Proxy")}
|
||||||
hasIndicator={systemProxyIndicator}
|
hasIndicator={systemProxyActualState}
|
||||||
/>
|
/>
|
||||||
<TabButton
|
<TabButton
|
||||||
isActive={activeTab === "tun"}
|
isActive={activeTab === "tun"}
|
||||||
|
|||||||
@@ -34,11 +34,8 @@ const SettingSystem = ({ onError }: Props) => {
|
|||||||
|
|
||||||
const { verge, mutateVerge, patchVerge } = useVerge();
|
const { verge, mutateVerge, patchVerge } = useVerge();
|
||||||
const { installServiceAndRestartCore } = useServiceInstaller();
|
const { installServiceAndRestartCore } = useServiceInstaller();
|
||||||
const {
|
const { actualState: systemProxyActualState, toggleSystemProxy } =
|
||||||
actualState: systemProxyActualState,
|
useSystemProxyState();
|
||||||
indicator: systemProxyIndicator,
|
|
||||||
toggleSystemProxy,
|
|
||||||
} = useSystemProxyState();
|
|
||||||
|
|
||||||
const { isAdminMode, isServiceMode, mutateRunningMode } = useSystemState();
|
const { isAdminMode, isServiceMode, mutateRunningMode } = useSystemState();
|
||||||
|
|
||||||
@@ -179,7 +176,7 @@ const SettingSystem = ({ onError }: Props) => {
|
|||||||
icon={SettingsRounded}
|
icon={SettingsRounded}
|
||||||
onClick={() => sysproxyRef.current?.open()}
|
onClick={() => sysproxyRef.current?.open()}
|
||||||
/>
|
/>
|
||||||
{systemProxyIndicator ? (
|
{systemProxyActualState ? (
|
||||||
<PlayArrowRounded sx={{ color: "success.main", mr: 1 }} />
|
<PlayArrowRounded sx={{ color: "success.main", mr: 1 }} />
|
||||||
) : (
|
) : (
|
||||||
<PauseRounded sx={{ color: "error.main", mr: 1 }} />
|
<PauseRounded sx={{ color: "error.main", mr: 1 }} />
|
||||||
|
|||||||
@@ -40,11 +40,8 @@ const ProxyControlSwitches = ({ label, onError }: ProxySwitchProps) => {
|
|||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const { installServiceAndRestartCore } = useServiceInstaller();
|
const { installServiceAndRestartCore } = useServiceInstaller();
|
||||||
|
|
||||||
const {
|
const { actualState: systemProxyActualState, toggleSystemProxy } =
|
||||||
actualState: systemProxyActualState,
|
useSystemProxyState();
|
||||||
indicator: systemProxyIndicator,
|
|
||||||
toggleSystemProxy,
|
|
||||||
} = useSystemProxyState();
|
|
||||||
|
|
||||||
const { data: runningMode } = useSWR("getRunningMode", getRunningMode);
|
const { data: runningMode } = useSWR("getRunningMode", getRunningMode);
|
||||||
|
|
||||||
@@ -99,7 +96,7 @@ const ProxyControlSwitches = ({ label, onError }: ProxySwitchProps) => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Box sx={{ display: "flex", alignItems: "center" }}>
|
<Box sx={{ display: "flex", alignItems: "center" }}>
|
||||||
{systemProxyIndicator ? (
|
{systemProxyActualState ? (
|
||||||
<PlayCircleOutlineRounded
|
<PlayCircleOutlineRounded
|
||||||
sx={{ color: "success.main", mr: 1.5, fontSize: 28 }}
|
sx={{ color: "success.main", mr: 1.5, fontSize: 28 }}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -18,13 +18,18 @@ export const useSystemProxyState = () => {
|
|||||||
const getSystemProxyActualState = () => {
|
const getSystemProxyActualState = () => {
|
||||||
const userEnabled = enable_system_proxy ?? false;
|
const userEnabled = enable_system_proxy ?? false;
|
||||||
|
|
||||||
|
// 用户配置状态应该与系统实际状态一致
|
||||||
|
// 如果用户启用了系统代理,检查实际的系统状态
|
||||||
if (userEnabled) {
|
if (userEnabled) {
|
||||||
return true;
|
if (proxy_auto_config) {
|
||||||
|
return autoproxy?.enable ?? false;
|
||||||
|
} else {
|
||||||
|
return sysproxy?.enable ?? false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return autoproxy?.enable === false && sysproxy?.enable === false
|
// 用户没有启用时,返回 false
|
||||||
? false
|
return false;
|
||||||
: userEnabled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getSystemProxyIndicator = () => {
|
const getSystemProxyIndicator = () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user