mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 03:23:57 +08:00
refactor: improve proxy retrieval and add window destruction method
This commit is contained in:
parent
baa535b609
commit
772ecdd3b0
@ -4,13 +4,21 @@ use crate::module::mihomo::MihomoManager;
|
||||
#[tauri::command]
|
||||
pub async fn get_proxies() -> CmdResult<serde_json::Value> {
|
||||
let mannager = MihomoManager::global();
|
||||
mannager.refresh_proxies().await.unwrap();
|
||||
Ok(mannager.get_proxies())
|
||||
let proxies = mannager
|
||||
.refresh_proxies()
|
||||
.await
|
||||
.map(|_| mannager.get_proxies())
|
||||
.or_else(|_| Ok(mannager.get_proxies()));
|
||||
proxies
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn get_providers_proxies() -> CmdResult<serde_json::Value> {
|
||||
let mannager = MihomoManager::global();
|
||||
mannager.refresh_providers_proxies().await.unwrap();
|
||||
Ok(mannager.get_providers_proxies())
|
||||
let providers = mannager
|
||||
.refresh_providers_proxies()
|
||||
.await
|
||||
.map(|_| mannager.get_providers_proxies())
|
||||
.or_else(|_| Ok(mannager.get_providers_proxies()));
|
||||
providers
|
||||
}
|
||||
|
@ -41,6 +41,18 @@ impl Handle {
|
||||
window
|
||||
}
|
||||
|
||||
pub fn destroy_window(&self) -> Result<(), String> {
|
||||
if let Some(window) = self.get_window() {
|
||||
log_err!(window.close());
|
||||
}
|
||||
if let Some(window) = Self::global().get_window() {
|
||||
if let Some(webview) = window.get_webview_window("main") {
|
||||
log_err!(webview.destroy());
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn refresh_clash() {
|
||||
if let Some(window) = Self::global().get_window() {
|
||||
log_err!(window.emit("verge://refresh-clash-config", "yes"));
|
||||
|
@ -194,18 +194,11 @@ pub async fn patch_verge(patch: IVerge, not_save_file: bool) -> Result<()> {
|
||||
}
|
||||
|
||||
// Handle lite mode switch
|
||||
if lite_mode.is_some() {
|
||||
if let Some(window) = handle::Handle::global().get_window() {
|
||||
if lite_mode.unwrap() {
|
||||
// 完全退出 webview 进程
|
||||
window.close()?; // 先关闭窗口
|
||||
let app_handle = handle::Handle::global().app_handle().unwrap();
|
||||
if let Some(webview) = app_handle.get_webview_window("main") {
|
||||
webview.destroy()?; // 销毁 webview 进程
|
||||
}
|
||||
} else {
|
||||
resolve::create_window(); // 重新创建窗口
|
||||
}
|
||||
if let Some(enable) = lite_mode {
|
||||
if enable {
|
||||
handle::Handle::global().destroy_window().ok();
|
||||
} else {
|
||||
resolve::create_window();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user