Improved the retrieving of savedStateHandle.

This commit is contained in:
MohitMaliFtechiz 2025-09-02 20:38:57 +05:30
parent 8fa15c12bd
commit 40b8222308
3 changed files with 11 additions and 9 deletions

View File

@ -36,6 +36,7 @@ import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions.Super
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions.Super.ShouldCall
import org.kiwix.kiwixmobile.core.downloader.downloadManager.ZERO
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.consumeObservable
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.getObservableNavigationResult
import org.kiwix.kiwixmobile.core.extensions.isFileExist
import org.kiwix.kiwixmobile.core.extensions.snack
import org.kiwix.kiwixmobile.core.extensions.toast
@ -89,11 +90,9 @@ class KiwixReaderFragment : CoreReaderFragment() {
private fun openPageInBookFromNavigationArguments() {
showProgressBarWithProgress(30)
val kiwixMainActivity = activity as? KiwixMainActivity
val savedStateHandle = kiwixMainActivity?.navController?.currentBackStackEntry?.savedStateHandle
val zimFileUri = savedStateHandle?.get<String>(ZIM_FILE_URI_KEY).orEmpty()
val pageUrl = savedStateHandle?.get<String>(PAGE_URL_KEY).orEmpty()
val searchItemTitle = savedStateHandle?.get<String>(SEARCH_ITEM_TITLE_KEY).orEmpty()
val zimFileUri = getNavigationResult(ZIM_FILE_URI_KEY, kiwixMainActivity)
val pageUrl = getNavigationResult(PAGE_URL_KEY, kiwixMainActivity)
val searchItemTitle = getNavigationResult(SEARCH_ITEM_TITLE_KEY, kiwixMainActivity)
coreReaderLifeCycleScope?.launch {
if (pageUrl.isNotEmpty()) {
if (zimFileUri.isNotEmpty()) {
@ -125,6 +124,9 @@ class KiwixReaderFragment : CoreReaderFragment() {
}
}
private fun getNavigationResult(key: String, kiwixMainActivity: KiwixMainActivity?) =
kiwixMainActivity?.getObservableNavigationResult<String>(key)?.value.orEmpty()
private suspend fun tryOpeningZimFile(zimFileUri: String) {
// Stop any ongoing WebView loading and clear the WebView list
// before setting a new ZIM file to the reader. This helps prevent native crashes.

View File

@ -101,7 +101,7 @@ object ActivityExtensions {
coreMainActivity.navController.popBackStack()
}
private fun <T> Activity.getObservableNavigationResult(key: String = "result") =
fun <T> Activity.getObservableNavigationResult(key: String = "result") =
if (coreMainActivity.isNavControllerInitialized) {
coreMainActivity.navController.currentBackStackEntry?.savedStateHandle
?.getLiveData<T>(key)

View File

@ -33,6 +33,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.consumeObservable
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.getObservableNavigationResult
import org.kiwix.kiwixmobile.core.extensions.browserIntent
import org.kiwix.kiwixmobile.core.extensions.isFileExist
import org.kiwix.kiwixmobile.core.extensions.update
@ -176,9 +177,8 @@ class CustomReaderFragment : CoreReaderFragment() {
private fun loadPageFromNavigationArguments() {
val customMainActivity = activity as? CustomMainActivity
val savedStateHandle =
customMainActivity?.navController?.currentBackStackEntry?.savedStateHandle
val pageUrl = savedStateHandle?.get<String>(PAGE_URL_KEY).orEmpty()
val pageUrl =
customMainActivity?.getObservableNavigationResult<String>(PAGE_URL_KEY)?.value.orEmpty()
if (pageUrl.isNotEmpty()) {
loadUrlWithCurrentWebview(pageUrl)
// Setup bookmark for current book