diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt b/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt
index b5e15d5e7..e83808ae9 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt
+++ b/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt
@@ -18,6 +18,7 @@
package org.kiwix.kiwixmobile
+import android.os.Bundle
import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavDirections
@@ -41,6 +42,9 @@ fun AppCompatActivity.navigate(action: NavDirections) =
fun AppCompatActivity.navigate(@IdRes fragmentId: Int) =
findNavController(R.id.nav_host_fragment).navigate(fragmentId)
+fun AppCompatActivity.navigate(@IdRes fragmentId: Int, bundle: Bundle) =
+ findNavController(R.id.nav_host_fragment).navigate(fragmentId, bundle)
+
internal inline val BaseActivity.kiwixActivityComponent
get() = kiwixComponent
.activityComponentBuilder()
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
index 8b330b5bb..ef3dab75f 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
+++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
@@ -24,6 +24,7 @@ import android.view.MenuItem
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.Toolbar
+import androidx.core.os.bundleOf
import androidx.navigation.NavController
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
@@ -158,8 +159,8 @@ class KiwixMainActivity : CoreMainActivity() {
closeNavigationDrawer()
}
- override fun openPage(pageUrl: String, zimFilePath: String?) {
- navigate(R.id.navigation_reader)
- // openZimFile(file)
+ override fun openPage(pageUrl: String, zimFilePath: String) {
+ val bundle = bundleOf("pageUrl" to pageUrl, "zimFileUri" to zimFilePath)
+ navigate(R.id.navigation_reader, bundle)
}
}
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/ReaderFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/ReaderFragment.kt
index 9fe7a20fe..c1c3c5095 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/ReaderFragment.kt
+++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/ReaderFragment.kt
@@ -31,6 +31,7 @@ import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup
+import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.net.toFile
import androidx.drawerlayout.widget.DrawerLayout
@@ -74,7 +75,17 @@ class ReaderFragment : CoreReaderFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
- manageExternalLaunchAndRestoringViewState(args.zimFileUri)
+ if (arguments != null) {
+ val args = ReaderFragmentArgs.fromBundle(requireArguments())
+ if (args.pageUrl.isNotEmpty()) {
+ if (args.zimFileUri.isNotEmpty()) {
+ tryOpeningZimFile(args)
+ }
+ loadUrlWithCurrentWebview(args.pageUrl)
+ } else {
+ manageExternalLaunchAndRestoringViewState(args.zimFileUri)
+ }
+ }
val activity = activity as CoreMainActivity
noOpenBookButton.setOnClickListener {
activity.navigate(
@@ -86,6 +97,16 @@ class ReaderFragment : CoreReaderFragment() {
setFragmentContainerBottomMarginToSizeOfNavBar()
}
+ private fun tryOpeningZimFile(args: ReaderFragmentArgs) {
+ val file = File(args.zimFileUri)
+ if (!file.exists()) {
+ Toast.makeText(activity, R.string.error_file_not_found, Toast.LENGTH_LONG)
+ .show()
+ return
+ }
+ openZimFile(file)
+ }
+
override fun loadDrawerViews() {
drawerLayout = requireActivity().findViewById(R.id.navigation_container)
tableDrawerRightContainer = requireActivity().findViewById(R.id.reader_drawer_nav_view)
diff --git a/app/src/main/res/navigation/kiwix_nav_graph.xml b/app/src/main/res/navigation/kiwix_nav_graph.xml
index e32c896ee..6b92f65b0 100644
--- a/app/src/main/res/navigation/kiwix_nav_graph.xml
+++ b/app/src/main/res/navigation/kiwix_nav_graph.xml
@@ -27,6 +27,11 @@
android:name="zimFileUri"
android:defaultValue=""
app:argType="string" />
+
+
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
index c943cf01b..941e48211 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
@@ -125,5 +125,5 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider,
abstract fun openSettingsActivity()
abstract fun openHistoryActivity()
abstract fun openBookmarksActivity()
- abstract fun openPage(pageUrl: String, zimFilePath: String? = null)
+ abstract fun openPage(pageUrl: String, zimFilePath: String = "")
}
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java
index 615c90beb..83b6e71e9 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.java
@@ -789,7 +789,7 @@ public abstract class CoreReaderFragment extends BaseFragment
loadUrlWithCurrentWebview("javascript:(" + documentParserJs + ")()");
}
- private void loadUrlWithCurrentWebview(String url) {
+ protected void loadUrlWithCurrentWebview(String url) {
loadUrl(url, getCurrentWebView());
}
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/effects/OpenPage.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/effects/OpenPage.kt
index 29cf28a4f..eda02c310 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/effects/OpenPage.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/viewmodel/effects/OpenPage.kt
@@ -18,31 +18,19 @@
package org.kiwix.kiwixmobile.core.page.viewmodel.effects
-import android.app.Activity
-import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.page.adapter.Page
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
-import org.kiwix.kiwixmobile.core.utils.EXTRA_CHOSE_X_FILE
-import org.kiwix.kiwixmobile.core.utils.EXTRA_CHOSE_X_URL
data class OpenPage(
private val page: Page,
private val zimReaderContainer: ZimReaderContainer
) : SideEffect {
override fun invokeWith(activity: AppCompatActivity) {
- activity.setResult(
- Activity.RESULT_OK,
- Intent().putExtra(EXTRA_CHOSE_X_URL, page.url).apply {
- if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
- putExtra(EXTRA_CHOSE_X_FILE, page.zimFilePath)
- }
- }
- )
if (page.zimFilePath != zimReaderContainer.zimCanonicalPath) {
- (activity as CoreMainActivity).openPage(page.url, page.zimFilePath)
+ (activity as CoreMainActivity).openPage(page.url, page.zimFilePath!!)
} else {
(activity as CoreMainActivity).openPage(page.url)
}
diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
index 7ea0583e6..1640a46e1 100644
--- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
+++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
@@ -85,7 +85,7 @@ class CustomMainActivity : CoreMainActivity() {
//
}
- override fun openPage(pageUrl: String, zimFilePath: String?) {
+ override fun openPage(pageUrl: String, zimFilePath: String) {
//
}
}