feat: only health check auto group used provider after network work changed

This commit is contained in:
yicheng 2021-09-11 19:42:38 +08:00
parent b89bfdaf64
commit 51ee11c149
No known key found for this signature in database
GPG Key ID: 7CF411A6623B1C0A
1 changed files with 23 additions and 14 deletions

View File

@ -335,7 +335,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
.filter { $0 != nil }
.observe(on: MainScheduler.instance)
.debounce(.seconds(5), scheduler: MainScheduler.instance).bind { [weak self] _ in
self?.healthHeckOnNetworkChange()
self?.healthCheckOnNetworkChange()
}.disposed(by: disposeBag)
ConfigManager.shared
@ -517,21 +517,30 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
}
@objc func healthHeckOnNetworkChange() {
ApiRequest.requestProxyGroupList {
res in
for group in res.proxyGroups {
if group.type.isAutoGroup {
Logger.log("Start Auto Health check for \(group.name)")
ApiRequest.healthCheck(proxy: group.name)
@objc func healthCheckOnNetworkChange() {
ApiRequest.getMergedProxyData {
proxyResp in
guard let proxyResp = proxyResp else {return}
var providers = Set<ClashProxyName>()
let groups = proxyResp.proxyGroups.filter({$0.type.isAutoGroup})
for group in groups {
group.all?.compactMap{
proxyResp.proxiesMap[$0]?.enclosingProvider?.name
}.forEach{
providers.insert($0)
}
}
}
ApiRequest.requestProxyProviderList() {
providers in
providers.providers.forEach {
ApiRequest.healthCheck(proxy: $0.key)
for group in groups {
Logger.log("Start auto health check for group \(group.name)")
ApiRequest.healthCheck(proxy: group.name)
}
for provider in providers {
Logger.log("Start auto health check for provider \(provider)")
ApiRequest.healthCheck(proxy: provider)
}
}
}