Просмотр исходного кода

chore: Adjust the chain processing execution order and default value

MystiPanda 11 месяцев назад
Родитель
Сommit
7e8b65e61f
3 измененных файлов с 30 добавлено и 22 удалено
  1. 3 1
      src-tauri/src/config/prfitem.rs
  2. 20 21
      src-tauri/src/enhance/mod.rs
  3. 7 0
      src-tauri/src/utils/tmpl.rs

+ 3 - 1
src-tauri/src/config/prfitem.rs

@@ -428,8 +428,10 @@ impl PrfItem {
     /// create the enhanced item by using `merge` rule
     pub fn from_merge(uid: Option<String>) -> Result<PrfItem> {
         let mut id = help::get_uid("m");
+        let mut template = tmpl::ITEM_MERGE.into();
         if let Some(uid) = uid {
             id = uid;
+            template = tmpl::ITEM_MERGE_EMPTY.into();
         }
         let file = format!("{id}.yaml");
 
@@ -445,7 +447,7 @@ impl PrfItem {
             option: None,
             home: None,
             updated: Some(chrono::Local::now().timestamp() as usize),
-            file_data: Some(tmpl::ITEM_MERGE.into()),
+            file_data: Some(template),
         })
     }
 

+ 20 - 21
src-tauri/src/enhance/mod.rs

@@ -138,26 +138,13 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
     let mut result_map = HashMap::new(); // 保存脚本日志
     let mut exists_keys = use_keys(&config); // 保存出现过的keys
 
-    // 处理用户的profile
-
-    if let ChainType::Rules(rules) = rules_item.data {
-        config = use_seq(rules, config.to_owned(), "rules");
-    }
-
-    if let ChainType::Proxies(proxies) = proxies_item.data {
-        config = use_seq(proxies, config.to_owned(), "proxies");
-    }
-
-    if let ChainType::Groups(groups) = groups_item.data {
-        config = use_seq(groups, config.to_owned(), "proxy-groups");
-    }
-
-    if let ChainType::Merge(merge) = merge_item.data {
+    // 全局Merge和Script
+    if let ChainType::Merge(merge) = global_merge.data {
         exists_keys.extend(use_keys(&merge));
         config = use_merge(merge, config.to_owned());
     }
 
-    if let ChainType::Script(script) = script_item.data {
+    if let ChainType::Script(script) = global_script.data {
         let mut logs = vec![];
 
         match use_script(script, config.to_owned()) {
@@ -169,16 +156,28 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
             Err(err) => logs.push(("exception".into(), err.to_string())),
         }
 
-        result_map.insert(script_item.uid, logs);
+        result_map.insert(global_script.uid, logs);
     }
 
-    // 全局Merge和Script
-    if let ChainType::Merge(merge) = global_merge.data {
+    // 订阅关联的Merge、Script、Rules、Proxies、Groups
+    if let ChainType::Rules(rules) = rules_item.data {
+        config = use_seq(rules, config.to_owned(), "rules");
+    }
+
+    if let ChainType::Proxies(proxies) = proxies_item.data {
+        config = use_seq(proxies, config.to_owned(), "proxies");
+    }
+
+    if let ChainType::Groups(groups) = groups_item.data {
+        config = use_seq(groups, config.to_owned(), "proxy-groups");
+    }
+
+    if let ChainType::Merge(merge) = merge_item.data {
         exists_keys.extend(use_keys(&merge));
         config = use_merge(merge, config.to_owned());
     }
 
-    if let ChainType::Script(script) = global_script.data {
+    if let ChainType::Script(script) = script_item.data {
         let mut logs = vec![];
 
         match use_script(script, config.to_owned()) {
@@ -190,7 +189,7 @@ pub async fn enhance() -> (Mapping, Vec<String>, HashMap<String, ResultLog>) {
             Err(err) => logs.push(("exception".into(), err.to_string())),
         }
 
-        result_map.insert(global_script.uid, logs);
+        result_map.insert(script_item.uid, logs);
     }
 
     // 合并默认的config

+ 7 - 0
src-tauri/src/utils/tmpl.rs

@@ -15,6 +15,13 @@ pub const ITEM_MERGE: &str = "# Profile Enhancement Merge Template for Clash Ver
 
 profile:
   store-selected: true
+
+dns:
+  use-system-hosts: false
+";
+
+pub const ITEM_MERGE_EMPTY: &str = "# Profile Enhancement Merge Template for Clash Verge
+
 ";
 
 /// enhanced profile