diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift index 44c9c7d35707..00be5f526a39 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift @@ -38,6 +38,11 @@ struct ConnectionView: View { .background(BlurView(style: .dark)) .cornerRadius(12) .padding(EdgeInsets(top: 16, leading: 16, bottom: 24, trailing: 16)) + .onReceive(connectionViewModel.combinedState) { _ in + if !connectionViewModel.showsConnectionDetails { + isExpanded = false + } + } } } diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift index 4db9a75b9954..1540b79b321d 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift @@ -30,7 +30,6 @@ 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 @@ -73,14 +72,15 @@ class ConnectionViewViewModel: ObservableObject { func update(tunnelStatus: TunnelStatus) { self.tunnelStatus = tunnelStatus - self.showsConnectionDetails = shouldShowConnectionDetails(tunnelStatus) if !tunnelIsConnected { outgoingConnectionInfo = nil } } +} - private func shouldShowConnectionDetails(_ tunnelStatus: TunnelStatus) -> Bool { +extension ConnectionViewViewModel { + var showsConnectionDetails: Bool { switch tunnelStatus.state { case .connecting, .reconnecting, .negotiatingEphemeralPeer, .connected, .pendingReconnect: @@ -89,9 +89,7 @@ class ConnectionViewViewModel: ObservableObject { false } } -} -extension ConnectionViewViewModel { var textColorForSecureLabel: UIColor { switch tunnelStatus.state { case .connecting, .reconnecting, .waitingForConnectivity(.noConnection), .negotiatingEphemeralPeer,