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

View File

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