Skip to content

Commit

Permalink
Merge pull request #3624 from kiwix/Issue#3536
Browse files Browse the repository at this point in the history
Fixed: Create only one reader and use it everywhere.
  • Loading branch information
kelson42 authored Aug 26, 2024
2 parents 4a9be43 + 2d0bc48 commit c3e17e5
Show file tree
Hide file tree
Showing 69 changed files with 1,032 additions and 534 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchRoomEntity
import org.kiwix.kiwixmobile.core.data.KiwixRoomDatabase
import org.kiwix.kiwixmobile.core.page.history.adapter.HistoryListItem
import org.kiwix.kiwixmobile.core.page.notes.adapter.NoteListItem
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import java.io.File

@RunWith(AndroidJUnit4::class)
class KiwixRoomDatabaseTest {
Expand Down Expand Up @@ -112,7 +114,7 @@ class KiwixRoomDatabaseTest {
assertThat(zimId, equalTo(historyItem.zimId))
assertThat(zimName, equalTo(historyItem.zimName))
assertThat(historyUrl, equalTo(historyItem.historyUrl))
assertThat(zimFilePath, equalTo(historyItem.zimFilePath))
assertThat(zimReaderSource, equalTo(historyItem.zimReaderSource))
assertThat(favicon, equalTo(historyItem.favicon))
assertThat(dateString, equalTo(historyItem.dateString))
assertThat(timeStamp, equalTo(historyItem.timeStamp))
Expand Down Expand Up @@ -152,7 +154,7 @@ class KiwixRoomDatabaseTest {
assertThat(zimId, equalTo(noteItem.zimId))
assertThat(zimUrl, equalTo(noteItem.zimUrl))
assertThat(title, equalTo(noteItem.title))
assertThat(zimFilePath, equalTo(noteItem.zimFilePath))
assertThat(zimReaderSource, equalTo(noteItem.zimReaderSource))
assertThat(noteFilePath, equalTo(noteItem.noteFilePath))
assertThat(favicon, equalTo(noteItem.favicon))
}
Expand Down Expand Up @@ -186,7 +188,9 @@ class KiwixRoomDatabaseTest {
databaseId: Long = 0L,
zimId: String = "1f88ab6f-c265-b-3ff-8f49-b7f4429503800",
zimName: String = "alpinelinux_en_all",
zimFilePath: String = "/storage/emulated/0/Download/alpinelinux_en_all_maxi_2023-01.zim",
zimReaderSource: ZimReaderSource = ZimReaderSource(
File("/storage/emulated/0/Download/alpinelinux_en_all_maxi_2023-01.zim")
),
timeStamp: Long = System.currentTimeMillis()
): HistoryListItem.HistoryItem =
HistoryListItem.HistoryItem(
Expand All @@ -195,7 +199,7 @@ class KiwixRoomDatabaseTest {
zimName = zimName,
historyUrl = historyUrl,
title = title,
zimFilePath = zimFilePath,
zimReaderSource = zimReaderSource,
favicon = null,
dateString = dateString,
timeStamp = timeStamp
Expand All @@ -205,14 +209,16 @@ class KiwixRoomDatabaseTest {
databaseId: Long = 0L,
zimId: String = "1f88ab6f-c265-b-3ff-8f49-b7f4429503800",
title: String = "Alpine Wiki",
zimFilePath: String = "/storage/emulated/0/Download/alpinelinux_en_all_maxi_2023-01.zim",
zimReaderSource: ZimReaderSource = ZimReaderSource(
File("/storage/emulated/0/Download/alpinelinux_en_all_maxi_2023-01.zim")
),
zimUrl: String,
noteFilePath: String = "/storage/emulated/0/Download/Notes/Alpine linux/AlpineNote.txt"
): NoteListItem = NoteListItem(
databaseId = databaseId,
zimId = zimId,
title = title,
zimFilePath = zimFilePath,
zimReaderSource = zimReaderSource,
zimUrl = zimUrl,
noteFilePath = noteFilePath,
null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import org.kiwix.kiwixmobile.core.dao.entities.BookmarkEntity
import org.kiwix.kiwixmobile.core.data.remote.ObjectBoxToLibkiwixMigrator
import org.kiwix.kiwixmobile.core.di.modules.DatabaseModule
import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.main.KiwixMainActivity
Expand Down Expand Up @@ -74,6 +75,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
expectedZimId,
expectedZimName,
expectedZimFilePath,
ZimReaderSource(File(expectedZimFilePath)),
expectedBookmarkUrl,
expectedTitle,
expectedFavicon
Expand Down Expand Up @@ -156,7 +158,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
val actualDataAfterMigration =
objectBoxToLibkiwixMigrator.libkiwixBookmarks.bookmarks().blockingFirst()
assertEquals(1, actualDataAfterMigration.size)
assertEquals(actualDataAfterMigration[0].zimFilePath, expectedZimFilePath)
assertEquals(actualDataAfterMigration[0].zimReaderSource?.toDatabase(), expectedZimFilePath)
assertEquals(actualDataAfterMigration[0].zimId, expectedZimId)
assertEquals(actualDataAfterMigration[0].title, expectedTitle)
assertEquals(actualDataAfterMigration[0].url, expectedBookmarkUrl)
Expand Down Expand Up @@ -185,6 +187,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
expectedZimId,
expectedZimName,
expectedZimFilePath,
ZimReaderSource(File(expectedZimFilePath)),
existingBookmarkUrl,
existingTitle,
expectedFavicon
Expand Down Expand Up @@ -226,6 +229,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
expectedZimId,
expectedZimName,
expectedZimFilePath,
ZimReaderSource(File(expectedZimFilePath)),
"https://alpine_linux/search_$i",
"title_$i",
expectedFavicon
Expand All @@ -250,6 +254,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
expectedZimId,
expectedZimName,
null,
null,
expectedBookmarkUrl,
expectedTitle,
expectedFavicon
Expand All @@ -261,7 +266,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
val actualDataAfterMigration =
objectBoxToLibkiwixMigrator.libkiwixBookmarks.bookmarks().blockingFirst()
assertEquals(1, actualDataAfterMigration.size)
assertEquals(actualDataAfterMigration[0].zimFilePath, null)
assertEquals(actualDataAfterMigration[0].zimReaderSource?.toDatabase(), null)
assertEquals(actualDataAfterMigration[0].zimId, expectedZimId)
assertEquals(actualDataAfterMigration[0].title, expectedTitle)
assertEquals(actualDataAfterMigration[0].url, expectedBookmarkUrl)
Expand All @@ -278,6 +283,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
expectedZimId,
expectedZimName,
nonExistingPath,
ZimReaderSource(File(nonExistingPath)),
expectedBookmarkUrl,
expectedTitle,
expectedFavicon
Expand All @@ -289,7 +295,7 @@ class ObjectBoxToLibkiwixMigratorTest : BaseActivityTest() {
val actualDataAfterMigration =
objectBoxToLibkiwixMigrator.libkiwixBookmarks.bookmarks().blockingFirst()
assertEquals(1, actualDataAfterMigration.size)
assertEquals(actualDataAfterMigration[0].zimFilePath, null)
assertEquals(actualDataAfterMigration[0].zimReaderSource?.toDatabase(), null)
assertEquals(actualDataAfterMigration[0].zimId, expectedZimId)
assertEquals(actualDataAfterMigration[0].title, expectedTitle)
assertEquals(actualDataAfterMigration[0].url, expectedBookmarkUrl)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ class ObjectBoxToRoomMigratorTest {
assertThat(zimId, equalTo(historyItem.zimId))
assertThat(zimName, equalTo(historyItem.zimName))
assertThat(historyUrl, equalTo(historyItem.historyUrl))
assertThat(zimFilePath, equalTo(historyItem.zimFilePath))
assertThat(zimReaderSource, equalTo(historyItem.zimReaderSource))
assertThat(favicon, equalTo(historyItem.favicon))
assertThat(dateString, equalTo(historyItem.dateString))
assertThat(timeStamp, equalTo(historyItem.timeStamp))
Expand Down Expand Up @@ -325,7 +325,7 @@ class ObjectBoxToRoomMigratorTest {
assertThat(zimId, equalTo(noteItem.zimId))
assertThat(zimUrl, equalTo(noteItem.zimUrl))
assertThat(title, equalTo(noteItem.title))
assertThat(zimFilePath, equalTo(noteItem.zimFilePath))
assertThat(zimReaderSource, equalTo(noteItem.zimReaderSource))
assertThat(noteFilePath, equalTo(noteItem.noteFilePath))
assertThat(favicon, equalTo(noteItem.favicon))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ import org.junit.Test
import org.kiwix.kiwixmobile.BaseActivityTest
import org.kiwix.kiwixmobile.core.DarkModeConfig
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.main.KiwixMainActivity
import org.kiwix.kiwixmobile.testutils.TestUtils.closeSystemDialogs
import org.kiwix.kiwixmobile.testutils.TestUtils.isSystemUINotRespondingDialogVisible
import org.kiwix.libzim.Archive
import org.kiwix.libzim.SuggestionSearcher
import java.io.File
import java.io.FileOutputStream
Expand Down Expand Up @@ -81,12 +81,11 @@ class MimeTypeTest : BaseActivityTest() {
}
}
}
val archive = Archive(zimFile.canonicalPath)
val zimSource = ZimReaderSource(zimFile)
val archive = zimSource.createArchive()
val zimFileReader = ZimFileReader(
zimFile,
emptyList(),
null,
archive,
zimSource,
archive!!,
DarkModeConfig(SharedPreferenceUtil(context), context),
SuggestionSearcher(archive)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ class LibkiwixBookmarkTest : BaseActivityTest() {
LibkiwixBookmarkItem(
bookmark,
coreReaderFragment.zimReaderContainer?.zimFileReader?.favicon,
coreReaderFragment.zimReaderContainer?.zimFileReader?.zimFile?.canonicalPath
coreReaderFragment.zimReaderContainer?.zimFileReader?.zimReaderSource
)
coreReaderFragment.libkiwixBookmarks?.saveBookmark(libkiwixItem).also {
bookmarkList.add(libkiwixItem)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ import org.junit.Test
import org.kiwix.kiwixmobile.BaseActivityTest
import org.kiwix.kiwixmobile.core.DarkModeConfig
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.main.KiwixMainActivity
import org.kiwix.kiwixmobile.testutils.TestUtils
import org.kiwix.libzim.Archive
import org.kiwix.libzim.SuggestionSearcher
import java.io.File
import java.io.FileOutputStream
Expand Down Expand Up @@ -89,12 +89,11 @@ class EncodedUrlTest : BaseActivityTest() {
}
}
}
val archive = Archive(zimFile.canonicalPath)
val zimReaderSource = ZimReaderSource(zimFile)
val archive = zimReaderSource.createArchive()
val zimFileReader = ZimFileReader(
zimFile,
emptyList(),
null,
archive,
zimReaderSource,
archive!!,
DarkModeConfig(SharedPreferenceUtil(context), context),
SuggestionSearcher(archive)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ import org.kiwix.kiwixmobile.BaseActivityTest
import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.core.DarkModeConfig
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.main.KiwixMainActivity
import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections
import org.kiwix.kiwixmobile.page.history.navigationHistory
import org.kiwix.kiwixmobile.testutils.RetryRule
import org.kiwix.kiwixmobile.testutils.TestUtils
import org.kiwix.libzim.Archive
import org.kiwix.libzim.SuggestionSearcher
import java.io.File
import java.io.FileOutputStream
Expand Down Expand Up @@ -118,12 +118,11 @@ class ZimFileReaderWithSplittedZimFileTest : BaseActivityTest() {
fun testWithExtraZeroSizeFile() {
createAndGetSplitedZimFile(true)?.let { zimFile ->
// test the articleCount and mediaCount of this zim file.
val archive = Archive(zimFile.canonicalPath)
val zimReaderSource = ZimReaderSource(zimFile)
val archive = zimReaderSource.createArchive()
val zimFileReader = ZimFileReader(
zimFile,
emptyList(),
null,
archive,
zimReaderSource,
archive!!,
DarkModeConfig(SharedPreferenceUtil(context), context),
SuggestionSearcher(archive)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class HistoryRoomDaoTest {
assertThat(zimId, equalTo(historyItem.zimId))
assertThat(zimName, equalTo(historyItem.zimName))
assertThat(historyUrl, equalTo(historyItem.historyUrl))
assertThat(zimFilePath, equalTo(historyItem.zimFilePath))
assertThat(zimReaderSource, equalTo(historyItem.zimReaderSource))
assertThat(favicon, equalTo(historyItem.favicon))
assertThat(dateString, equalTo(historyItem.dateString))
assertThat(timeStamp, equalTo(historyItem.timeStamp))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class NoteRoomDaoTest {
assertThat(zimId, equalTo(noteItem.zimId))
assertThat(zimUrl, equalTo(noteItem.zimUrl))
assertThat(title, equalTo(noteItem.title))
assertThat(zimFilePath, equalTo(noteItem.zimFilePath))
assertThat(zimReaderSource, equalTo(noteItem.zimReaderSource))
assertThat(noteFilePath, equalTo(noteItem.noteFilePath))
assertThat(favicon, equalTo(noteItem.favicon))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ class KiwixMainActivity : CoreMainActivity() {
{
intent.getStringExtra(DOWNLOAD_NOTIFICATION_TITLE)?.let {
newBookDao.bookMatching(it)?.let { bookOnDiskEntity ->
openZimFromFilePath(bookOnDiskEntity.file.path)
openZimFromFilePath(bookOnDiskEntity.zimReaderSource.toDatabase())
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,12 @@ import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomnavigation.BottomNavigationView
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.core.R.string
import org.kiwix.kiwixmobile.cachedComponent
import org.kiwix.kiwixmobile.core.R.string
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.base.BaseFragment
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.isManageExternalStoragePermissionGranted
Expand All @@ -75,6 +77,7 @@ import org.kiwix.kiwixmobile.core.main.MainRepositoryActions
import org.kiwix.kiwixmobile.core.navigateToAppSettings
import org.kiwix.kiwixmobile.core.navigateToSettings
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderSource
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import org.kiwix.kiwixmobile.core.utils.SimpleRecyclerViewScrollListener
Expand Down Expand Up @@ -404,10 +407,10 @@ class LocalLibraryFragment : BaseFragment() {
// local library screen. Since our application is already aware of this opened ZIM file,
// we can directly add it to the database.
// See https://github.com/kiwix/kiwix-android/issues/3650
runBlocking {
zimReaderFactory.create(file)
CoroutineScope(Dispatchers.IO).launch {
zimReaderFactory.create(ZimReaderSource(file))
?.let { zimFileReader ->
BookOnDisk(file, zimFileReader).also {
BookOnDisk(zimFileReader).also {
mainRepositoryActions.saveBook(it)
zimFileReader.dispose()
}
Expand Down
Loading

0 comments on commit c3e17e5

Please sign in to comment.