diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-11 23:38:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-01-07 14:03:29 +0000 |
| commit | e707a93c064909ba011894d4a09c095dd5d86fa8 (patch) | |
| tree | 35b2c72013193474b6a6b39d7f19d67c959f3520 /android | |
| parent | 8dc89d4ee26e3eac522dc7b43dae3b9cb9245a63 (diff) | |
| download | mullvadvpn-e707a93c064909ba011894d4a09c095dd5d86fa8.tar.xz mullvadvpn-e707a93c064909ba011894d4a09c095dd5d86fa8.zip | |
Fetch WWW auth. token in the background
Diffstat (limited to 'android')
3 files changed, 6 insertions, 14 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/WwwAuthTokenRetriever.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/WwwAuthTokenRetriever.kt index 41f778c349..cc633f0b22 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/WwwAuthTokenRetriever.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/WwwAuthTokenRetriever.kt @@ -3,20 +3,12 @@ package net.mullvad.mullvadvpn.dataproxy import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch +import kotlinx.coroutines.async import net.mullvad.mullvadvpn.service.MullvadDaemon -class WwwAuthTokenRetriever(val asyncDaemon: Deferred<MullvadDaemon>) { - private var daemon: MullvadDaemon? = null - private val setUpJob = setUp() - - private fun setUp() = GlobalScope.launch(Dispatchers.Default) { - daemon = asyncDaemon.await() - } - - suspend fun getAuthToken(): String { - setUpJob.join() +class WwwAuthTokenRetriever(val daemon: Deferred<MullvadDaemon>) { + suspend fun getAuthToken() = GlobalScope.async(Dispatchers.Default) { // returning an empty string is valid in case of any failures - return daemon?.getWwwAuthToken() ?: "" + daemon.await().getWwwAuthToken() } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt index 43805321aa..fad7f63011 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt @@ -62,7 +62,7 @@ class NotificationBanner( override fun onClick(): Job { return GlobalScope.launch(Dispatchers.Main) { - val token = authTokenRetriever.getAuthToken() + val token = authTokenRetriever.getAuthToken().await() val url = Uri.parse(keyManagementUrl + "?token=" + token) context.startActivity(Intent(Intent.ACTION_VIEW, url)) } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt index 7bf8174ebe..f0e89a9328 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt @@ -85,7 +85,7 @@ class WireguardKeyFragment : ServiceDependentFragment() { override fun onClick(): Job { return GlobalScope.launch(Dispatchers.Default) { - val token = wwwAuthTokenRetriever.getAuthToken() + val token = wwwAuthTokenRetriever.getAuthToken().await() val intent = Intent(Intent.ACTION_VIEW, Uri.parse(keyUrl + "?token=" + token)) startActivity(intent) |
