diff options
| author | Steffen Ernst <steffen.ernst@mullvad.net> | 2025-05-13 14:50:50 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-21 09:47:43 +0200 |
| commit | e74b0329e112378fe0b8aca0feb0ca974768e5d7 (patch) | |
| tree | 0a40ae5e383808f46a0b0f622b8b753eff95b29b | |
| parent | 5f27fed8789f1a97c4229bc4a277f5b220e559f1 (diff) | |
| download | mullvadvpn-e74b0329e112378fe0b8aca0feb0ca974768e5d7.tar.xz mullvadvpn-e74b0329e112378fe0b8aca0feb0ca974768e5d7.zip | |
Fix api access view review feedback
9 files changed, 45 insertions, 38 deletions
diff --git a/ios/MullvadVPN.xcodeproj/project.pbxproj b/ios/MullvadVPN.xcodeproj/project.pbxproj index 034895b836..81d93569b2 100644 --- a/ios/MullvadVPN.xcodeproj/project.pbxproj +++ b/ios/MullvadVPN.xcodeproj/project.pbxproj @@ -1121,6 +1121,7 @@ F9394EF32DC21D8C009595EA /* MullvadList.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9394EF22DC21D8C009595EA /* MullvadList.swift */; }; F998EFF82D359C4600D88D01 /* SKProduct+Formatting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58FD5BEF24238EB300112C88 /* SKProduct+Formatting.swift */; }; F998EFFA2D3656BA00D88D01 /* SKProduct+Sorting.swift in Sources */ = {isa = PBXBuildFile; fileRef = F998EFF92D3656B100D88D01 /* SKProduct+Sorting.swift */; }; + F9E3BCF72DD35B78009986C3 /* ListAccessViewModelBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9E3BCF62DD35B78009986C3 /* ListAccessViewModelBridge.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -2540,6 +2541,7 @@ F9276C612DBA20FC006FE43D /* Font+Mullvad.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Mullvad.swift"; sourceTree = "<group>"; }; F91B94A62DC9EB5E00132C28 /* MullvadInfoHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MullvadInfoHeaderView.swift; sourceTree = "<group>"; }; F998EFF92D3656B100D88D01 /* SKProduct+Sorting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SKProduct+Sorting.swift"; sourceTree = "<group>"; }; + F9E3BCF62DD35B78009986C3 /* ListAccessViewModelBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListAccessViewModelBridge.swift; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -4008,6 +4010,7 @@ 58CEB2EA2AFBBCBA00E6E088 /* List */ = { isa = PBXGroup; children = ( + F9E3BCF62DD35B78009986C3 /* ListAccessViewModelBridge.swift */, 58EFC76D2AFB3BDA00E9F4CB /* ListAccessMethodCoordinator.swift */, 588D7EDF2AF3A595005DF40A /* ListAccessMethodInteractor.swift */, 588D7EDB2AF3A55E005DF40A /* ListAccessMethodInteractorProtocol.swift */, @@ -6244,6 +6247,7 @@ buildActionMask = 2147483647; files = ( 44075DFB2CDA4F7400F61139 /* UDPOverTCPObfuscationSettingsViewModel.swift in Sources */, + F9E3BCF72DD35B78009986C3 /* ListAccessViewModelBridge.swift in Sources */, 7A6389DC2B7E3BD6008E77E1 /* CustomListViewModel.swift in Sources */, 4422C0712CCFF6790001A385 /* UDPOverTCPObfuscationSettingsView.swift in Sources */, 7A95B67D2D5F7C5B00687524 /* DAITASettingsCoordinator.swift in Sources */, diff --git a/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift b/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift index 368422c360..d6cf5e7ac4 100644 --- a/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift +++ b/ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift @@ -25,7 +25,7 @@ class AddLocationsViewController: UIViewController { let tableView = UITableView() tableView.separatorColor = .secondaryColor tableView.separatorInset = .zero - tableView.rowHeight = 56 + tableView.rowHeight = UIMetrics.TableView.rowHeight tableView.indicatorStyle = .white tableView.setAccessibilityIdentifier(.editCustomListEditLocationsTableView) return tableView diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift index 96cf81e1f4..8c06bea36e 100644 --- a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift @@ -11,32 +11,6 @@ import MullvadREST import MullvadSettings import SwiftUI -class ListAccessViewModelBridge: ListAccessViewModel { - private let interactor: ListAccessMethodInteractorProtocol - private weak var delegate: ListAccessMethodViewControllerDelegate? - - @Published var items: [ListAccessMethodItem] = [] - @Published var itemInUse: ListAccessMethodItem? - init(interactor: ListAccessMethodInteractorProtocol, delegate: ListAccessMethodViewControllerDelegate?) { - self.interactor = interactor - self.delegate = delegate - interactor.itemsPublisher.assign(to: &$items) - interactor.itemInUsePublisher.assign(to: &$itemInUse) - } - - func addNewMethod() { - delegate?.controllerShouldAddNew() - } - - func methodSelected(_ method: ListAccessMethodItem) { - delegate?.controller(shouldEditItem: method) - } - - func showAbout() { - delegate?.controllerShouldShowAbout() - } -} - protocol ListAccessViewModel: ObservableObject { var items: [ListAccessMethodItem] { get } var itemInUse: ListAccessMethodItem? { get } diff --git a/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessViewModelBridge.swift b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessViewModelBridge.swift new file mode 100644 index 0000000000..17a060f09f --- /dev/null +++ b/ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessViewModelBridge.swift @@ -0,0 +1,28 @@ +import SwiftUI + +class ListAccessViewModelBridge: ListAccessViewModel { + private let interactor: ListAccessMethodInteractorProtocol + private weak var delegate: ListAccessMethodViewControllerDelegate? + + @Published var items: [ListAccessMethodItem] = [] + @Published var itemInUse: ListAccessMethodItem? + init(interactor: ListAccessMethodInteractorProtocol, + delegate: ListAccessMethodViewControllerDelegate?) { + self.interactor = interactor + self.delegate = delegate + interactor.itemsPublisher.assign(to: &$items) + interactor.itemInUsePublisher.assign(to: &$itemInUse) + } + + func addNewMethod() { + delegate?.controllerShouldAddNew() + } + + func methodSelected(_ method: ListAccessMethodItem) { + delegate?.controller(shouldEditItem: method) + } + + func showAbout() { + delegate?.controllerShouldShowAbout() + } +} diff --git a/ios/MullvadVPN/UI appearance/Color+Mullvad.swift b/ios/MullvadVPN/UI appearance/Color+Mullvad.swift index 995322b74f..5d6cd0da42 100644 --- a/ios/MullvadVPN/UI appearance/Color+Mullvad.swift +++ b/ios/MullvadVPN/UI appearance/Color+Mullvad.swift @@ -1,11 +1,11 @@ import SwiftUI extension Color { - private static let mullvadPrimaryColor = Color(UIColor.primaryColor) - private static let mullvadSecondaryColor = Color(UIColor.secondaryColor) - private static let mullvadWarningColor = Color(UIColor.warningColor) - private static let mullvadDangerColor = Color(UIColor.dangerColor) - private static let mullvadSuccessColor = Color(UIColor.successColor) + private static let mullvadPrimaryColor = UIColor.primaryColor.color + private static let mullvadSecondaryColor = UIColor.secondaryColor.color + private static let mullvadWarningColor = UIColor.warningColor.color + private static let mullvadDangerColor = UIColor.dangerColor.color + private static let mullvadSuccessColor = UIColor.successColor.color static let mullvadBackground: Color = .mullvadSecondaryColor static let mullvadTextPrimary: Color = UIColor.primaryTextColor.color diff --git a/ios/MullvadVPN/UI appearance/UIMetrics.swift b/ios/MullvadVPN/UI appearance/UIMetrics.swift index 4f4c1142cc..47e83662dc 100644 --- a/ios/MullvadVPN/UI appearance/UIMetrics.swift +++ b/ios/MullvadVPN/UI appearance/UIMetrics.swift @@ -12,6 +12,8 @@ import UIKit enum UIMetrics { enum TableView { + /// Height of a cell. + static let rowHeight: CGFloat = 56 /// Height for separators between cells and/or sections. static let separatorHeight: CGFloat = 0.33 /// Spacing used between distinct sections of views diff --git a/ios/MullvadVPN/View controllers/SelectLocation/LocationViewController.swift b/ios/MullvadVPN/View controllers/SelectLocation/LocationViewController.swift index bdae59b546..8f1336ff21 100644 --- a/ios/MullvadVPN/View controllers/SelectLocation/LocationViewController.swift +++ b/ios/MullvadVPN/View controllers/SelectLocation/LocationViewController.swift @@ -171,8 +171,8 @@ final class LocationViewController: UIViewController { tableView.backgroundColor = view.backgroundColor tableView.separatorColor = .secondaryColor tableView.separatorInset = .zero - tableView.rowHeight = 56 - tableView.sectionHeaderHeight = 56 + tableView.rowHeight = UIMetrics.TableView.rowHeight + tableView.sectionHeaderHeight = UIMetrics.TableView.rowHeight tableView.indicatorStyle = .white tableView.keyboardDismissMode = .onDrag tableView.setAccessibilityIdentifier(.selectLocationTableView) diff --git a/ios/MullvadVPN/Views/List/MullvadList.swift b/ios/MullvadVPN/Views/List/MullvadList.swift index 5eaf1b9559..51b9fe808b 100644 --- a/ios/MullvadVPN/Views/List/MullvadList.swift +++ b/ios/MullvadVPN/Views/List/MullvadList.swift @@ -12,9 +12,8 @@ struct MullvadList<Content: View, Data: RandomAccessCollection<ID>, ID: Hashable @State var itemHeight: CGFloat = 0 var maxListHeight: CGFloat { - itemHeight * CGFloat(data.count) > 0 ? itemHeight * CGFloat( - data.count - ) : .infinity + var height = itemHeight * CGFloat(data.count) + return height > 0 ? height : .infinity } init(_ data: Data, id: KeyPath<Data.Element, ID>, @ViewBuilder content: @escaping (Data.Element) -> Content) { diff --git a/ios/MullvadVPN/Views/List/MullvadListNavigationItemView.swift b/ios/MullvadVPN/Views/List/MullvadListNavigationItemView.swift index ced7ad0995..0d5223f145 100644 --- a/ios/MullvadVPN/Views/List/MullvadListNavigationItemView.swift +++ b/ios/MullvadVPN/Views/List/MullvadListNavigationItemView.swift @@ -62,7 +62,7 @@ struct MullvadListNavigationItemView: View { } .padding(.horizontal, 16) .padding(.vertical, 12) - .frame(minHeight: 56, maxHeight: .infinity) + .frame(minHeight: UIMetrics.TableView.rowHeight, maxHeight: .infinity) .background( isPressed ? Color.MullvadButton.primaryPressed : Color.MullvadButton .primary |
