From e1e29d32687b0e76610c769fafd8a0c0580e9fef Mon Sep 17 00:00:00 2001 From: Farhan Arshad Date: Thu, 5 Sep 2024 01:11:32 +0500 Subject: [PATCH] fix: `IllegalStateException` on `supportFragmentManager.popBackStack()` - Ensure `MutableStateFlow` is lifecycle-aware by utilizing `collectAsStateWithLifecycle`. --- core/build.gradle | 1 + .../openedx/course/settings/download/DownloadQueueFragment.kt | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index dce265ef3..f135f62fd 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -114,6 +114,7 @@ dependencies { api "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" api "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" api "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" + api "androidx.lifecycle:lifecycle-runtime-compose:$lifecycle_version" // Fullstory api 'com.fullstory:instrumentation-full:1.47.0@aar' diff --git a/course/src/main/java/org/openedx/course/settings/download/DownloadQueueFragment.kt b/course/src/main/java/org/openedx/course/settings/download/DownloadQueueFragment.kt index ea2b40e4b..3db1ee158 100644 --- a/course/src/main/java/org/openedx/course/settings/download/DownloadQueueFragment.kt +++ b/course/src/main/java/org/openedx/course/settings/download/DownloadQueueFragment.kt @@ -23,7 +23,6 @@ import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -41,6 +40,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.core.os.bundleOf import androidx.fragment.app.Fragment +import androidx.lifecycle.compose.collectAsStateWithLifecycle import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.core.parameter.parametersOf import org.openedx.core.module.db.DownloadModel @@ -80,7 +80,7 @@ class DownloadQueueFragment : Fragment() { setContent { OpenEdXTheme { val windowSize = rememberWindowSize() - val uiState by viewModel.uiState.collectAsState(DownloadQueueUIState.Loading) + val uiState by viewModel.uiState.collectAsStateWithLifecycle(DownloadQueueUIState.Loading) DownloadQueueScreen( windowSize = windowSize,