feat: optimize config feedback
This commit is contained in:
parent
1b336d973d
commit
e30ba07285
@ -40,6 +40,12 @@ impl Handle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn notice_message(&self, status: String, msg: String) {
|
||||||
|
if let Some(window) = self.get_window() {
|
||||||
|
log_if_err!(window.emit("verge://notice-message", (status, msg)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// update system tray state (clash config)
|
// update system tray state (clash config)
|
||||||
pub fn update_systray_clash(&self) -> Result<()> {
|
pub fn update_systray_clash(&self) -> Result<()> {
|
||||||
if self.app_handle.is_none() {
|
if self.app_handle.is_none() {
|
||||||
|
@ -284,9 +284,14 @@ impl Core {
|
|||||||
match Service::set_config(clash_info, config).await {
|
match Service::set_config(clash_info, config).await {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let handle = handle.lock();
|
let handle = handle.lock();
|
||||||
handle.refresh_clash()
|
handle.refresh_clash();
|
||||||
|
handle.notice_message("set_config::ok".into(), "ok".into());
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
let handle = handle.lock();
|
||||||
|
handle.notice_message("set_config::error".into(), format!("{err}"));
|
||||||
|
log::error!(target: "app", "last {err}")
|
||||||
}
|
}
|
||||||
Err(err) => log::error!(target: "app", "{err}"),
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -212,8 +212,17 @@ impl Service {
|
|||||||
let mut data = HashMap::new();
|
let mut data = HashMap::new();
|
||||||
data.insert("path", temp_path.as_os_str().to_str().unwrap());
|
data.insert("path", temp_path.as_os_str().to_str().unwrap());
|
||||||
|
|
||||||
|
macro_rules! report_err {
|
||||||
|
($i: expr, $e: expr) => {
|
||||||
|
match $i {
|
||||||
|
4 => bail!($e),
|
||||||
|
_ => log::error!(target: "app", $e),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// retry 5 times
|
// retry 5 times
|
||||||
for _ in 0..5 {
|
for i in 0..5 {
|
||||||
let headers = headers.clone();
|
let headers = headers.clone();
|
||||||
match reqwest::ClientBuilder::new().no_proxy().build() {
|
match reqwest::ClientBuilder::new().no_proxy().build() {
|
||||||
Ok(client) => {
|
Ok(client) => {
|
||||||
@ -223,14 +232,12 @@ impl Service {
|
|||||||
204 => break,
|
204 => break,
|
||||||
// 配置有问题不重试
|
// 配置有问题不重试
|
||||||
400 => bail!("failed to update clash config with status 400"),
|
400 => bail!("failed to update clash config with status 400"),
|
||||||
status @ _ => {
|
status @ _ => report_err!(i, "failed to activate clash with status \"{status}\""),
|
||||||
log::error!(target: "app", "failed to activate clash with status \"{status}\"");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
Err(err) => log::error!(target: "app", "{err}"),
|
Err(err) => report_err!(i, "{err}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => log::error!(target: "app", "{err}"),
|
Err(err) => report_err!(i, "{err}"),
|
||||||
}
|
}
|
||||||
sleep(Duration::from_millis(500)).await;
|
sleep(Duration::from_millis(500)).await;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ const EnhancedMode = (props: Props) => {
|
|||||||
try {
|
try {
|
||||||
await enhanceProfiles();
|
await enhanceProfiles();
|
||||||
mutateLogs();
|
mutateLogs();
|
||||||
Notice.success("Refresh clash config", 1000);
|
// Notice.success("Refresh clash config", 1000);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
Notice.error(err.message || err.toString());
|
Notice.error(err.message || err.toString());
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ const ClashFieldViewer = ({ handler }: Props) => {
|
|||||||
try {
|
try {
|
||||||
await changeProfileValid([...curSet]);
|
await changeProfileValid([...curSet]);
|
||||||
mutateProfile();
|
mutateProfile();
|
||||||
Notice.success("Refresh clash config", 1000);
|
// Notice.success("Refresh clash config", 1000);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
Notice.error(err?.message || err.toString());
|
Notice.error(err?.message || err.toString());
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import { getAxios } from "@/services/api";
|
|||||||
import { atomCurrentProfile } from "@/services/states";
|
import { atomCurrentProfile } from "@/services/states";
|
||||||
import { getVergeConfig, getProfiles } from "@/services/cmds";
|
import { getVergeConfig, getProfiles } from "@/services/cmds";
|
||||||
import { ReactComponent as LogoSvg } from "@/assets/image/logo.svg";
|
import { ReactComponent as LogoSvg } from "@/assets/image/logo.svg";
|
||||||
|
import Notice from "@/components/base/base-notice";
|
||||||
import LayoutItem from "@/components/layout/layout-item";
|
import LayoutItem from "@/components/layout/layout-item";
|
||||||
import LayoutControl from "@/components/layout/layout-control";
|
import LayoutControl from "@/components/layout/layout-control";
|
||||||
import LayoutTraffic from "@/components/layout/layout-traffic";
|
import LayoutTraffic from "@/components/layout/layout-traffic";
|
||||||
@ -59,6 +60,21 @@ const Layout = () => {
|
|||||||
// update the verge config
|
// update the verge config
|
||||||
listen("verge://refresh-verge-config", () => mutate("getVergeConfig"));
|
listen("verge://refresh-verge-config", () => mutate("getVergeConfig"));
|
||||||
|
|
||||||
|
// 设置提示监听
|
||||||
|
listen("verge://notice-message", ({ payload }) => {
|
||||||
|
const [status, msg] = payload as [string, string];
|
||||||
|
switch (status) {
|
||||||
|
case "set_config::ok":
|
||||||
|
Notice.success("Refresh clash config");
|
||||||
|
break;
|
||||||
|
case "set_config::error":
|
||||||
|
Notice.error(msg);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// set current profile uid
|
// set current profile uid
|
||||||
getProfiles().then((data) => setCurrentProfile(data.current ?? ""));
|
getProfiles().then((data) => setCurrentProfile(data.current ?? ""));
|
||||||
}, []);
|
}, []);
|
||||||
|
@ -133,7 +133,7 @@ const ProfilePage = () => {
|
|||||||
setCurrentProfile(uid);
|
setCurrentProfile(uid);
|
||||||
mutate("getProfiles", { ...profiles, current: uid }, true);
|
mutate("getProfiles", { ...profiles, current: uid }, true);
|
||||||
mutate("getRuntimeLogs");
|
mutate("getRuntimeLogs");
|
||||||
if (force) Notice.success("Refresh clash config", 1000);
|
// if (force) Notice.success("Refresh clash config", 1000);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
Notice.error(err?.message || err.toString());
|
Notice.error(err?.message || err.toString());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user