mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 08:45:41 +08:00
feat(hotkey): add global reactivate_profiles shortcut (#5527)
* feat(hotkey): add global reactivate_profiles shortcut * feat(profile): expose validation state for reactivation shortcuts
This commit is contained in:
@@ -21,6 +21,7 @@ pub enum HotkeyFunction {
|
||||
ToggleSystemProxy,
|
||||
ToggleTunMode,
|
||||
EntryLightweightMode,
|
||||
ReactivateProfiles,
|
||||
Quit,
|
||||
#[cfg(target_os = "macos")]
|
||||
Hide,
|
||||
@@ -36,6 +37,7 @@ impl fmt::Display for HotkeyFunction {
|
||||
Self::ToggleSystemProxy => "toggle_system_proxy",
|
||||
Self::ToggleTunMode => "toggle_tun_mode",
|
||||
Self::EntryLightweightMode => "entry_lightweight_mode",
|
||||
Self::ReactivateProfiles => "reactivate_profiles",
|
||||
Self::Quit => "quit",
|
||||
#[cfg(target_os = "macos")]
|
||||
Self::Hide => "hide",
|
||||
@@ -56,6 +58,7 @@ impl FromStr for HotkeyFunction {
|
||||
"toggle_system_proxy" => Ok(Self::ToggleSystemProxy),
|
||||
"toggle_tun_mode" => Ok(Self::ToggleTunMode),
|
||||
"entry_lightweight_mode" => Ok(Self::EntryLightweightMode),
|
||||
"reactivate_profiles" => Ok(Self::ReactivateProfiles),
|
||||
"quit" => Ok(Self::Quit),
|
||||
#[cfg(target_os = "macos")]
|
||||
"hide" => Ok(Self::Hide),
|
||||
@@ -149,6 +152,40 @@ impl Hotkey {
|
||||
notify_event(NotificationEvent::LightweightModeEntered).await;
|
||||
});
|
||||
}
|
||||
HotkeyFunction::ReactivateProfiles => {
|
||||
AsyncHandler::spawn(async move || match feat::enhance_profiles().await {
|
||||
Ok((true, _)) => {
|
||||
handle::Handle::refresh_clash();
|
||||
notify_event(NotificationEvent::ProfilesReactivated).await;
|
||||
}
|
||||
Ok((false, msg)) => {
|
||||
let message = if msg.is_empty() {
|
||||
"Failed to reactivate profiles.".to_string()
|
||||
} else {
|
||||
msg.to_string()
|
||||
};
|
||||
logging!(
|
||||
warn,
|
||||
Type::Hotkey,
|
||||
"Hotkey profile reactivation failed validation: {}",
|
||||
message.as_str()
|
||||
);
|
||||
handle::Handle::notice_message("reactivate_profiles::error", message);
|
||||
}
|
||||
Err(err) => {
|
||||
logging!(
|
||||
error,
|
||||
Type::Hotkey,
|
||||
"Failed to reactivate subscriptions via hotkey: {}",
|
||||
err
|
||||
);
|
||||
handle::Handle::notice_message(
|
||||
"reactivate_profiles::error",
|
||||
err.to_string(),
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
HotkeyFunction::Quit => {
|
||||
AsyncHandler::spawn(async move || {
|
||||
notify_event(NotificationEvent::AppQuit).await;
|
||||
|
||||
Reference in New Issue
Block a user