mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 12:33:44 +08:00
perf: imporve clash mode switching performance on the main window (#2667)
This commit is contained in:
parent
215dcee3f1
commit
b14db06955
@ -175,6 +175,12 @@ pub async fn patch_clash_config(payload: Mapping) -> CmdResult {
|
|||||||
wrap_err!(feat::patch_clash(payload).await)
|
wrap_err!(feat::patch_clash(payload).await)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tauri::command]
|
||||||
|
pub async fn patch_clash_mode(payload: String) -> CmdResult {
|
||||||
|
Ok(feat::change_clash_mode(payload))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn get_verge_config() -> CmdResult<IVergeResponse> {
|
pub fn get_verge_config() -> CmdResult<IVergeResponse> {
|
||||||
let verge = Config::verge();
|
let verge = Config::verge();
|
||||||
|
@ -66,7 +66,6 @@ pub fn restart_app() {
|
|||||||
pub fn change_clash_mode(mode: String) {
|
pub fn change_clash_mode(mode: String) {
|
||||||
let mut mapping = Mapping::new();
|
let mut mapping = Mapping::new();
|
||||||
mapping.insert(Value::from("mode"), mode.clone().into());
|
mapping.insert(Value::from("mode"), mode.clone().into());
|
||||||
|
|
||||||
tauri::async_runtime::spawn(async move {
|
tauri::async_runtime::spawn(async move {
|
||||||
log::debug!(target: "app", "change clash mode to {mode}");
|
log::debug!(target: "app", "change clash mode to {mode}");
|
||||||
|
|
||||||
|
@ -83,6 +83,7 @@ pub fn run() {
|
|||||||
// clash
|
// clash
|
||||||
cmds::get_clash_info,
|
cmds::get_clash_info,
|
||||||
cmds::patch_clash_config,
|
cmds::patch_clash_config,
|
||||||
|
cmds::patch_clash_mode,
|
||||||
cmds::change_clash_core,
|
cmds::change_clash_core,
|
||||||
cmds::get_runtime_config,
|
cmds::get_runtime_config,
|
||||||
cmds::get_runtime_yaml,
|
cmds::get_runtime_yaml,
|
||||||
|
@ -4,7 +4,7 @@ import { useLockFn } from "ahooks";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Box, Button, ButtonGroup } from "@mui/material";
|
import { Box, Button, ButtonGroup } from "@mui/material";
|
||||||
import { closeAllConnections, getClashConfig } from "@/services/api";
|
import { closeAllConnections, getClashConfig } from "@/services/api";
|
||||||
import { patchClashConfig } from "@/services/cmds";
|
import { patchClashConfig, patchClashMode } from "@/services/cmds";
|
||||||
import { useVerge } from "@/hooks/use-verge";
|
import { useVerge } from "@/hooks/use-verge";
|
||||||
import { BasePage } from "@/components/base";
|
import { BasePage } from "@/components/base";
|
||||||
import { ProxyGroups } from "@/components/proxy/proxy-groups";
|
import { ProxyGroups } from "@/components/proxy/proxy-groups";
|
||||||
@ -29,7 +29,7 @@ const ProxyPage = () => {
|
|||||||
if (mode !== curMode && verge?.auto_close_connection) {
|
if (mode !== curMode && verge?.auto_close_connection) {
|
||||||
closeAllConnections();
|
closeAllConnections();
|
||||||
}
|
}
|
||||||
await patchClashConfig({ mode });
|
await patchClashMode(mode);
|
||||||
mutateClash();
|
mutateClash();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -91,6 +91,10 @@ export async function patchClashConfig(payload: Partial<IConfigData>) {
|
|||||||
return invoke<void>("patch_clash_config", { payload });
|
return invoke<void>("patch_clash_config", { payload });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function patchClashMode(payload: String) {
|
||||||
|
return invoke<void>("patch_clash_mode", { payload });
|
||||||
|
}
|
||||||
|
|
||||||
export async function getVergeConfig() {
|
export async function getVergeConfig() {
|
||||||
return invoke<IVergeConfig>("get_verge_config");
|
return invoke<IVergeConfig>("get_verge_config");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user