diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-10-03 15:06:03 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-10-09 16:20:54 +0200 |
| commit | 892da35cbc36db7b733fb4416b5c16189571896e (patch) | |
| tree | 358e2ad6f688943568010fe221f8199413c421c0 /android/app/src | |
| parent | 0962150429d7fce47c33e6dafe3a195e890eab7f (diff) | |
| download | mullvadvpn-892da35cbc36db7b733fb4416b5c16189571896e.tar.xz mullvadvpn-892da35cbc36db7b733fb4416b5c16189571896e.zip | |
Add support for mutlihop communication with daemon
Diffstat (limited to 'android/app/src')
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) } } } |
