diff options
| author | mojganii <mojgan.jelodar@codic.se> | 2025-01-27 16:53:48 +0100 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2025-01-28 12:50:16 +0100 |
| commit | 3aaafb009c87e18d3780797f146cfdcbf671bc9d (patch) | |
| tree | 0e74bf25197e0aaba76a7a46afdd7cef960d20c2 | |
| parent | b402c7914e9d783e5d34520b6e4eec03d910f124 (diff) | |
| download | mullvadvpn-3aaafb009c87e18d3780797f146cfdcbf671bc9d.tar.xz mullvadvpn-3aaafb009c87e18d3780797f146cfdcbf671bc9d.zip | |
Hide connection details view based on tunnel status
3 files changed, 10 insertions, 16 deletions
diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift index 93f571c2c2..42d3d2c96c 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift @@ -29,7 +29,7 @@ struct ConnectionView: View { indicatorsViewModel: indicatorsViewModel, isExpanded: $isExpanded ) - .showIf(connectionViewModel.showConnectionDetails) + .showIf(connectionViewModel.showsConnectionDetails) ButtonPanel(viewModel: connectionViewModel, action: action) .padding(.top, 16) @@ -38,21 +38,13 @@ struct ConnectionView: View { .background(BlurView(style: .dark)) .cornerRadius(12) .padding(EdgeInsets(top: 16, leading: 16, bottom: 24, trailing: 16)) - .onReceive(connectionViewModel.$tunnelStatus) { _ in - // Only update expanded state when connections details should be hidden. - // This will contract the view on eg. disconnect, but leave it as-is on - // eg. connect. - if !connectionViewModel.showConnectionDetails { - isExpanded = false - } - } } } extension ConnectionView { var headerViewBottomPadding: CGFloat { let hasIndicators = !indicatorsViewModel.chips.isEmpty - let showConnectionDetails = connectionViewModel.showConnectionDetails + let showConnectionDetails = connectionViewModel.showsConnectionDetails return isExpanded ? showConnectionDetails ? 16 : 0 diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift index 9077364664..85bff950d9 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift @@ -30,6 +30,7 @@ class ConnectionViewViewModel: ObservableObject { @Published private(set) var tunnelStatus: TunnelStatus @Published var outgoingConnectionInfo: OutgoingConnectionInfo? @Published var showsActivityIndicator = false + @Published var showsConnectionDetails = false @Published var relayConstraints: RelayConstraints let destinationDescriber: DestinationDescribing @@ -72,24 +73,25 @@ class ConnectionViewViewModel: ObservableObject { func update(tunnelStatus: TunnelStatus) { self.tunnelStatus = tunnelStatus + self.showsConnectionDetails = shouldShowConnectionDetails(tunnelStatus) if !tunnelIsConnected { outgoingConnectionInfo = nil } } -} -extension ConnectionViewViewModel { - var showConnectionDetails: Bool { + private func shouldShowConnectionDetails(_ tunnelStatus: TunnelStatus) -> Bool { switch tunnelStatus.state { - case .connecting, .reconnecting, .waitingForConnectivity(.noConnection), .negotiatingEphemeralPeer, + case .connecting, .reconnecting, .negotiatingEphemeralPeer, .connected, .pendingReconnect: true - case .disconnecting, .disconnected, .waitingForConnectivity(.noNetwork), .error: + case .disconnecting, .disconnected, .waitingForConnectivity, .error: false } } +} +extension ConnectionViewViewModel { var textColorForSecureLabel: UIColor { switch tunnelStatus.state { case .connecting, .reconnecting, .waitingForConnectivity(.noConnection), .negotiatingEphemeralPeer, diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift index 94cdf7aa62..1700f00d06 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift @@ -47,7 +47,7 @@ extension ConnectionView { .foregroundStyle(.white) .accessibilityIdentifier(AccessibilityIdentifier.relayStatusCollapseButton.asString) } - .showIf(viewModel.showConnectionDetails) + .showIf(viewModel.showsConnectionDetails) } .contentShape(Rectangle()) .onTapGesture { |
