Suspended setZimReaderSource and switched to IO when creating ZimFileReader

This commit is contained in:
MohitMaliFtechiz 2025-01-18 15:58:15 +05:30
parent 948b8cce20
commit 9d4db58ce4

View File

@ -18,7 +18,9 @@
package org.kiwix.kiwixmobile.core.reader package org.kiwix.kiwixmobile.core.reader
import android.webkit.WebResourceResponse import android.webkit.WebResourceResponse
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.kiwix.kiwixmobile.core.reader.ZimFileReader.Factory import org.kiwix.kiwixmobile.core.reader.ZimFileReader.Factory
import java.net.HttpURLConnection import java.net.HttpURLConnection
import javax.inject.Inject import javax.inject.Inject
@ -32,11 +34,11 @@ class ZimReaderContainer @Inject constructor(private val zimFileReaderFactory: F
field = value field = value
} }
fun setZimReaderSource(zimReaderSource: ZimReaderSource?) { suspend fun setZimReaderSource(zimReaderSource: ZimReaderSource?) {
if (zimReaderSource == zimFileReader?.zimReaderSource) { if (zimReaderSource == zimFileReader?.zimReaderSource) {
return return
} }
zimFileReader = runBlocking { zimFileReader = withContext(Dispatchers.IO) {
if (zimReaderSource?.exists() == true && zimReaderSource.canOpenInLibkiwix()) if (zimReaderSource?.exists() == true && zimReaderSource.canOpenInLibkiwix())
zimFileReaderFactory.create(zimReaderSource) zimFileReaderFactory.create(zimReaderSource)
else null else null