summaryrefslogtreecommitdiffhomepage
path: root/android/lib/daemon-grpc/src
diff options
context:
space:
mode:
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.kt27
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(