diff options
| author | Emīls <emils@mullvad.net> | 2024-11-18 12:18:20 +0100 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2024-11-18 12:18:20 +0100 |
| commit | 690d3438c7ebb40e001b7da5b78ea101dc9779df (patch) | |
| tree | 3cc0fc2e60751adc0b5739fc4933c9f7b2888077 | |
| parent | c7f429a85266fcdf10aaaa865e32b8bdcb2dba55 (diff) | |
| parent | 60cde45cfb28d1f7dab4e38114d524ac9937ebe5 (diff) | |
| download | mullvadvpn-690d3438c7ebb40e001b7da5b78ea101dc9779df.tar.xz mullvadvpn-690d3438c7ebb40e001b7da5b78ea101dc9779df.zip | |
Merge branch 'apply-button-enabled-incorrectly-and-provider-count-mismatch-ios-919'
| -rw-r--r-- | ios/MullvadVPN/View controllers/RelayFilter/RelayFilterDataSource.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/View controllers/RelayFilter/RelayFilterViewController.swift | 40 |
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) } } |
