summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-08 13:39:35 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-12 13:19:37 +0000
commit29b7d99e20b3a42f4f65cf2cca51a129e408ecfa (patch)
treeb185beca56b5208e7c30816f21558bd1f51157ee /android
parentec8118b9a1dc6a112f1142e6e81b6bbe668dfc24 (diff)
downloadmullvadvpn-29b7d99e20b3a42f4f65cf2cca51a129e408ecfa.tar.xz
mullvadvpn-29b7d99e20b3a42f4f65cf2cca51a129e408ecfa.zip
Create new `VpnPermission` helper class
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt35
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)
+ }
+}