Do not show "Activating" when the tunnel is actually idle (#1105)

E.g. in airplane mode, the status shows as "Activating", but the tunnel
is not actively establishing any connection. It's just idle.

Reported here:
https://www.reddit.com/r/passepartout/comments/1i957zj/when_phone_going_into_airplane_mode_passepartout/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
This commit is contained in:
Davide 2025-01-27 12:31:50 +01:00 committed by GitHub
parent 9145e81092
commit c6b1c03fcb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 7 deletions

View File

@ -219,10 +219,15 @@ extension TunnelStatus {
func withEnvironment(_ environment: TunnelEnvironment) -> TunnelStatus {
var status = self
if status == .active, let connectionStatus = environment.environmentValue(forKey: TunnelEnvironmentKeys.connectionStatus) {
if connectionStatus == .connected {
status = .active
} else {
switch connectionStatus {
case .connecting:
status = .activating
case .connected:
status = .active
case .disconnecting:
status = .deactivating
case .disconnected:
status = .inactive
}
}
return status

View File

@ -151,12 +151,19 @@ extension ExtendedTunnelTests {
env.setEnvironmentValue(ConnectionStatus.connected, forKey: key)
XCTAssertEqual(tunnelActive.withEnvironment(env), .active)
allConnectionStatuses
.filter {
$0 != .connected
}
.forEach {
env.setEnvironmentValue($0, forKey: key)
XCTAssertEqual(tunnelActive.withEnvironment(env), .activating)
let statusWithEnv = tunnelActive.withEnvironment(env)
switch $0 {
case .connecting:
XCTAssertEqual(statusWithEnv, .activating)
case .connected:
XCTAssertEqual(statusWithEnv, .active)
case .disconnecting:
XCTAssertEqual(statusWithEnv, .deactivating)
case .disconnected:
XCTAssertEqual(statusWithEnv, .inactive)
}
}
// unaffected otherwise