From 53201c644703649541fd62b1eed34f3d663ba666 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:53:28 -0300 Subject: [PATCH 01/14] Update NetworkManager.swift --- HeliPort/NetworkManager.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/HeliPort/NetworkManager.swift b/HeliPort/NetworkManager.swift index ba9314e..2a866f2 100644 --- a/HeliPort/NetworkManager.swift +++ b/HeliPort/NetworkManager.swift @@ -59,7 +59,6 @@ final class NetworkManager { if let savedNetworkAuth = CredentialsManager.instance.get(networkInfo) { networkInfo.auth = savedNetworkAuth Log.debug("Connecting to network \(networkInfo.ssid) with saved password") - CredentialsManager.instance.setAutoJoin(networkInfo.ssid, true) getAuthInfoCallback(networkInfo.auth, false) return } From ef86893bb3056d07e93d609aaf8e65523f9d0885 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Wed, 3 Jul 2024 15:59:04 -0300 Subject: [PATCH 02/14] Update StatusMenu.swift --- HeliPort/Appearance/StatusMenu.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index d3ca1c0..988046c 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -609,7 +609,6 @@ final class StatusMenu: NSMenu, NSMenuDelegate { options: .regularExpression, range: nil) DispatchQueue.global().async { - CredentialsManager.instance.setAutoJoin(ssid, false) dis_associate_ssid(ssid) Log.debug("Disconnected from \(ssid)") } From aad4a901df0b4b8cb55efea61234c9466b30e340 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Wed, 3 Jul 2024 23:53:23 -0300 Subject: [PATCH 03/14] Ensure the functionality of AutoJoin --- HeliPort/Appearance/StatusMenu.swift | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 93db25d..6e211ca 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -15,13 +15,17 @@ import Foundation import Cocoa -import Sparkle +import Sparkle.SPUStandardUpdaterController final class StatusMenu: NSMenu, NSMenuDelegate { // - MARK: Properties - private let heliPortUpdater = SUUpdater() + private let heliPortUpdater = SPUStandardUpdaterController( + startingUpdater: true, + updaterDelegate: nil, + userDriverDelegate: nil + ) private let networkListUpdatePeriod: Double = 5 private let statusUpdatePeriod: Double = 2 @@ -30,7 +34,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { private var networkListUpdateTimer: Timer? private var statusUpdateTimer: Timer? - // One instance at a time + // Lazy initialization of preferenceWindow as a non-optional private lazy var preferenceWindow = PrefsWindow() private var status: itl_80211_state = ITL80211_S_INIT { @@ -435,7 +439,11 @@ final class StatusMenu: NSMenu, NSMenuDelegate { } case .turnWiFiOn: power_on() + // try to connect saved networks + NetworkManager.scanSavedNetworks() case .turnWiFiOff: + // Disconnect from the network first to ensure the functionality of AutoJoin + disassociateSSID(disconnectItem) power_off() case .joinNetworks: let joinPop = WiFiConfigWindow() From 8c981b3cdfdf7b8736ea192a9a067421e01bb837 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 00:24:16 -0300 Subject: [PATCH 04/14] Fixed my oversight. --- HeliPort/Appearance/StatusMenu.swift | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 6e211ca..53b8627 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -15,17 +15,13 @@ import Foundation import Cocoa -import Sparkle.SPUStandardUpdaterController +import Sparkle final class StatusMenu: NSMenu, NSMenuDelegate { // - MARK: Properties - private let heliPortUpdater = SPUStandardUpdaterController( - startingUpdater: true, - updaterDelegate: nil, - userDriverDelegate: nil - ) + private let heliPortUpdater = SUUpdater() private let networkListUpdatePeriod: Double = 5 private let statusUpdatePeriod: Double = 2 @@ -34,7 +30,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { private var networkListUpdateTimer: Timer? private var statusUpdateTimer: Timer? - // Lazy initialization of preferenceWindow as a non-optional + // One instance at a time private lazy var preferenceWindow = PrefsWindow() private var status: itl_80211_state = ITL80211_S_INIT { @@ -616,6 +612,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { options: .regularExpression, range: nil) DispatchQueue.global().async { + CredentialsManager.instance.setAutoJoin(ssid, false) dis_associate_ssid(ssid) Log.debug("Disconnected from \(ssid)") } From ec2069ed1ed5a49276427cf2ccbc8bb8ba41816b Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 00:26:16 -0300 Subject: [PATCH 05/14] Fixed my oversight. Again. --- HeliPort/Appearance/StatusMenu.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 53b8627..48b91eb 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -612,7 +612,6 @@ final class StatusMenu: NSMenu, NSMenuDelegate { options: .regularExpression, range: nil) DispatchQueue.global().async { - CredentialsManager.instance.setAutoJoin(ssid, false) dis_associate_ssid(ssid) Log.debug("Disconnected from \(ssid)") } From 821695e04a645163a824a2dc52977857e610c8f9 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 11:17:56 -0300 Subject: [PATCH 06/14] Small changes --- HeliPort/Appearance/StatusMenu.swift | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 48b91eb..34c8f6b 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -438,8 +438,11 @@ final class StatusMenu: NSMenu, NSMenuDelegate { // try to connect saved networks NetworkManager.scanSavedNetworks() case .turnWiFiOff: - // Disconnect from the network first to ensure the functionality of AutoJoin - disassociateSSID(disconnectItem) + // If connected, disconnect from the network first to ensure + // the functionality of AutoJoin + if self.status == ITL80211_S_RUN { + disassociateSSID(disconnectItem) + } power_off() case .joinNetworks: let joinPop = WiFiConfigWindow() From 9b2a7124f5e1f684b39b25701e82c83209647c79 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 11:28:29 -0300 Subject: [PATCH 07/14] Fix comment --- HeliPort/Appearance/StatusMenu.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 34c8f6b..b2f69a1 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -438,7 +438,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { // try to connect saved networks NetworkManager.scanSavedNetworks() case .turnWiFiOff: - // If connected, disconnect from the network first to ensure + // If connected, disconnect from the network before call `power_off()` to ensure // the functionality of AutoJoin if self.status == ITL80211_S_RUN { disassociateSSID(disconnectItem) From b855c86ce00a084a8583bf211d267964a6284b48 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:01:45 -0300 Subject: [PATCH 08/14] Auto Join should work perfectly now. --- HeliPort/Appearance/StatusMenu.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index b2f69a1..2f67159 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -33,6 +33,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { // One instance at a time private lazy var preferenceWindow = PrefsWindow() + private var previousStatus: itl_80211_state = ITL80211_S_INIT private var status: itl_80211_state = ITL80211_S_INIT { didSet { /* Only allow if network card is enabled or if the network card does not load @@ -43,6 +44,12 @@ final class StatusMenu: NSMenu, NSMenuDelegate { statusItem.title = NSLocalizedString(status.description) + // if state changes when connected it will + // disconnect to ensure the functionality of Auto Join + if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN { + disassociateSSID(disconnectItem) + } + switch status { case ITL80211_S_INIT: StatusBarIcon.disconnected() @@ -68,6 +75,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { default: StatusBarIcon.error() } + previousStatus = status } } From 53fb4f337ceedd59c6f179f45130a254a3911946 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:14:53 -0300 Subject: [PATCH 09/14] Update StatusMenu.swift --- HeliPort/Appearance/StatusMenu.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 2f67159..584532c 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -45,7 +45,8 @@ final class StatusMenu: NSMenu, NSMenuDelegate { statusItem.title = NSLocalizedString(status.description) // if state changes when connected it will - // disconnect to ensure the functionality of Auto Join + // disconnect to ensure the functionality + // of Auto Join(i.e. prevents it from reconnecting to a network with Auto Join disabled) if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN { disassociateSSID(disconnectItem) } @@ -446,8 +447,9 @@ final class StatusMenu: NSMenu, NSMenuDelegate { // try to connect saved networks NetworkManager.scanSavedNetworks() case .turnWiFiOff: - // If connected, disconnect from the network before call `power_off()` to ensure - // the functionality of AutoJoin + // If connected, disconnect from the + //network before call `power_off()` to ensure + // the functionality of AutoJoin(i.e. prevents it from reconnecting to a network with Auto Join disabled) if self.status == ITL80211_S_RUN { disassociateSSID(disconnectItem) } From 48ce0ec0849a4bbac6d27238890675e25ca8c48c Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:16:39 -0300 Subject: [PATCH 10/14] Update StatusMenu.swift --- HeliPort/Appearance/StatusMenu.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index 584532c..cd38402 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -448,7 +448,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { NetworkManager.scanSavedNetworks() case .turnWiFiOff: // If connected, disconnect from the - //network before call `power_off()` to ensure + // network before call `power_off()` to ensure // the functionality of AutoJoin(i.e. prevents it from reconnecting to a network with Auto Join disabled) if self.status == ITL80211_S_RUN { disassociateSSID(disconnectItem) From 4b9b68ec8d71550d50c42b076479c1e66e461f8c Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 14:27:21 -0300 Subject: [PATCH 11/14] Removed changes that are no longer necessary. --- HeliPort/Appearance/StatusMenu.swift | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index cd38402..a491757 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -44,11 +44,13 @@ final class StatusMenu: NSMenu, NSMenuDelegate { statusItem.title = NSLocalizedString(status.description) - // if state changes when connected it will - // disconnect to ensure the functionality - // of Auto Join(i.e. prevents it from reconnecting to a network with Auto Join disabled) + // if status changes while connected, it will + // disconnect to ensure Auto Join functionality + // (i.e., preventing it from reconnecting to a network with Auto Join disabled) if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN { + Log.debug("Status changed while connected to a network") disassociateSSID(disconnectItem) + NetworkManager.scanSavedNetworks() } switch status { @@ -444,15 +446,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { } case .turnWiFiOn: power_on() - // try to connect saved networks - NetworkManager.scanSavedNetworks() case .turnWiFiOff: - // If connected, disconnect from the - // network before call `power_off()` to ensure - // the functionality of AutoJoin(i.e. prevents it from reconnecting to a network with Auto Join disabled) - if self.status == ITL80211_S_RUN { - disassociateSSID(disconnectItem) - } power_off() case .joinNetworks: let joinPop = WiFiConfigWindow() From cb41bb4cf8e60b0798e474e1a8617dc149dddb4a Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:49:24 -0300 Subject: [PATCH 12/14] Fixed a small bug --- HeliPort/Appearance/StatusMenu.swift | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index a491757..a72336c 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -30,6 +30,8 @@ final class StatusMenu: NSMenu, NSMenuDelegate { private var networkListUpdateTimer: Timer? private var statusUpdateTimer: Timer? + private var isTemporaryDisableNeeded: Bool = false + // One instance at a time private lazy var preferenceWindow = PrefsWindow() @@ -47,7 +49,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { // if status changes while connected, it will // disconnect to ensure Auto Join functionality // (i.e., preventing it from reconnecting to a network with Auto Join disabled) - if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN { + if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN && !isTemporaryDisableNeeded { Log.debug("Status changed while connected to a network") disassociateSSID(disconnectItem) NetworkManager.scanSavedNetworks() @@ -618,6 +620,15 @@ final class StatusMenu: NSMenu, NSMenuDelegate { let ssid = String(sender.title).replacingOccurrences(of: String.disconnectNet, with: "", options: .regularExpression, range: nil) + + Log.debug("Temporary disabling line 52 for 3 seconds") + isTemporaryDisableNeeded = true + + DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { + self.isTemporaryDisableNeeded = false + Log.debug("Line 52 re-enabled after 3 seconds") + } + DispatchQueue.global().async { dis_associate_ssid(ssid) Log.debug("Disconnected from \(ssid)") From c3666768e0367a8e5471f5ce2d32b2663815e73a Mon Sep 17 00:00:00 2001 From: Ivory <137858242+IVORRY@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:02:26 -0300 Subject: [PATCH 13/14] Update StatusMenu.swift --- HeliPort/Appearance/StatusMenu.swift | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index a72336c..f630503 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -30,7 +30,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { private var networkListUpdateTimer: Timer? private var statusUpdateTimer: Timer? - private var isTemporaryDisableNeeded: Bool = false + private var isDisconnecting: Bool = false // One instance at a time private lazy var preferenceWindow = PrefsWindow() @@ -46,11 +46,7 @@ final class StatusMenu: NSMenu, NSMenuDelegate { statusItem.title = NSLocalizedString(status.description) - // if status changes while connected, it will - // disconnect to ensure Auto Join functionality - // (i.e., preventing it from reconnecting to a network with Auto Join disabled) - if previousStatus == ITL80211_S_RUN && status != ITL80211_S_RUN && !isTemporaryDisableNeeded { - Log.debug("Status changed while connected to a network") + if status != ITL80211_S_RUN && previousStatus == ITL80211_S_RUN && !isDisconnecting { disassociateSSID(disconnectItem) NetworkManager.scanSavedNetworks() } @@ -620,18 +616,13 @@ final class StatusMenu: NSMenu, NSMenuDelegate { let ssid = String(sender.title).replacingOccurrences(of: String.disconnectNet, with: "", options: .regularExpression, range: nil) - - Log.debug("Temporary disabling line 52 for 3 seconds") - isTemporaryDisableNeeded = true - - DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { - self.isTemporaryDisableNeeded = false - Log.debug("Line 52 re-enabled after 3 seconds") - } - + isDisconnecting = true DispatchQueue.global().async { dis_associate_ssid(ssid) - Log.debug("Disconnected from \(ssid)") + DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { + self.isDisconnecting = false + Log.debug("Disconnected from \(ssid)") + } } } From ba47c0e3631221f67fda6fa8cf90278df2647e70 Mon Sep 17 00:00:00 2001 From: Ivory <137858242+Zyvoxi@users.noreply.github.com> Date: Tue, 9 Jul 2024 19:45:01 -0300 Subject: [PATCH 14/14] Update StatusMenu.swift --- HeliPort/Appearance/StatusMenu.swift | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/HeliPort/Appearance/StatusMenu.swift b/HeliPort/Appearance/StatusMenu.swift index f630503..71c1369 100644 --- a/HeliPort/Appearance/StatusMenu.swift +++ b/HeliPort/Appearance/StatusMenu.swift @@ -30,12 +30,9 @@ final class StatusMenu: NSMenu, NSMenuDelegate { private var networkListUpdateTimer: Timer? private var statusUpdateTimer: Timer? - private var isDisconnecting: Bool = false - // One instance at a time private lazy var preferenceWindow = PrefsWindow() - private var previousStatus: itl_80211_state = ITL80211_S_INIT private var status: itl_80211_state = ITL80211_S_INIT { didSet { /* Only allow if network card is enabled or if the network card does not load @@ -46,11 +43,6 @@ final class StatusMenu: NSMenu, NSMenuDelegate { statusItem.title = NSLocalizedString(status.description) - if status != ITL80211_S_RUN && previousStatus == ITL80211_S_RUN && !isDisconnecting { - disassociateSSID(disconnectItem) - NetworkManager.scanSavedNetworks() - } - switch status { case ITL80211_S_INIT: StatusBarIcon.disconnected() @@ -76,7 +68,6 @@ final class StatusMenu: NSMenu, NSMenuDelegate { default: StatusBarIcon.error() } - previousStatus = status } } @@ -444,7 +435,11 @@ final class StatusMenu: NSMenu, NSMenuDelegate { } case .turnWiFiOn: power_on() + NetworkManager.scanSavedNetworks() case .turnWiFiOff: + if status == ITL80211_S_RUN { + disassociateSSID(disconnectItem) + } power_off() case .joinNetworks: let joinPop = WiFiConfigWindow() @@ -616,13 +611,9 @@ final class StatusMenu: NSMenu, NSMenuDelegate { let ssid = String(sender.title).replacingOccurrences(of: String.disconnectNet, with: "", options: .regularExpression, range: nil) - isDisconnecting = true DispatchQueue.global().async { dis_associate_ssid(ssid) - DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { - self.isDisconnecting = false - Log.debug("Disconnected from \(ssid)") - } + Log.debug("Disconnected from \(ssid)") } }