mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added an option to disable the public ip check at all (#2406)
This commit is contained in:
@@ -140,6 +140,9 @@ internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
|
|||||||
private var VPNMode: Bool {
|
private var VPNMode: Bool {
|
||||||
get { Store.shared.bool(key: "Network_VPNMode", defaultValue: false) }
|
get { Store.shared.bool(key: "Network_VPNMode", defaultValue: false) }
|
||||||
}
|
}
|
||||||
|
private var publicIPState: Bool {
|
||||||
|
get { Store.shared.bool(key: "Network_publicIP", defaultValue: true) }
|
||||||
|
}
|
||||||
|
|
||||||
private let wifiClient = CWWiFiClient.shared()
|
private let wifiClient = CWWiFiClient.shared()
|
||||||
|
|
||||||
@@ -413,6 +416,8 @@ internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func getPublicIP() {
|
private func getPublicIP() {
|
||||||
|
guard self.publicIPState else { return }
|
||||||
|
|
||||||
struct Addr_s: Decodable {
|
struct Addr_s: Decodable {
|
||||||
let ipv4: String?
|
let ipv4: String?
|
||||||
let ipv6: String?
|
let ipv6: String?
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
|||||||
private var widgetActivationThreshold: Int = 0
|
private var widgetActivationThreshold: Int = 0
|
||||||
private var widgetActivationThresholdSize: SizeUnit = .MB
|
private var widgetActivationThresholdSize: SizeUnit = .MB
|
||||||
private var ICMPHost: String = "1.1.1.1"
|
private var ICMPHost: String = "1.1.1.1"
|
||||||
|
private var publicIPState: Bool = true
|
||||||
private var publicIPRefreshInterval: String = "never"
|
private var publicIPRefreshInterval: String = "never"
|
||||||
private var baseValue: String = "byte"
|
private var baseValue: String = "byte"
|
||||||
private var textValue: String = "$addr.public - $status"
|
private var textValue: String = "$addr.public - $status"
|
||||||
@@ -95,6 +96,7 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
|||||||
self.widgetActivationThreshold = Store.shared.int(key: "\(self.title)_widgetActivationThreshold", defaultValue: self.widgetActivationThreshold)
|
self.widgetActivationThreshold = Store.shared.int(key: "\(self.title)_widgetActivationThreshold", defaultValue: self.widgetActivationThreshold)
|
||||||
self.widgetActivationThresholdSize = SizeUnit.fromString(Store.shared.string(key: "\(self.title)_widgetActivationThresholdSize", defaultValue: self.widgetActivationThresholdSize.key))
|
self.widgetActivationThresholdSize = SizeUnit.fromString(Store.shared.string(key: "\(self.title)_widgetActivationThresholdSize", defaultValue: self.widgetActivationThresholdSize.key))
|
||||||
self.ICMPHost = Store.shared.string(key: "\(self.title)_ICMPHost", defaultValue: self.ICMPHost)
|
self.ICMPHost = Store.shared.string(key: "\(self.title)_ICMPHost", defaultValue: self.ICMPHost)
|
||||||
|
self.publicIPState = Store.shared.bool(key: "\(self.title)_publicIP", defaultValue: self.publicIPState)
|
||||||
self.publicIPRefreshInterval = Store.shared.string(key: "\(self.title)_publicIPRefreshInterval", defaultValue: self.publicIPRefreshInterval)
|
self.publicIPRefreshInterval = Store.shared.string(key: "\(self.title)_publicIPRefreshInterval", defaultValue: self.publicIPRefreshInterval)
|
||||||
self.baseValue = Store.shared.string(key: "\(self.title)_base", defaultValue: self.baseValue)
|
self.baseValue = Store.shared.string(key: "\(self.title)_base", defaultValue: self.baseValue)
|
||||||
self.textValue = Store.shared.string(key: "\(self.title)_textWidgetValue", defaultValue: self.textValue)
|
self.textValue = Store.shared.string(key: "\(self.title)_textWidgetValue", defaultValue: self.textValue)
|
||||||
@@ -169,6 +171,10 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
|||||||
items: AppUpdateIntervals.filter({ $0.key != "Silent" }),
|
items: AppUpdateIntervals.filter({ $0.key != "Silent" }),
|
||||||
selected: self.usageReset
|
selected: self.usageReset
|
||||||
)),
|
)),
|
||||||
|
PreferencesRow(localizedString("Public IP"), component: switchView(
|
||||||
|
action: #selector(self.togglePublicIPState),
|
||||||
|
state: self.publicIPState
|
||||||
|
)),
|
||||||
PreferencesRow(localizedString("Auto-refresh public IP address"), component: selectView(
|
PreferencesRow(localizedString("Auto-refresh public IP address"), component: selectView(
|
||||||
action: #selector(self.toggleRefreshIPInterval),
|
action: #selector(self.toggleRefreshIPInterval),
|
||||||
items: PublicIPAddressRefreshIntervals,
|
items: PublicIPAddressRefreshIntervals,
|
||||||
@@ -183,6 +189,7 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
|||||||
}
|
}
|
||||||
let section = PreferencesSection(prefs)
|
let section = PreferencesSection(prefs)
|
||||||
section.setRowVisibility(1, newState: self.readerType == "interface")
|
section.setRowVisibility(1, newState: self.readerType == "interface")
|
||||||
|
section.setRowVisibility(5, newState: self.publicIPState)
|
||||||
self.addArrangedSubview(section)
|
self.addArrangedSubview(section)
|
||||||
self.section = section
|
self.section = section
|
||||||
|
|
||||||
@@ -311,6 +318,11 @@ internal class Settings: NSStackView, Settings_v, NSTextFieldDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func togglePublicIPState(_ sender: NSControl) {
|
||||||
|
self.publicIPState = controlState(sender)
|
||||||
|
Store.shared.set(key: "\(self.title)_publicIP", value: self.publicIPState)
|
||||||
|
self.section?.setRowVisibility(5, newState: self.publicIPState)
|
||||||
|
}
|
||||||
@objc private func toggleRefreshIPInterval(_ sender: NSMenuItem) {
|
@objc private func toggleRefreshIPInterval(_ sender: NSMenuItem) {
|
||||||
guard let key = sender.representedObject as? String else { return }
|
guard let key = sender.representedObject as? String else { return }
|
||||||
self.publicIPRefreshInterval = key
|
self.publicIPRefreshInterval = key
|
||||||
|
|||||||
Reference in New Issue
Block a user