summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2025-09-04 12:51:14 +0200
committerDavid Göransson <david.goransson@mullvad.net>2025-09-04 12:51:14 +0200
commitdc761d45ef35558ef6a36a57cbb8fe394da35236 (patch)
tree3a04b324141999b2b6ed28f8d9555a25b9cef0ef
parent7dce15708ad97a2556b40fa04fdf1aa000729d3c (diff)
parent25dd999d5fbea17827307748040c9e2493e47743 (diff)
downloadmullvadvpn-dc761d45ef35558ef6a36a57cbb8fe394da35236.tar.xz
mullvadvpn-dc761d45ef35558ef6a36a57cbb8fe394da35236.zip
Merge branch 'fix-location-change-issue-in-latest-version-for-android-droid-2158'
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/ModifyMultihopUseCase.kt29
1 files changed, 11 insertions, 18 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/ModifyMultihopUseCase.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/ModifyMultihopUseCase.kt
index de76583166..e8edfc64b8 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/ModifyMultihopUseCase.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/ModifyMultihopUseCase.kt
@@ -1,9 +1,9 @@
package net.mullvad.mullvadvpn.usecase
import arrow.core.Either
-import arrow.core.left
import arrow.core.raise.either
import arrow.core.raise.ensure
+import arrow.core.raise.ensureNotNull
import arrow.core.right
import co.touchlab.kermit.Logger
import kotlin.collections.first
@@ -28,15 +28,15 @@ class ModifyMultihopUseCase(
ensure(change.item.active) { ModifyMultihopError.RelayItemInactive(change.item) }
val changeId: RelayItemId =
change.item.id.convertCustomListWithOnlyHostNameToHostName().bind()
+ val settings = settingsRepository.settingsUpdates.value
+ ensureNotNull(settings) { ModifyMultihopError.GenericError }
val other =
when (change) {
- is MultihopChange.Entry ->
- settingsRepository.settingsUpdates.value.exit().bind()
- is MultihopChange.Exit ->
- settingsRepository.settingsUpdates.value.entry().bind()
+ is MultihopChange.Entry -> settings.exit()
+ is MultihopChange.Exit -> settings.entry()
}
- .convertCustomListWithOnlyHostNameToHostName()
- .bind()
+ ?.convertCustomListWithOnlyHostNameToHostName()
+ ?.bind()
ensure(!changeId.isSameHost(other)) { ModifyMultihopError.EntrySameAsExit(change.item) }
when (change) {
is MultihopChange.Entry ->
@@ -51,17 +51,10 @@ class ModifyMultihopUseCase(
.bind()
}
- private fun Settings?.exit(): Either<ModifyMultihopError.GenericError, RelayItemId> =
- this?.relaySettings?.relayConstraints?.location?.getOrNull()?.right()
- ?: ModifyMultihopError.GenericError.left()
+ private fun Settings.exit(): RelayItemId? = relaySettings.relayConstraints.location.getOrNull()
- private fun Settings?.entry(): Either<ModifyMultihopError.GenericError, RelayItemId> =
- this?.relaySettings
- ?.relayConstraints
- ?.wireguardConstraints
- ?.entryLocation
- ?.getOrNull()
- ?.right() ?: ModifyMultihopError.GenericError.left()
+ private fun Settings.entry(): RelayItemId? =
+ relaySettings.relayConstraints.wireguardConstraints.entryLocation.getOrNull()
private fun RelayItemId.convertCustomListWithOnlyHostNameToHostName():
Either<ModifyMultihopError.GenericError, RelayItemId> =
@@ -83,7 +76,7 @@ class ModifyMultihopUseCase(
else -> this.right()
}
- private fun RelayItemId.isSameHost(other: RelayItemId): Boolean =
+ private fun RelayItemId.isSameHost(other: RelayItemId?): Boolean =
this is GeoLocationId.Hostname && other == this
}