diff options
| author | Andrew Bulhak <andrew.bulhak@mullvad.net> | 2025-04-10 16:11:54 +0200 |
|---|---|---|
| committer | Jon Petersson <jon.petersson@mullvad.net> | 2025-04-16 13:33:30 +0200 |
| commit | d500f124035caf1c94489902cc6f81b86ea2155f (patch) | |
| tree | f82aca96da7e8268a4130f2cd098e2a9edc93270 | |
| parent | 59bb2484dcba3a49cf6a9bc47e7f6dcaea58dc8a (diff) | |
| download | mullvadvpn-d500f124035caf1c94489902cc6f81b86ea2155f.tar.xz mullvadvpn-d500f124035caf1c94489902cc6f81b86ea2155f.zip | |
Make DAITA/Quantum feature chips show actual tunnel state
3 files changed, 32 insertions, 6 deletions
diff --git a/ios/MullvadVPN/TunnelManager/TunnelState.swift b/ios/MullvadVPN/TunnelManager/TunnelState.swift index 41702065a1..dafa26d099 100644 --- a/ios/MullvadVPN/TunnelManager/TunnelState.swift +++ b/ios/MullvadVPN/TunnelManager/TunnelState.swift @@ -146,6 +146,31 @@ enum TunnelState: Equatable, CustomStringConvertible, Sendable { } } + // the two accessors below return a Bool?, to differentiate known + // truth values from undefined/meaningless values, which the caller + // may want to interpret differently + var isPostQuantum: Bool? { + switch self { + case let .connecting(_, isPostQuantum: isPostQuantum, isDaita: _), + let .connected(_, isPostQuantum: isPostQuantum, isDaita: _), + let .reconnecting(_, isPostQuantum: isPostQuantum, isDaita: _): + isPostQuantum + default: + nil + } + } + + var isDaita: Bool? { + switch self { + case let .connecting(_, isPostQuantum: _, isDaita: isDaita), + let .connected(_, isPostQuantum: _, isDaita: isDaita), + let .reconnecting(_, isPostQuantum: _, isDaita: isDaita): + isDaita + default: + nil + } + } + var isMultihop: Bool { relays?.entry != nil } diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift index 5130d51764..64d5d0b77f 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ChipView/ChipFeature.swift @@ -19,10 +19,10 @@ protocol ChipFeature { } struct DaitaFeature: ChipFeature { - let settings: LatestTunnelSettings + let state: TunnelState var isEnabled: Bool { - settings.daita.daitaState.isEnabled + state.isDaita ?? false } var name: String { @@ -36,9 +36,10 @@ struct DaitaFeature: ChipFeature { } struct QuantumResistanceFeature: ChipFeature { - let settings: LatestTunnelSettings + let state: TunnelState + var isEnabled: Bool { - settings.tunnelQuantumResistance.isEnabled + state.isPostQuantum ?? false } var name: String { diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift index de1a9edab7..efd49fb9a7 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/FeatureIndicatorsViewModel.swift @@ -34,8 +34,8 @@ class FeatureIndicatorsViewModel: ChipViewModelProtocol { case .connecting, .reconnecting, .negotiatingEphemeralPeer, .connected, .pendingReconnect: let features: [ChipFeature] = [ - DaitaFeature(settings: tunnelSettings), - QuantumResistanceFeature(settings: tunnelSettings), + DaitaFeature(state: tunnelState), + QuantumResistanceFeature(state: tunnelState), MultihopFeature(settings: tunnelSettings, state: tunnelState), ObfuscationFeature(settings: tunnelSettings, state: observedState), DNSFeature(settings: tunnelSettings), |
