diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-03-07 16:25:30 +0100 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-03-07 16:26:26 +0100 |
| commit | 68daaa4381fbad7e3c4a2df55d30ee4f0386e895 (patch) | |
| tree | 31133a76f33cbf7f3b6d98afe7256e2b658a0cd1 /android/app | |
| parent | 5b81fe6e6d4bb5a1ba615205f3a0bc082d97f6fa (diff) | |
| download | mullvadvpn-68daaa4381fbad7e3c4a2df55d30ee4f0386e895.tar.xz mullvadvpn-68daaa4381fbad7e3c4a2df55d30ee4f0386e895.zip | |
Fix filter screen selection regression
Diffstat (limited to 'android/app')
3 files changed, 19 insertions, 17 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/FilterConstrainExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/FilterConstrainExtensions.kt index da46938e84..ad301877c4 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/FilterConstrainExtensions.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/state/FilterConstrainExtensions.kt @@ -17,11 +17,11 @@ fun Ownership?.toOwnershipConstraint(): Constraint<Ownership> = else -> Constraint.Only(this) } -fun Constraint<Providers>.toSelectedProviders(allProviders: List<Provider>): List<Provider>? = +fun Constraint<Providers>.toSelectedProviders(allProviders: List<Provider>): List<Provider> = when (this) { - is Constraint.Any -> null + is Constraint.Any -> allProviders is Constraint.Only -> - this.value.providers.toList().mapNotNull { providerName -> + value.providers.toList().mapNotNull { providerName -> allProviders.firstOrNull { it.name == providerName } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/FilterViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/FilterViewModel.kt index 4a9fb709fd..3f95d79193 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/FilterViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/FilterViewModel.kt @@ -39,7 +39,7 @@ class FilterViewModel( ) { allProviders, selectedConstraintProviders -> selectedConstraintProviders.toSelectedProviders(allProviders) } - .first() ?: emptyList() + .first() val ownershipConstraint = relayListFilterUseCase.selectedOwnership().first() selectedOwnership.value = ownershipConstraint.toNullableOwnership() diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModel.kt index fc46441de1..9b83423a35 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/SelectLocationViewModel.kt @@ -48,11 +48,15 @@ class SelectLocationViewModel( selectedConstraintProviders -> val selectedOwnershipItem = selectedOwnership.toNullableOwnership() val selectedProvidersCount = - filterSelectedProvidersByOwnership( - selectedConstraintProviders.toSelectedProviders(allProviders), - selectedOwnershipItem - ) - ?.size + when (selectedConstraintProviders) { + is Constraint.Any -> null + is Constraint.Only -> + filterSelectedProvidersByOwnership( + selectedConstraintProviders.toSelectedProviders(allProviders), + selectedOwnershipItem + ) + .size + } val filteredRelayCountries = relayCountries.filterOnSearchTerm(searchTerm, selectedItem) @@ -97,15 +101,13 @@ class SelectLocationViewModel( } private fun filterSelectedProvidersByOwnership( - selectedProviders: List<Provider>?, + selectedProviders: List<Provider>, selectedOwnership: Ownership? - ): List<Provider>? = - selectedProviders?.let { - when (selectedOwnership) { - Ownership.MullvadOwned -> selectedProviders.filter { it.mullvadOwned } - Ownership.Rented -> selectedProviders.filterNot { it.mullvadOwned } - else -> selectedProviders - } + ): List<Provider> = + when (selectedOwnership) { + Ownership.MullvadOwned -> selectedProviders.filter { it.mullvadOwned } + Ownership.Rented -> selectedProviders.filterNot { it.mullvadOwned } + else -> selectedProviders } fun removeOwnerFilter() { |
