From 294d980b5237535f2eb24cb81e890d0766576beb Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Sat, 22 Oct 2022 13:55:06 +0800
Subject: [PATCH] fix: kill clash when exit in service mode, close #241

---
 src-tauri/src/core/service.rs | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src-tauri/src/core/service.rs b/src-tauri/src/core/service.rs
index a2ce71e..8cc2ed7 100644
--- a/src-tauri/src/core/service.rs
+++ b/src-tauri/src/core/service.rs
@@ -22,6 +22,9 @@ pub struct Service {
   sidecar: Option<CommandChild>,
 
   logs: Arc<RwLock<VecDeque<String>>>,
+
+  #[allow(unused)]
+  use_service_mode: bool,
 }
 
 impl Service {
@@ -31,6 +34,7 @@ impl Service {
     Service {
       sidecar: None,
       logs: Arc::new(RwLock::new(queue)),
+      use_service_mode: false,
     }
   }
 
@@ -46,6 +50,8 @@ impl Service {
         verge.enable_service_mode.clone().unwrap_or(false)
       };
 
+      self.use_service_mode = enable;
+
       if !enable {
         return self.start_clash_by_sidecar();
       }
@@ -74,14 +80,8 @@ impl Service {
     {
       let _ = self.stop_clash_by_sidecar();
 
-      let enable = {
-        let data = Data::global();
-        let verge = data.verge.lock();
-        verge.enable_service_mode.clone().unwrap_or(false)
-      };
-
-      if enable {
-        tauri::async_runtime::spawn(async move {
+      if self.use_service_mode {
+        tauri::async_runtime::block_on(async move {
           log_if_err!(Self::stop_clash_by_service().await);
         });
       }
-- 
GitLab