summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJon Petersson <jon.petersson@mullvad.net>2024-11-11 16:51:07 +0100
committerEmīls <emils@mullvad.net>2024-11-18 12:05:39 +0100
commit60cde45cfb28d1f7dab4e38114d524ac9937ebe5 (patch)
tree3cc0fc2e60751adc0b5739fc4933c9f7b2888077
parentc7f429a85266fcdf10aaaa865e32b8bdcb2dba55 (diff)
downloadmullvadvpn-60cde45cfb28d1f7dab4e38114d524ac9937ebe5.tar.xz
mullvadvpn-60cde45cfb28d1f7dab4e38114d524ac9937ebe5.zip
Fix filter apply button being enabled with zero providers
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift4
-rw-r--r--ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift40
2 files changed, 37 insertions, 7 deletions
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
index 3b4fadeac9..ad36ef12f2 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift
@@ -285,10 +285,6 @@ extension RelayFilterDataSource: UITableViewDelegate {
return nil
}
- func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
- return UITableView.automaticDimension
- }
-
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return UIMetrics.TableView.separatorHeight
}
diff --git a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift
index 046e466a80..c14d41e291 100644
--- a/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift
+++ b/ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift
@@ -96,7 +96,18 @@ class RelayFilterViewController: UIViewController {
case .any:
self?.applyButton.isEnabled = true
case let .only(providers):
- self?.applyButton.isEnabled = !providers.isEmpty
+ switch filter.ownership {
+ case .any:
+ self?.applyButton.isEnabled = !providers.isEmpty
+ case .owned:
+ let filterHasAtLeastOneOwnedProvider = viewModel.ownedProviders
+ .first(where: { providers.contains($0) }) != nil
+ self?.applyButton.isEnabled = filterHasAtLeastOneOwnedProvider
+ case .rented:
+ let filterHasAtLeastOneRentedProvider = viewModel.rentedProviders
+ .first(where: { providers.contains($0) }) != nil
+ self?.applyButton.isEnabled = filterHasAtLeastOneRentedProvider
+ }
}
}
.store(in: &disposeBag)
@@ -105,7 +116,30 @@ class RelayFilterViewController: UIViewController {
}
@objc private func applyFilter() {
- guard let filter = viewModel?.relayFilter else { return }
- onApplyFilter?(filter)
+ guard let viewModel = viewModel else { return }
+ var relayFilter = viewModel.relayFilter
+
+ switch viewModel.relayFilter.ownership {
+ case .any:
+ break
+ case .owned:
+ switch relayFilter.providers {
+ case .any:
+ break
+ case let .only(providers):
+ let ownedProviders = viewModel.ownedProviders.filter { providers.contains($0) }
+ relayFilter.providers = .only(ownedProviders)
+ }
+ case .rented:
+ switch relayFilter.providers {
+ case .any:
+ break
+ case let .only(providers):
+ let rentedProviders = viewModel.rentedProviders.filter { providers.contains($0) }
+ relayFilter.providers = .only(rentedProviders)
+ }
+ }
+
+ onApplyFilter?(relayFilter)
}
}