summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift17
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift6
2 files changed, 20 insertions, 3 deletions
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
index a6aa13478c..12b7805ee2 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
@@ -34,6 +34,7 @@ final class RelayFilterDataSource: UITableViewDiffableDataSource<
createDataSnapshot()
tableView.delegate = self
setupBindings()
+ updateSelection(from: viewModel.relayFilter)
}
private func registerCells() {
@@ -59,9 +60,19 @@ final class RelayFilterDataSource: UITableViewDiffableDataSource<
.store(in: &disposeBag)
}
+ private func availableProviders(givenOwnership ownership: RelayFilter.Ownership) -> [RelayFilterDataSourceItem] {
+ [RelayFilterDataSourceItem.allProviders] + viewModel
+ .availableProviders(for: ownership)
+ }
+
private func createDataSnapshot() {
var snapshot = NSDiffableDataSourceSnapshot<Section, RelayFilterDataSourceItem>()
snapshot.appendSections(Section.allCases)
+ snapshot.appendItems(RelayFilterDataSourceItem.ownerships, toSection: .ownership)
+ snapshot.appendItems(
+ availableProviders(givenOwnership: viewModel.relayFilter.ownership),
+ toSection: .providers
+ )
apply(snapshot, animatingDifferences: false)
}
@@ -79,7 +90,7 @@ final class RelayFilterDataSource: UITableViewDiffableDataSource<
case .providers:
if !oldSnapshot.itemIdentifiers(inSection: section).isEmpty {
newSnapshot.appendItems(
- [RelayFilterDataSourceItem.allProviders] + viewModel.availableProviders(for: filter.ownership),
+ availableProviders(givenOwnership: filter.ownership),
toSection: .providers
)
applySnapshot(newSnapshot, animated: false)
@@ -161,8 +172,7 @@ final class RelayFilterDataSource: UITableViewDiffableDataSource<
newSnapshot.deleteItems(items)
} else {
newSnapshot.appendItems(
- [RelayFilterDataSourceItem.allProviders] + viewModel
- .availableProviders(for: viewModel.relayFilter.ownership),
+ availableProviders(givenOwnership: viewModel.relayFilter.ownership),
toSection: .providers
)
}
@@ -256,6 +266,7 @@ extension RelayFilterDataSource: UITableViewDelegate {
title = "Providers"
}
+ view.isExpanded = true
view.setAccessibilityIdentifier(accessibilityIdentifier)
view.titleLabel.text = NSLocalizedString(
"RELAY_FILTER_HEADER_LABEL",
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
index 6a74626b5e..8ffd7fd498 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSourceItem.swift
@@ -55,3 +55,9 @@ struct RelayFilterDataSourceItem: Hashable, Comparable {
return nameComparison == .orderedAscending
}
}
+
+extension RelayFilterDataSourceItem.ItemType {
+ var isSpecificOwnership: Bool {
+ return self == .ownershipOwned || self == .ownershipRented
+ }
+}