mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-15 07:12:09 +08:00
Revert "refactor: profile switch (#5197)"
This reverts commit c2dcd86722.
This commit is contained in:
@@ -1,14 +1,7 @@
|
||||
use crate::{
|
||||
APP_HANDLE, config::Config, constants::timing, logging, singleton, utils::logging::Type,
|
||||
};
|
||||
use crate::{APP_HANDLE, constants::timing, singleton};
|
||||
use parking_lot::RwLock;
|
||||
use serde_json::{Value, json};
|
||||
use smartstring::alias::String;
|
||||
use std::{
|
||||
sync::Arc,
|
||||
thread,
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
use std::{sync::Arc, thread};
|
||||
use tauri::{AppHandle, Manager, WebviewWindow};
|
||||
use tauri_plugin_mihomo::{Mihomo, MihomoExt};
|
||||
use tokio::sync::RwLockReadGuard;
|
||||
@@ -73,14 +66,10 @@ impl Handle {
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
let system_opt = handle.notification_system.read();
|
||||
if let Some(system) = system_opt.as_ref() {
|
||||
system.send_event(FrontendEvent::RefreshClash);
|
||||
}
|
||||
let system_opt = handle.notification_system.read();
|
||||
if let Some(system) = system_opt.as_ref() {
|
||||
system.send_event(FrontendEvent::RefreshClash);
|
||||
}
|
||||
|
||||
Self::spawn_proxy_snapshot();
|
||||
}
|
||||
|
||||
pub fn refresh_verge() {
|
||||
@@ -96,37 +85,11 @@ impl Handle {
|
||||
}
|
||||
|
||||
pub fn notify_profile_changed(profile_id: String) {
|
||||
let handle = Self::global();
|
||||
if handle.is_exiting() {
|
||||
return;
|
||||
}
|
||||
|
||||
let system_opt = handle.notification_system.read();
|
||||
if let Some(system) = system_opt.as_ref() {
|
||||
system.send_event(FrontendEvent::ProfileChanged {
|
||||
current_profile_id: profile_id,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
pub fn notify_profile_switch_finished(
|
||||
profile_id: String,
|
||||
success: bool,
|
||||
notify: bool,
|
||||
task_id: u64,
|
||||
) {
|
||||
Self::send_event(FrontendEvent::ProfileSwitchFinished {
|
||||
profile_id,
|
||||
success,
|
||||
notify,
|
||||
task_id,
|
||||
Self::send_event(FrontendEvent::ProfileChanged {
|
||||
current_profile_id: profile_id,
|
||||
});
|
||||
}
|
||||
|
||||
pub fn notify_rust_panic(message: String, location: String) {
|
||||
Self::send_event(FrontendEvent::RustPanic { message, location });
|
||||
}
|
||||
|
||||
pub fn notify_timer_updated(profile_index: String) {
|
||||
Self::send_event(FrontendEvent::TimerUpdated { profile_index });
|
||||
}
|
||||
@@ -137,86 +100,6 @@ impl Handle {
|
||||
|
||||
pub fn notify_profile_update_completed(uid: String) {
|
||||
Self::send_event(FrontendEvent::ProfileUpdateCompleted { uid });
|
||||
Self::spawn_proxy_snapshot();
|
||||
}
|
||||
|
||||
pub fn notify_proxies_updated(payload: Value) {
|
||||
Self::send_event(FrontendEvent::ProxiesUpdated { payload });
|
||||
}
|
||||
|
||||
pub async fn build_proxy_snapshot() -> Option<Value> {
|
||||
let mihomo_guard = Self::mihomo().await;
|
||||
let proxies = match mihomo_guard.get_proxies().await {
|
||||
Ok(data) => match serde_json::to_value(&data) {
|
||||
Ok(value) => value,
|
||||
Err(error) => {
|
||||
logging!(
|
||||
warn,
|
||||
Type::Frontend,
|
||||
"Failed to serialize proxies snapshot: {error}"
|
||||
);
|
||||
return None;
|
||||
}
|
||||
},
|
||||
Err(error) => {
|
||||
logging!(
|
||||
warn,
|
||||
Type::Frontend,
|
||||
"Failed to fetch proxies for snapshot: {error}"
|
||||
);
|
||||
return None;
|
||||
}
|
||||
};
|
||||
|
||||
drop(mihomo_guard);
|
||||
|
||||
let providers_guard = Self::mihomo().await;
|
||||
let providers_value = match providers_guard.get_proxy_providers().await {
|
||||
Ok(data) => serde_json::to_value(&data).unwrap_or_else(|error| {
|
||||
logging!(
|
||||
warn,
|
||||
Type::Frontend,
|
||||
"Failed to serialize proxy providers for snapshot: {error}"
|
||||
);
|
||||
Value::Null
|
||||
}),
|
||||
Err(error) => {
|
||||
logging!(
|
||||
warn,
|
||||
Type::Frontend,
|
||||
"Failed to fetch proxy providers for snapshot: {error}"
|
||||
);
|
||||
Value::Null
|
||||
}
|
||||
};
|
||||
|
||||
drop(providers_guard);
|
||||
|
||||
let profile_guard = Config::profiles().await;
|
||||
let profile_id = profile_guard.latest_ref().current.clone();
|
||||
drop(profile_guard);
|
||||
|
||||
let emitted_at = SystemTime::now()
|
||||
.duration_since(UNIX_EPOCH)
|
||||
.map(|duration| duration.as_millis() as i64)
|
||||
.unwrap_or(0);
|
||||
|
||||
let payload = json!({
|
||||
"proxies": proxies,
|
||||
"providers": providers_value,
|
||||
"profileId": profile_id,
|
||||
"emittedAt": emitted_at,
|
||||
});
|
||||
|
||||
Some(payload)
|
||||
}
|
||||
|
||||
fn spawn_proxy_snapshot() {
|
||||
tauri::async_runtime::spawn(async {
|
||||
if let Some(payload) = Handle::build_proxy_snapshot().await {
|
||||
Handle::notify_proxies_updated(payload);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
pub fn notice_message<S: Into<String>, M: Into<String>>(status: S, msg: M) {
|
||||
|
||||
Reference in New Issue
Block a user