summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteffen Ernst <steffen.ernst@mullvad.net>2025-05-13 14:50:50 +0200
committerBug Magnet <marco.nikic@mullvad.net>2025-05-21 09:47:43 +0200
commite74b0329e112378fe0b8aca0feb0ca974768e5d7 (patch)
tree0a40ae5e383808f46a0b0f622b8b753eff95b29b
parent5f27fed8789f1a97c4229bc4a277f5b220e559f1 (diff)
downloadmullvadvpn-e74b0329e112378fe0b8aca0feb0ca974768e5d7.tar.xz
mullvadvpn-e74b0329e112378fe0b8aca0feb0ca974768e5d7.zip
Fix api access view review feedback
-rw-r--r--ios/MullvadVPN.xcodeproj/project.pbxproj4
-rw-r--r--ios/MullvadVPN/Coordinators/CustomLists/AddLocationsViewController.swift2
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessMethodView.swift26
-rw-r--r--ios/MullvadVPN/Coordinators/Settings/APIAccess/List/ListAccessViewModelBridge.swift28
-rw-r--r--ios/MullvadVPN/UI appearance/Color+Mullvad.swift10
-rw-r--r--ios/MullvadVPN/UI appearance/UIMetrics.swift2
-rw-r--r--ios/MullvadVPN/View controllers/SelectLocation/LocationViewController.swift4
-rw-r--r--ios/MullvadVPN/Views/List/MullvadList.swift5
-rw-r--r--ios/MullvadVPN/Views/List/MullvadListNavigationItemView.swift2
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