From 7fbe19feee3313aaac1e82506a98c282b96b8e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrikas=20Arnas=20Smi=C4=8Dius?= Date: Wed, 20 Sep 2023 12:52:26 +0300 Subject: [PATCH] Fix asking permission on IO thread crash --- library/src/main/java/com/vinted/coper/CoperImpl.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/vinted/coper/CoperImpl.kt b/library/src/main/java/com/vinted/coper/CoperImpl.kt index 50dae99..8363bdd 100644 --- a/library/src/main/java/com/vinted/coper/CoperImpl.kt +++ b/library/src/main/java/com/vinted/coper/CoperImpl.kt @@ -5,12 +5,14 @@ import androidx.fragment.app.FragmentManager import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock +import kotlinx.coroutines.withContext import kotlin.coroutines.resume @@ -79,9 +81,11 @@ internal class CoperImpl( } internal suspend fun getFragmentSafely(): CoperFragment { - val fragment = getAttachedFragment() - fragment.lifecycle.waitOnCreate() - return fragment + return withContext(Dispatchers.Main) { + val fragment = getAttachedFragment() + fragment.lifecycle.waitOnCreate() + fragment + } } private suspend fun getAttachedFragment(): CoperFragment {