diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-08 13:39:35 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-12 13:19:37 +0000 |
| commit | 29b7d99e20b3a42f4f65cf2cca51a129e408ecfa (patch) | |
| tree | b185beca56b5208e7c30816f21558bd1f51157ee /android/src/main | |
| parent | ec8118b9a1dc6a112f1142e6e81b6bbe668dfc24 (diff) | |
| download | mullvadvpn-29b7d99e20b3a42f4f65cf2cca51a129e408ecfa.tar.xz mullvadvpn-29b7d99e20b3a42f4f65cf2cca51a129e408ecfa.zip | |
Create new `VpnPermission` helper class
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt new file mode 100644 index 0000000000..1c59a51cfe --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt @@ -0,0 +1,35 @@ +package net.mullvad.mullvadvpn.service.endpoint + +import android.content.Context +import android.content.Intent +import android.net.VpnService +import net.mullvad.mullvadvpn.ui.MainActivity +import net.mullvad.mullvadvpn.util.Intermittent + +class VpnPermission(private val context: Context) { + private val isGranted = Intermittent<Boolean>() + + suspend fun request(): Boolean { + val intent = VpnService.prepare(context) + + if (intent == null) { + isGranted.update(true) + } else { + val activityIntent = Intent(context, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + putExtra(MainActivity.KEY_SHOULD_CONNECT, true) + } + + isGranted.update(null) + + context.startActivity(activityIntent) + } + + return isGranted.await() + } + + suspend fun grant(permission: Boolean) { + isGranted.update(permission) + } +} |
