feat: added additional wifi events listener that will read the connection details if something was changed (#2292)

This commit is contained in:
Serhiy Mytrovtsiy
2025-01-01 15:20:24 +01:00
parent 9aaffea7af
commit c51303c2f2

View File

@@ -103,7 +103,7 @@ extension CWChannel {
}
}
internal class UsageReader: Reader<Network_Usage> {
internal class UsageReader: Reader<Network_Usage>, CWEventDelegate {
private var reachability: Reachability = Reachability(start: true)
private let variablesQueue = DispatchQueue(label: "eu.exelban.NetworkUsageReader")
private var _usage: Network_Usage = Network_Usage()
@@ -141,6 +141,8 @@ internal class UsageReader: Reader<Network_Usage> {
get { Store.shared.bool(key: "Network_VPNMode", defaultValue: false) }
}
private let wifiClient = CWWiFiClient.shared()
public override func setup() {
self.reachability.reachable = {
if self.active {
@@ -171,10 +173,14 @@ internal class UsageReader: Reader<Network_Usage> {
self.usage = usage
self.usage.bandwidth = Bandwidth()
}
self.wifiClient.delegate = self
self.startListeningForWifiEvents()
}
public override func terminate() {
self.reachability.stop()
self.stopListeningForWifiEvents()
}
public override func read() {
@@ -461,6 +467,26 @@ internal class UsageReader: Reader<Network_Usage> {
self.usage.total = Bandwidth()
self.save(self.usage)
}
private func startListeningForWifiEvents() {
do {
try self.wifiClient.startMonitoringEvent(with: .ssidDidChange)
} catch let err as NSError {
error("failed to start monitoring Wi-Fi events: \(err.localizedDescription)")
}
}
private func stopListeningForWifiEvents() {
do {
try self.wifiClient.stopMonitoringEvent(with: .ssidDidChange)
} catch let err as NSError {
error("failed to stop monitoring Wi-Fi events: \(err.localizedDescription)")
}
}
func ssidDidChangeForWiFiInterface(withName interfaceName: String) {
self.getWiFiDetails()
}
}
public class ProcessReader: Reader<[Network_Process]> {