Skip to content

Commit ce19c52

Browse files
committed
Optimize: Only add auto group when has more than one proxies .
1 parent c68017d commit ce19c52

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

ClashX/General/ConfigFileFactory.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ class ConfigFileFactory {
2222

2323
sampleConfigStr = sampleConfigStr?.replacingOccurrences(of: "{{ProxyPlaceHolder}}", with: proxyStr)
2424
sampleConfigStr = sampleConfigStr?.replacingOccurrences(of: "{{ProxyGroupPlaceHolder}}", with: proxyGroupStr)
25+
26+
if proxies.count > 1 {
27+
let autoGroupStr = "ProxyAuto = url-test, \(proxyGroupStr), http://www.google.com/generate_204, 300"
28+
sampleConfigStr = sampleConfigStr?.replacingOccurrences(of: "{{ProxyAutoGroupPlaceHolder}}", with: autoGroupStr)
29+
}
2530

2631
return sampleConfigStr!
2732
}

ClashX/Support Files/sampleConfig.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Proxy = select, {{ProxyGroupPlaceHolder}}
1313
# url-test select which proxy will be used by benchmarking speed to a URL.
1414
# name = url-test, [proxys], url, interval(second)
1515

16-
ProxyAuto = url-test, {{ProxyGroupPlaceHolder}}, http://www.google.com/generate_204, 300
16+
{{ProxyAutoGroupPlaceHolder}}
1717

1818

1919
[Rule]

ClashX/ViewControllers/PreferencesWindowController.swift

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,26 @@ class PreferencesWindowController: NSWindowController
132132
shakeWindows()
133133
return
134134
}
135+
var vaild = true
136+
var remarkSet = Set<String>()
137+
remarkSet.insert("Proxy")
138+
remarkSet.insert("ProxyAuto")
139+
for config in serverConfigs {
140+
if remarkSet.contains(config.remark) || !config.isValid() {
141+
vaild = false
142+
break
143+
} else {
144+
remarkSet.insert(config.remark)
145+
}
146+
}
147+
148+
if (!vaild) {
149+
self.shakeWindows()
150+
return
151+
}
152+
135153
let str = ConfigFileFactory.configFile(proxies: serverConfigs)
136-
ConfigFileFactory.saveToClashConfigFile(str)
154+
ConfigFileFactory.saveToClashConfigFile(str: str)
137155
window?.performClose(nil)
138156

139157
}

0 commit comments

Comments
 (0)