fix: handle is none
This commit is contained in:
parent
cf96622261
commit
2d2fdf0b1e
@ -10,8 +10,8 @@ pub struct Handle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Handle {
|
impl Handle {
|
||||||
pub fn from(app_handle: Option<AppHandle>) -> Handle {
|
pub fn set_inner(&mut self, app_handle: AppHandle) {
|
||||||
Handle { app_handle }
|
self.app_handle = Some(app_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_window(&self) -> Option<Window> {
|
pub fn get_window(&self) -> Option<Window> {
|
||||||
|
@ -22,7 +22,7 @@ static CORE: Lazy<Core> = Lazy::new(|| Core {
|
|||||||
sysopt: Arc::new(Mutex::new(Sysopt::new())),
|
sysopt: Arc::new(Mutex::new(Sysopt::new())),
|
||||||
timer: Arc::new(Mutex::new(Timer::new())),
|
timer: Arc::new(Mutex::new(Timer::new())),
|
||||||
runtime: Arc::new(Mutex::new(RuntimeResult::default())),
|
runtime: Arc::new(Mutex::new(RuntimeResult::default())),
|
||||||
handle: Handle::default(),
|
handle: Arc::new(Mutex::new(Handle::default())),
|
||||||
});
|
});
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@ -31,7 +31,7 @@ pub struct Core {
|
|||||||
pub sysopt: Arc<Mutex<Sysopt>>,
|
pub sysopt: Arc<Mutex<Sysopt>>,
|
||||||
pub timer: Arc<Mutex<Timer>>,
|
pub timer: Arc<Mutex<Timer>>,
|
||||||
pub runtime: Arc<Mutex<RuntimeResult>>,
|
pub runtime: Arc<Mutex<RuntimeResult>>,
|
||||||
pub handle: Handle,
|
pub handle: Arc<Mutex<Handle>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Core {
|
impl Core {
|
||||||
@ -40,10 +40,14 @@ impl Core {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// initialize the core state
|
/// initialize the core state
|
||||||
pub fn init(&mut self, app_handle: tauri::AppHandle) {
|
pub fn init(&self, app_handle: tauri::AppHandle) {
|
||||||
// kill old clash process
|
// kill old clash process
|
||||||
Service::kill_old_clash();
|
Service::kill_old_clash();
|
||||||
self.handle = Handle::from(Some(app_handle));
|
|
||||||
|
{
|
||||||
|
let mut handle = self.handle.lock();
|
||||||
|
handle.set_inner(app_handle);
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut service = self.service.lock();
|
let mut service = self.service.lock();
|
||||||
@ -58,8 +62,11 @@ impl Core {
|
|||||||
log_if_err!(sysopt.init_sysproxy());
|
log_if_err!(sysopt.init_sysproxy());
|
||||||
}
|
}
|
||||||
|
|
||||||
log_if_err!(self.handle.update_systray());
|
{
|
||||||
log_if_err!(self.handle.update_systray_clash());
|
let handle = self.handle.lock();
|
||||||
|
log_if_err!(handle.update_systray());
|
||||||
|
log_if_err!(handle.update_systray_clash());
|
||||||
|
}
|
||||||
|
|
||||||
// timer initialize
|
// timer initialize
|
||||||
let mut timer = self.timer.lock();
|
let mut timer = self.timer.lock();
|
||||||
@ -124,7 +131,8 @@ impl Core {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if has_mode {
|
if has_mode {
|
||||||
self.handle.update_systray_clash()?;
|
let handle = self.handle.lock();
|
||||||
|
handle.update_systray_clash()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -186,7 +194,8 @@ impl Core {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if system_proxy.is_some() || tun_mode.is_some() {
|
if system_proxy.is_some() || tun_mode.is_some() {
|
||||||
self.handle.update_systray()?;
|
let handle = self.handle.lock();
|
||||||
|
handle.update_systray()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -211,7 +220,8 @@ impl Core {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// update tray
|
// update tray
|
||||||
self.handle.update_systray_clash()?;
|
let handle = self.handle.lock();
|
||||||
|
handle.update_systray_clash()?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -260,7 +270,10 @@ impl Core {
|
|||||||
let handle = self.handle.clone();
|
let handle = self.handle.clone();
|
||||||
tauri::async_runtime::spawn(async move {
|
tauri::async_runtime::spawn(async move {
|
||||||
match Service::set_config(clash_info, config).await {
|
match Service::set_config(clash_info, config).await {
|
||||||
Ok(_) => handle.refresh_clash(),
|
Ok(_) => {
|
||||||
|
let handle = handle.lock();
|
||||||
|
handle.refresh_clash()
|
||||||
|
}
|
||||||
Err(err) => log::error!(target: "app", "{err}"),
|
Err(err) => log::error!(target: "app", "{err}"),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -16,7 +16,7 @@ pub fn resolve_setup(app: &App) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// core should be initialized after init_app fix #122
|
// core should be initialized after init_app fix #122
|
||||||
let mut core = Core::global();
|
let core = Core::global();
|
||||||
core.init(app.app_handle());
|
core.init(app.app_handle());
|
||||||
|
|
||||||
resolve_window(app);
|
resolve_window(app);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user