Skip to content

Commit 87e9f48

Browse files
Auth: Avoid ANR during droidguard login (#3192)
Co-authored-by: Marvin W <git@larma.de>
1 parent 0d121e8 commit 87e9f48

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

play-services-core/src/main/kotlin/org/microg/gms/auth/login/DroidGuardHandler.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,34 @@
55

66
package org.microg.gms.auth.login
77

8+
import android.util.Log
89
import androidx.lifecycle.lifecycleScope
910
import com.google.android.gms.droidguard.DroidGuardClient
1011
import com.google.android.gms.tasks.await
11-
import java.util.*
12+
import kotlinx.coroutines.Dispatchers
13+
import kotlinx.coroutines.launch
14+
import kotlinx.coroutines.withContext
15+
import java.util.Collections
16+
17+
private const val TAG = "DroidGuardHandler"
1218

1319
class DroidGuardHandler(private val activity: LoginActivity) {
1420
fun start(dg: String) {
15-
activity.lifecycleScope.launchWhenStarted {
21+
activity.lifecycleScope.launch {
22+
Log.d(TAG, "getDroidGuardResult start ${Thread.currentThread().name}")
23+
val start = System.currentTimeMillis()
1624
try {
17-
val result = DroidGuardClient.getResults(activity, "minute_maid", Collections.singletonMap("dg_minutemaid", dg)).await()
18-
activity.runScript("window.setDgResult('$result')")
25+
val result = withContext(Dispatchers.IO) {
26+
DroidGuardClient.getResults(activity, "minute_maid", Collections.singletonMap("dg_minutemaid", dg)).await()
27+
}
28+
Log.d(TAG, "start: result: $result")
29+
withContext(Dispatchers.Main) {
30+
activity.runScript("window.setDgResult('$result')")
31+
}
1932
} catch (e: Exception) {
2033
// Ignore
2134
}
35+
Log.d(TAG, "getDroidGuardResult end " + (System.currentTimeMillis() - start))
2236
}
2337
}
2438
}

0 commit comments

Comments
 (0)