From 65fb2ca2d521385ba376cfeb479bc555480b83a6 Mon Sep 17 00:00:00 2001
From: GyDi <segydi@foxmail.com>
Date: Thu, 20 Jan 2022 23:41:08 +0800
Subject: [PATCH] feat: enable update clash info

---
 src-tauri/src/core/clash.rs | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/src-tauri/src/core/clash.rs b/src-tauri/src/core/clash.rs
index 3ecf76a..e281b04 100644
--- a/src-tauri/src/core/clash.rs
+++ b/src-tauri/src/core/clash.rs
@@ -32,6 +32,15 @@ static CLASH_CONFIG: &str = "config.yaml";
 // todo: be able to change config field
 impl Clash {
   pub fn new() -> Clash {
+    Clash {
+      info: Clash::get_info(),
+      sidecar: None,
+    }
+  }
+
+  /// parse the clash's config.yaml
+  /// get some information
+  fn get_info() -> ClashInfo {
     let clash_config = config::read_yaml::<Mapping>(dirs::app_home_dir().join(CLASH_CONFIG));
 
     let key_port_1 = Value::String("port".to_string());
@@ -76,17 +85,20 @@ impl Clash {
       _ => None,
     };
 
-    Clash {
-      info: ClashInfo {
-        status: "init".into(),
-        port,
-        server,
-        secret,
-      },
-      sidecar: None,
+    ClashInfo {
+      status: "init".into(),
+      port,
+      server,
+      secret,
     }
   }
 
+  /// update the clash info
+  pub fn update_info(&mut self) -> Result<(), String> {
+    self.info = Clash::get_info();
+    Ok(())
+  }
+
   /// run clash sidecar
   pub fn run_sidecar(&mut self) -> Result<(), String> {
     let app_dir = dirs::app_home_dir();
@@ -127,6 +139,7 @@ impl Clash {
 
   /// restart clash sidecar
   pub fn restart_sidecar(&mut self) -> Result<(), String> {
+    self.update_info()?;
     self.drop_sidecar()?;
     self.run_sidecar()
   }
-- 
GitLab