summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-10-03 15:06:03 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-10-09 16:20:54 +0200
commit892da35cbc36db7b733fb4416b5c16189571896e (patch)
tree358e2ad6f688943568010fe221f8199413c421c0 /android/app/src
parent0962150429d7fce47c33e6dafe3a195e890eab7f (diff)
downloadmullvadvpn-892da35cbc36db7b733fb4416b5c16189571896e.tar.xz
mullvadvpn-892da35cbc36db7b733fb4416b5c16189571896e.zip
Add support for mutlihop communication with daemon
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ConnectUiStatePreviewParameterProvider.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/TunnelStatePreviewData.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/WireguardConstraintsRepository.kt11
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt13
6 files changed, 20 insertions, 14 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ConnectUiStatePreviewParameterProvider.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ConnectUiStatePreviewParameterProvider.kt
index 50fe6244f7..1c08feb6f1 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ConnectUiStatePreviewParameterProvider.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/ConnectUiStatePreviewParameterProvider.kt
@@ -37,6 +37,7 @@ private fun generateOtherStates(): Sequence<ConnectUiState> =
latitude = 23.3,
longitude = 12.99,
hostname = "Hostname",
+ entryHostname = "EntryHostname",
),
selectedRelayItemTitle = "Relay Title",
tunnelState = state,
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/TunnelStatePreviewData.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/TunnelStatePreviewData.kt
index b6ca18c91a..ffb9117049 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/TunnelStatePreviewData.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/TunnelStatePreviewData.kt
@@ -61,6 +61,7 @@ private fun generateLocation(): GeoIpLocation =
country = "",
city = "",
hostname = "",
+ entryHostname = "",
latitude = 0.0,
longitude = 0.0,
)
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index 89c4e1e68d..e00b3d9b98 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -27,6 +27,7 @@ import net.mullvad.mullvadvpn.repository.RelayOverridesRepository
import net.mullvad.mullvadvpn.repository.SettingsRepository
import net.mullvad.mullvadvpn.repository.SplashCompleteRepository
import net.mullvad.mullvadvpn.repository.SplitTunnelingRepository
+import net.mullvad.mullvadvpn.repository.WireguardConstraintsRepository
import net.mullvad.mullvadvpn.ui.MainActivity
import net.mullvad.mullvadvpn.ui.serviceconnection.AppVersionInfoRepository
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
@@ -140,6 +141,7 @@ val uiModule = module {
get(named(BOOT_COMPLETED_RECEIVER_COMPONENT_NAME)),
)
}
+ single { WireguardConstraintsRepository(get()) }
single { AccountExpiryInAppNotificationUseCase(get()) }
single { TunnelStateNotificationUseCase(get()) }
@@ -208,7 +210,7 @@ val uiModule = module {
viewModel { SettingsViewModel(get(), get(), IS_PLAY_BUILD) }
viewModel { SplashViewModel(get(), get(), get(), get()) }
viewModel { VoucherDialogViewModel(get()) }
- viewModel { VpnSettingsViewModel(get(), get(), get(), get()) }
+ viewModel { VpnSettingsViewModel(get(), get(), get(), get(), get()) }
viewModel { WelcomeViewModel(get(), get(), get(), get(), isPlayBuild = IS_PLAY_BUILD) }
viewModel { ReportProblemViewModel(get(), get()) }
viewModel { ViewLogsViewModel(get()) }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
index 4bdde9fec5..ed78ecb537 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
@@ -19,7 +19,6 @@ import net.mullvad.mullvadvpn.lib.model.GeoLocationId
import net.mullvad.mullvadvpn.lib.model.PortRange
import net.mullvad.mullvadvpn.lib.model.RelayItem
import net.mullvad.mullvadvpn.lib.model.RelayItemId
-import net.mullvad.mullvadvpn.lib.model.WireguardConstraints
import net.mullvad.mullvadvpn.lib.model.WireguardEndpointData
import net.mullvad.mullvadvpn.lib.model.cities
import net.mullvad.mullvadvpn.lib.model.name
@@ -82,9 +81,6 @@ class RelayListRepository(
suspend fun updateSelectedRelayLocation(value: RelayItemId) =
managementService.setRelayLocation(value)
- suspend fun updateSelectedWireguardConstraints(value: WireguardConstraints) =
- managementService.setWireguardConstraints(value)
-
fun find(geoLocationId: GeoLocationId) = relayList.value.findByGeoLocationId(geoLocationId)
private fun defaultWireguardEndpointData() = WireguardEndpointData(emptyList(), emptyList())
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/WireguardConstraintsRepository.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/WireguardConstraintsRepository.kt
new file mode 100644
index 0000000000..816b172ea5
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/WireguardConstraintsRepository.kt
@@ -0,0 +1,11 @@
+package net.mullvad.mullvadvpn.repository
+
+import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService
+import net.mullvad.mullvadvpn.lib.model.Constraint
+import net.mullvad.mullvadvpn.lib.model.Port
+
+class WireguardConstraintsRepository(private val managementService: ManagementService) {
+ suspend fun setWireguardPort(port: Constraint<Port>) = managementService.setWireguardPort(port)
+
+ suspend fun setMultihop(enabled: Boolean) = managementService.setMultihop(enabled)
+}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
index 5ca136341e..e160776ee0 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/VpnSettingsViewModel.kt
@@ -27,10 +27,10 @@ import net.mullvad.mullvadvpn.lib.model.ObfuscationMode
import net.mullvad.mullvadvpn.lib.model.Port
import net.mullvad.mullvadvpn.lib.model.QuantumResistantState
import net.mullvad.mullvadvpn.lib.model.Settings
-import net.mullvad.mullvadvpn.lib.model.WireguardConstraints
import net.mullvad.mullvadvpn.repository.AutoStartAndConnectOnBootRepository
import net.mullvad.mullvadvpn.repository.RelayListRepository
import net.mullvad.mullvadvpn.repository.SettingsRepository
+import net.mullvad.mullvadvpn.repository.WireguardConstraintsRepository
import net.mullvad.mullvadvpn.usecase.SystemVpnSettingsAvailableUseCase
sealed interface VpnSettingsSideEffect {
@@ -49,6 +49,7 @@ class VpnSettingsViewModel(
private val relayListRepository: RelayListRepository,
private val systemVpnSettingsUseCase: SystemVpnSettingsAvailableUseCase,
private val autoStartAndConnectOnBootRepository: AutoStartAndConnectOnBootRepository,
+ private val wireguardConstraintsRepository: WireguardConstraintsRepository,
private val dispatcher: CoroutineDispatcher = Dispatchers.IO,
) : ViewModel() {
@@ -231,11 +232,7 @@ class VpnSettingsViewModel(
if (port is Constraint.Only && port.value !in WIREGUARD_PRESET_PORTS) {
customPort.update { port.value }
}
- viewModelScope.launch {
- relayListRepository.updateSelectedWireguardConstraints(
- WireguardConstraints(port = port)
- )
- }
+ viewModelScope.launch { wireguardConstraintsRepository.setWireguardPort(port = port) }
}
fun resetCustomPort() {
@@ -244,9 +241,7 @@ class VpnSettingsViewModel(
// If custom port was selected, update selection to be any.
if (isCustom) {
viewModelScope.launch {
- relayListRepository.updateSelectedWireguardConstraints(
- WireguardConstraints(port = Constraint.Any)
- )
+ wireguardConstraintsRepository.setWireguardPort(port = Constraint.Any)
}
}
}