diff options
Diffstat (limited to 'android/lib/daemon-grpc/src')
| -rw-r--r-- | android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt index cff4e2bd3e..3716e4d9c0 100644 --- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt +++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt @@ -576,6 +576,28 @@ class ManagementService( .mapLeft(SetRelayLocationError::Unknown) .mapEmpty() + suspend fun setRelayLocationMultihop( + entry: RelayItemId, + exit: RelayItemId, + ): Either<SetRelayLocationError, Unit> = + Either.catch { + val currentRelaySettings = getSettings().relaySettings + + val updatedRelaySettings = + currentRelaySettings.copy { + inside(RelaySettings.relayConstraints) { + RelayConstraints.location set Constraint.Only(exit) + RelayConstraints.wireguardConstraints.entryLocation set + Constraint.Only(entry) + RelayConstraints.wireguardConstraints.isMultihopEnabled set true + } + } + grpc.setRelaySettings(updatedRelaySettings.fromDomain()) + } + .onLeft { Logger.e("Set relay multihop error") } + .mapLeft(SetRelayLocationError::Unknown) + .mapEmpty() + suspend fun createCustomList( name: CustomListName, locations: List<GeoLocationId> = emptyList(), @@ -855,6 +877,11 @@ class ManagementService( .mapLeft(SetDaitaSettingsError::Unknown) .mapEmpty() + suspend fun setRecentsEnabled(enabled: Boolean): Either<SetWireguardConstraintsError, Unit> = + Either.catch { grpc.setEnableRecents(BoolValue.of(enabled)) } + .mapLeft(SetWireguardConstraintsError::Unknown) + .mapEmpty() + private fun <A> Either<A, Empty>.mapEmpty() = map {} private inline fun <B, C> Either<Throwable, B>.mapLeftStatus( |
