diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt index 7a8d92b17354..fa2fde4aa3b8 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt @@ -13,7 +13,7 @@ import net.mullvad.mullvadvpn.lib.shared.ConnectionProxy import net.mullvad.mullvadvpn.lib.shared.DeviceRepository import net.mullvad.mullvadvpn.lib.shared.LocaleRepository import net.mullvad.mullvadvpn.lib.shared.RelayLocationTranslationRepository -import net.mullvad.mullvadvpn.lib.shared.VpnProfileRepository +import net.mullvad.mullvadvpn.lib.shared.VpnProfileUseCase import org.koin.android.ext.koin.androidContext import org.koin.core.qualifier.named import org.koin.dsl.module @@ -33,7 +33,7 @@ val appModule = module { single { IntentProvider() } single { AccountRepository(get(), get(), MainScope()) } single { DeviceRepository(get()) } - single { VpnProfileRepository(androidContext()) } + single { VpnProfileUseCase(androidContext()) } single { ConnectionProxy(get(), get(), get()) } single { LocaleRepository(get()) } single { RelayLocationTranslationRepository(get(), get(), MainScope()) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt index 76d8d3f0aa35..4d9c92167175 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt @@ -27,7 +27,7 @@ import net.mullvad.mullvadvpn.lib.model.WebsiteAuthToken import net.mullvad.mullvadvpn.lib.shared.AccountRepository import net.mullvad.mullvadvpn.lib.shared.ConnectionProxy import net.mullvad.mullvadvpn.lib.shared.DeviceRepository -import net.mullvad.mullvadvpn.lib.shared.VpnProfileRepository +import net.mullvad.mullvadvpn.lib.shared.VpnProfileUseCase import net.mullvad.mullvadvpn.repository.InAppNotificationController import net.mullvad.mullvadvpn.repository.NewDeviceRepository import net.mullvad.mullvadvpn.usecase.LastKnownLocationUseCase @@ -49,7 +49,7 @@ class ConnectViewModel( private val paymentUseCase: PaymentUseCase, private val connectionProxy: ConnectionProxy, lastKnownLocationUseCase: LastKnownLocationUseCase, - private val vpnPermissionRepository: VpnProfileRepository, + private val vpnPermissionRepository: VpnProfileUseCase, private val resources: Resources, private val isPlayBuild: Boolean, private val packageName: String, diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt index db68ccd6ec78..f6fd79d35825 100644 --- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt @@ -30,7 +30,7 @@ import net.mullvad.mullvadvpn.lib.model.WebsiteAuthToken import net.mullvad.mullvadvpn.lib.shared.AccountRepository import net.mullvad.mullvadvpn.lib.shared.ConnectionProxy import net.mullvad.mullvadvpn.lib.shared.DeviceRepository -import net.mullvad.mullvadvpn.lib.shared.VpnProfileRepository +import net.mullvad.mullvadvpn.lib.shared.VpnProfileUseCase import net.mullvad.mullvadvpn.repository.InAppNotification import net.mullvad.mullvadvpn.repository.InAppNotificationController import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager @@ -88,7 +88,7 @@ class ConnectViewModelTest { private val mockLastKnownLocationUseCase: LastKnownLocationUseCase = mockk() // VpnPermissionRepository - private val mockVpnPermissionRepository: VpnProfileRepository = mockk(relaxed = true) + private val mockVpnPermissionRepository: VpnProfileUseCase = mockk(relaxed = true) @BeforeEach fun setup() { diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt index 1a4ca83ef7bf..5d9f5dc78ee2 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationAction.kt @@ -17,6 +17,6 @@ sealed interface NotificationAction { data object Dismiss : Tunnel - data class RequestPermission(val prepareIntent: Intent) : Tunnel + data object RequestVpnProfile : Tunnel } } 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 49ad7c4af74c..08a0a517f08e 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 @@ -11,7 +11,7 @@ import net.mullvad.mullvadvpn.lib.model.TunnelState class ConnectionProxy( private val managementService: ManagementService, translationRepository: RelayLocationTranslationRepository, - private val vpnPermissionRepository: VpnProfileRepository, + private val vpnProfileUseCase: VpnProfileUseCase, ) { val tunnelState = combine(managementService.tunnelState, translationRepository.translations) { @@ -34,7 +34,7 @@ class ConnectionProxy( copy(city = translations[city] ?: city, country = translations[country] ?: country) suspend fun connect(): Either = either { - vpnPermissionRepository.prepareVpn().mapLeft(ConnectError::NotPrepared).bind() + vpnProfileUseCase.prepareVpn().mapLeft(ConnectError::NotPrepared).bind() managementService.connect().bind() } diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt similarity index 83% rename from android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileRepository.kt rename to android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt index ace74879946a..cebac0be04be 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileRepository.kt +++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VpnProfileUseCase.kt @@ -6,6 +6,6 @@ import net.mullvad.mullvadvpn.lib.common.util.prepareVpnSafe import net.mullvad.mullvadvpn.lib.model.PrepareError import net.mullvad.mullvadvpn.lib.model.Prepared -class VpnProfileRepository(private val applicationContext: Context) { +class VpnProfileUseCase(private val applicationContext: Context) { fun prepareVpn(): Either = applicationContext.prepareVpnSafe() } diff --git a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt b/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt index d9834548ee09..a5b46cfc2882 100644 --- a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt +++ b/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt @@ -12,14 +12,14 @@ import org.junit.jupiter.api.Test class ConnectionProxyTest { private val mockManagementService: ManagementService = mockk(relaxed = true) - private val mockVpnPermissionRepository: VpnProfileRepository = mockk() + private val mockVpnPermissionRepository: VpnProfileUseCase = mockk() private val mockTranslationRepository: RelayLocationTranslationRepository = mockk(relaxed = true) private val connectionProxy: ConnectionProxy = ConnectionProxy( managementService = mockManagementService, - vpnPermissionRepository = mockVpnPermissionRepository, + vpnProfileUseCase = mockVpnPermissionRepository, translationRepository = mockTranslationRepository, ) diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationAction.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationAction.kt index b15bec08df39..f836cbcd1b68 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationAction.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationAction.kt @@ -64,14 +64,13 @@ private fun NotificationTunnelState.contentTitleResourceId(context: Context): St internal fun NotificationAction.Tunnel.toCompatAction(context: Context): NotificationCompat.Action { val pendingIntent = - if (this is NotificationAction.Tunnel.RequestPermission) { + if (this is NotificationAction.Tunnel.RequestVpnProfile) { val intent = Intent().apply { setClassName(context.packageName, MAIN_ACTIVITY_CLASS) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) setAction(KEY_REQUEST_VPN_PROFILE) - putExtra("intent", prepareIntent) } PendingIntent.getActivity(context, 1, intent, SdkUtils.getSupportedPendingIntentFlags()) @@ -91,7 +90,7 @@ fun NotificationAction.Tunnel.titleResource() = when (this) { NotificationAction.Tunnel.Cancel -> R.string.cancel NotificationAction.Tunnel.Connect, - is NotificationAction.Tunnel.RequestPermission -> R.string.connect + is NotificationAction.Tunnel.RequestVpnProfile -> R.string.connect NotificationAction.Tunnel.Disconnect -> R.string.disconnect NotificationAction.Tunnel.Dismiss -> R.string.dismiss } @@ -99,7 +98,7 @@ fun NotificationAction.Tunnel.titleResource() = fun NotificationAction.Tunnel.toKey() = when (this) { NotificationAction.Tunnel.Connect -> KEY_CONNECT_ACTION - is NotificationAction.Tunnel.RequestPermission -> KEY_REQUEST_VPN_PROFILE + is NotificationAction.Tunnel.RequestVpnProfile -> KEY_REQUEST_VPN_PROFILE NotificationAction.Tunnel.Cancel, NotificationAction.Tunnel.Disconnect, NotificationAction.Tunnel.Dismiss -> KEY_DISCONNECT_ACTION diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationProvider.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationProvider.kt index 74f513225642..6bdcc85235da 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationProvider.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/tunnelstate/TunnelStateNotificationProvider.kt @@ -23,12 +23,12 @@ import net.mullvad.mullvadvpn.lib.model.PrepareError import net.mullvad.mullvadvpn.lib.model.TunnelState import net.mullvad.mullvadvpn.lib.shared.ConnectionProxy import net.mullvad.mullvadvpn.lib.shared.DeviceRepository -import net.mullvad.mullvadvpn.lib.shared.VpnProfileRepository +import net.mullvad.mullvadvpn.lib.shared.VpnProfileUseCase import net.mullvad.mullvadvpn.service.notifications.NotificationProvider class TunnelStateNotificationProvider( connectionProxy: ConnectionProxy, - vpnPermissionRepository: VpnProfileRepository, + vpnPermissionRepository: VpnProfileUseCase, deviceRepository: DeviceRepository, channelId: NotificationChannelId, scope: CoroutineScope, @@ -122,12 +122,11 @@ class TunnelStateNotificationProvider( private fun NotificationTunnelState.toAction(): NotificationAction.Tunnel = when (this) { is NotificationTunnelState.Disconnected -> { - when (val error = prepareError) { + when (prepareError) { is PrepareError.OtherAlwaysOnApp, is PrepareError.LegacyLockdown, null -> NotificationAction.Tunnel.Connect - is PrepareError.NotPrepared -> - NotificationAction.Tunnel.RequestPermission(error.prepareIntent) + is PrepareError.NotPrepared -> NotificationAction.Tunnel.RequestVpnProfile } } NotificationTunnelState.Disconnecting -> NotificationAction.Tunnel.Connect