From ad4116864f457fedfda814cab6bf6780a2027ff7 Mon Sep 17 00:00:00 2001 From: Jon Petersson <jon.petersson@mullvad.net> Date: Fri, 17 Jan 2025 16:49:30 +0100 Subject: [PATCH] Fix connection view background in iOS15 --- .../ConnectionView/ConnectionView.swift | 35 +++++++------------ .../Tunnel/TunnelViewController.swift | 11 ++---- ios/MullvadVPN/Views/BlurView.swift | 7 ++-- 3 files changed, 17 insertions(+), 36 deletions(-) diff --git a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift index 6dfee3abed08..791948292f4c 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/ConnectionView/ConnectionView.swift @@ -15,7 +15,6 @@ struct ConnectionView: View { @State private(set) var isExpanded = false var action: ButtonPanel.Action? - var onContentUpdate: (() -> Void)? var body: some View { Spacer() @@ -25,32 +24,26 @@ struct ConnectionView: View { CustomProgressView(style: .large) .showIf(connectionViewModel.showsActivityIndicator) - ZStack { - BlurView(style: .dark) + VStack(alignment: .leading, spacing: 0) { + HeaderView(viewModel: connectionViewModel, isExpanded: $isExpanded) + .padding(.bottom, headerViewBottomPadding) - VStack(alignment: .leading, spacing: 0) { - HeaderView(viewModel: connectionViewModel, isExpanded: $isExpanded) - .padding(.bottom, headerViewBottomPadding) + DetailsContainer( + connectionViewModel: connectionViewModel, + indicatorsViewModel: indicatorsViewModel, + isExpanded: $isExpanded + ) + .showIf(connectionViewModel.showConnectionDetails) - DetailsContainer( - connectionViewModel: connectionViewModel, - indicatorsViewModel: indicatorsViewModel, - isExpanded: $isExpanded - ) - .showIf(connectionViewModel.showConnectionDetails) - - ButtonPanel(viewModel: connectionViewModel, action: action) - .padding(.top, 16) - } - .padding(16) + ButtonPanel(viewModel: connectionViewModel, action: action) + .padding(.top, 16) } + .padding(16) + .background(BlurView(style: .dark)) .cornerRadius(12) .padding(16) } .padding(.bottom, 8) // Some spacing to avoid overlap with the map legal link. - .onChange(of: isExpanded) { _ in - onContentUpdate?() - } .onReceive(connectionViewModel.combinedState) { _, _ 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 @@ -59,8 +52,6 @@ struct ConnectionView: View { isExpanded = false return } - - onContentUpdate?() } } } diff --git a/ios/MullvadVPN/View controllers/Tunnel/TunnelViewController.swift b/ios/MullvadVPN/View controllers/Tunnel/TunnelViewController.swift index a486014e7241..24596d1fdc79 100644 --- a/ios/MullvadVPN/View controllers/Tunnel/TunnelViewController.swift +++ b/ios/MullvadVPN/View controllers/Tunnel/TunnelViewController.swift @@ -58,18 +58,11 @@ class TunnelViewController: UIViewController, RootContainment { ) connectionView = ConnectionView( - connectionViewModel: self.connectionViewViewModel, - indicatorsViewModel: self.indicatorsViewViewModel + connectionViewModel: connectionViewViewModel, + indicatorsViewModel: indicatorsViewViewModel ) super.init(nibName: nil, bundle: nil) - - // When content size is updated in SwiftUI we need to explicitly tell UIKit to - // update its view size. This is not necessary on iOS 16 where we can set - // hostingController.sizingOptions instead. - connectionView.onContentUpdate = { [weak self] in - self?.connectionController?.view.setNeedsUpdateConstraints() - } } required init?(coder: NSCoder) { diff --git a/ios/MullvadVPN/Views/BlurView.swift b/ios/MullvadVPN/Views/BlurView.swift index eb976efb74a4..081cbb99da2f 100644 --- a/ios/MullvadVPN/Views/BlurView.swift +++ b/ios/MullvadVPN/Views/BlurView.swift @@ -13,10 +13,7 @@ struct BlurView: View { var style: UIBlurEffect.Style var body: some View { - Spacer() - .overlay { - VisualEffectView(effect: UIBlurEffect(style: style)) - .opacity(0.8) - } + VisualEffectView(effect: UIBlurEffect(style: style)) + .opacity(0.8) } }