Feature: remember select proxy group last time

This commit is contained in:
yicheng 2018-08-06 23:06:50 +08:00
parent 2f5421ddb3
commit 86e3534870
4 changed files with 29 additions and 14 deletions

View File

@ -102,6 +102,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
}
self.updateProxyList()
if (ConfigManager.shared.proxyPortAutoSet) {
_ = ProxyConfigManager.setUpSystemProxy(port: config!.port,socksPort: config!.socketPort)
}
}.disposed(by: disposeBag)
LaunchAtLogin.shared
@ -136,6 +140,16 @@ class AppDelegate: NSObject, NSApplicationDelegate {
});
}
func selectProxyGroupWithMemory(){
for item in ConfigManager.selectedProxyMap {
ApiRequest.updateProxyGroup(group: item.key, selectProxy: item.value) { (success) in
if (!success) {
ConfigManager.selectedProxyMap[item.key] = nil
}
}
}
}
func updateProxyList() {
ProxyMenuItemFactory.menuItems { [unowned self] (menus) in
let startIndex = self.statusMenu.items.index(of: self.separatorLineTop)! + 1
@ -159,6 +173,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
run()
}
syncConfig(){
self.selectProxyGroupWithMemory()
DispatchQueue.main.asyncAfter(deadline:DispatchTime.now() + 1, execute: {
self.resetTrafficMonitor()
})
@ -169,12 +184,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
ApiRequest.requestConfig{ (config) in
guard config.port > 0 else {return}
ConfigManager.shared.currentConfig = config
if ConfigManager.shared.proxyPortAutoSet {
_ = ProxyConfigManager.setUpSystemProxy(port: config.port,socksPort: config.socketPort)
self.updateProxyList()
completeHandler?()
}
completeHandler?()
}
}

View File

@ -75,12 +75,7 @@ class ApiRequest{
static func updateProxyGroup(group:String,selectProxy:String,callback:@escaping ((Bool)->())) {
request(ConfigManager.apiUrl + "/proxies/\(group)", method: .put, parameters: ["name":selectProxy], encoding: JSONEncoding.default).responseJSON { (response) in
switch response.result {
case .success(_):
callback(true)
case .failure(_):
callback(false)
}
callback(response.response?.statusCode == 200)
}
}
}

View File

@ -76,10 +76,10 @@ class ProxyMenuItemFactory {
items.state = .off
}
sender.state = .on
// remember select proxy
ConfigManager.selectedProxyMap[proxyGroup] = proxyName
}
}
}

View File

@ -51,4 +51,14 @@ class ConfigManager {
}
}
static var selectedProxyMap:[String:String] {
get{
return ["Proxy":"ProxyAuto"]
return UserDefaults.standard.dictionary(forKey: "selectedProxyMap") as? [String:String] ?? ["Proxy":"ProxyAuto"]
}
set {
UserDefaults.standard.set(newValue, forKey: "selectedProxyMap")
}
}
}