mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added an option to specify the public IP address auto-refresh interval. Never will be a default option.
This commit is contained in:
@@ -113,6 +113,9 @@ public class Network: Module {
|
||||
private var widgetActivationThreshold: Int {
|
||||
Store.shared.int(key: "\(self.config.name)_widgetActivationThreshold", defaultValue: 0) * 1_024
|
||||
}
|
||||
private var publicIPRefreshInterval: String {
|
||||
Store.shared.string(key: "\(self.name)_publicIPRefreshInterval", defaultValue: "never")
|
||||
}
|
||||
|
||||
public init() {
|
||||
self.settingsView = Settings("Network")
|
||||
@@ -167,6 +170,9 @@ public class Network: Module {
|
||||
self.connectivityCallback(false)
|
||||
}
|
||||
}
|
||||
self.settingsView.publicIPRefreshIntervalCallback = { [unowned self] in
|
||||
self.setIPUpdater()
|
||||
}
|
||||
|
||||
if let reader = self.usageReader {
|
||||
self.addReader(reader)
|
||||
@@ -230,13 +236,23 @@ public class Network: Module {
|
||||
}
|
||||
|
||||
private func setIPUpdater() {
|
||||
self.ipUpdater.interval = 60 * 60
|
||||
self.ipUpdater.invalidate()
|
||||
|
||||
switch self.publicIPRefreshInterval {
|
||||
case "hour":
|
||||
self.ipUpdater.interval = 60 * 60
|
||||
case "12":
|
||||
self.ipUpdater.interval = 60 * 60 * 12
|
||||
case "24":
|
||||
self.ipUpdater.interval = 60 * 60 * 24
|
||||
default: return
|
||||
}
|
||||
|
||||
self.ipUpdater.repeats = true
|
||||
self.ipUpdater.schedule { (completion: @escaping NSBackgroundActivityScheduler.CompletionHandler) in
|
||||
guard self.enabled && self.isAvailable() else {
|
||||
return
|
||||
}
|
||||
|
||||
debug("going to automatically refresh IP address...")
|
||||
NotificationCenter.default.post(name: .refreshPublicIP, object: nil, userInfo: nil)
|
||||
completion(NSBackgroundActivityScheduler.Result.finished)
|
||||
|
||||
Reference in New Issue
Block a user