summaryrefslogtreecommitdiffhomepage
path: root/ios
diff options
context:
space:
mode:
authormojganii <mojgan.jelodar@codic.se>2025-01-27 16:53:48 +0100
committerEmīls <emils@mullvad.net>2025-01-28 12:50:16 +0100
commit3aaafb009c87e18d3780797f146cfdcbf671bc9d (patch)
tree0e74bf25197e0aaba76a7a46afdd7cef960d20c2 /ios
parentb402c7914e9d783e5d34520b6e4eec03d910f124 (diff)
downloadmullvadvpn-3aaafb009c87e18d3780797f146cfdcbf671bc9d.tar.xz
mullvadvpn-3aaafb009c87e18d3780797f146cfdcbf671bc9d.zip
Hide connection details view based on tunnel status
Diffstat (limited to 'ios')
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift12
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionViewViewModel.swift12
-rw-r--r--ios/MullvadVPN/View controllers/Tunnel/ConnectionView/HeaderView.swift2
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 {