diff options
| author | David Göransson <david.goransson@mullvad.net> | 2024-11-18 14:23:05 +0100 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2024-11-27 09:00:18 +0100 |
| commit | 1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988 (patch) | |
| tree | a83565926fb753a2dd9fd24f0e2bd07262e4507e /android/lib/shared/src/main | |
| parent | 0d155385e1cb7075012bd270de0398d83a438bc5 (diff) | |
| download | mullvadvpn-1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988.tar.xz mullvadvpn-1bb7fc7ebaa2837ed9f9d28c2bb5a6fd91033988.zip | |
Handle legacy always-on vpn profiles
Co-authored-by: Jonatan Rhodin <jonatan.rhodin@mullvad.net>
Diffstat (limited to 'android/lib/shared/src/main')
3 files changed, 13 insertions, 14 deletions
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt index 2dbd15ec03..08a0a517f0 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt +++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt @@ -2,7 +2,6 @@ package net.mullvad.mullvadvpn.lib.shared import arrow.core.Either import arrow.core.raise.either -import arrow.core.raise.ensure import kotlinx.coroutines.flow.combine import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService import net.mullvad.mullvadvpn.lib.model.ConnectError @@ -12,7 +11,7 @@ import net.mullvad.mullvadvpn.lib.model.TunnelState class ConnectionProxy( private val managementService: ManagementService, translationRepository: RelayLocationTranslationRepository, - private val vpnPermissionRepository: VpnPermissionRepository, + private val vpnProfileUseCase: VpnProfileUseCase, ) { val tunnelState = combine(managementService.tunnelState, translationRepository.translations) { @@ -35,7 +34,7 @@ class ConnectionProxy( copy(city = translations[city] ?: city, country = translations[country] ?: country) suspend fun connect(): Either<ConnectError, Boolean> = either { - ensure(vpnPermissionRepository.hasVpnPermission()) { ConnectError.NoVpnPermission } + vpnProfileUseCase.prepareVpn().mapLeft(ConnectError::NotPrepared).bind() managementService.connect().bind() } diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnPermissionRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnPermissionRepository.kt deleted file mode 100644 index b97c60316c..0000000000 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnPermissionRepository.kt +++ /dev/null @@ -1,11 +0,0 @@ -package net.mullvad.mullvadvpn.lib.shared - -import android.content.Context -import android.net.VpnService -import net.mullvad.mullvadvpn.lib.common.util.getAlwaysOnVpnAppName - -class VpnPermissionRepository(private val applicationContext: Context) { - fun hasVpnPermission(): Boolean = VpnService.prepare(applicationContext) == null - - fun getAlwaysOnVpnAppName() = applicationContext.getAlwaysOnVpnAppName() -} diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt new file mode 100644 index 0000000000..cebac0be04 --- /dev/null +++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt @@ -0,0 +1,11 @@ +package net.mullvad.mullvadvpn.lib.shared + +import android.content.Context +import arrow.core.Either +import net.mullvad.mullvadvpn.lib.common.util.prepareVpnSafe +import net.mullvad.mullvadvpn.lib.model.PrepareError +import net.mullvad.mullvadvpn.lib.model.Prepared + +class VpnProfileUseCase(private val applicationContext: Context) { + fun prepareVpn(): Either<PrepareError, Prepared> = applicationContext.prepareVpnSafe() +} |
