diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt index 5ce71accb..f942e2867 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt @@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.data.cache import android.content.Context import android.text.format.Formatter import com.jakewharton.disklrucache.DiskLruCache -import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.domain.chapter.model.Chapter import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.util.storage.DiskUtil @@ -235,6 +235,6 @@ class ChapterCache(private val context: Context) { } private fun getKey(chapter: Chapter): String { - return "${chapter.manga_id}${chapter.url}" + return "${chapter.mangaId}${chapter.url}" } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt index 57aa2b02b..66c027d08 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt @@ -359,7 +359,7 @@ open class BrowseSourcePresenter( if (!manga.favorite) { manga.removeCovers(coverCache) } else { - ChapterSettingsHelper.applySettingDefaults(manga) + ChapterSettingsHelper.applySettingDefaults(manga.toDomainManga()!!) autoAddTrack(manga) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt index d464a66bf..08d9af51f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt @@ -8,7 +8,6 @@ import androidx.core.view.isVisible import com.bluelinelabs.conductor.Router import com.google.android.material.dialog.MaterialAlertDialogBuilder import eu.kanade.domain.manga.model.Manga -import eu.kanade.domain.manga.model.toDbManga import eu.kanade.domain.manga.model.toTriStateGroupState import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.manga.MangaPresenter @@ -80,7 +79,7 @@ class ChaptersSettingsSheet( onMenuItemClick = { when (itemId) { R.id.set_as_default -> { - SetChapterSettingsDialog(presenter.manga!!.toDbManga()).showDialog(router) + SetChapterSettingsDialog(presenter.manga!!).showDialog(router) } } }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetChapterSettingsDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetChapterSettingsDialog.kt index a94c0fc89..2b82892d6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetChapterSettingsDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/SetChapterSettingsDialog.kt @@ -4,8 +4,8 @@ import android.app.Dialog import android.os.Bundle import androidx.core.os.bundleOf import com.google.android.material.dialog.MaterialAlertDialogBuilder +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.util.chapter.ChapterSettingsHelper import eu.kanade.tachiyomi.util.system.toast diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 997a829f6..f6196f888 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -117,7 +117,7 @@ class ReaderPresenter( // SY --> var meta: RaisedSearchMetadata? = null private set - var mergedManga: Map? = null + var mergedManga: Map? = null private set // SY <-- @@ -322,8 +322,8 @@ class ReaderPresenter( val context = Injekt.get() val source = sourceManager.getOrStub(manga.source) val mergedReferences = if (source is MergedSource) runBlocking { getMergedReferencesById.await(manga.id!!) } else emptyList() - mergedManga = if (source is MergedSource) runBlocking { getMergedManga.await() }.map { it.toDbManga() }.associateBy { it.id!! } else emptyMap() - loader = ChapterLoader(context, downloadManager, manga, source, sourceManager, mergedReferences, mergedManga ?: emptyMap()) + mergedManga = if (source is MergedSource) runBlocking { getMergedManga.await() }.associateBy { it.id } else emptyMap() + loader = ChapterLoader(context, downloadManager, manga.toDomainManga()!!, source, sourceManager, mergedReferences, mergedManga ?: emptyMap()) Observable.just(manga).subscribeLatestCache(ReaderActivity::setManga) viewerChaptersRelay.subscribeLatestCache(ReaderActivity::setChapters) @@ -1024,7 +1024,7 @@ class ReaderPresenter( val manga = if (mergedManga.isNullOrEmpty()) { manga } else { - mergedManga.orEmpty()[chapter.chapter.manga_id] + mergedManga.orEmpty()[chapter.chapter.manga_id]?.toDbManga() } ?: return // SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt index 81897b72f..af319659a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt @@ -1,8 +1,8 @@ package eu.kanade.tachiyomi.ui.reader.loader import android.content.Context +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source @@ -88,14 +88,14 @@ class ChapterLoader( */ private fun getPageLoader(chapter: ReaderChapter): PageLoader { val dbChapter = chapter.chapter - val isDownloaded = downloadManager.isChapterDownloaded(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, manga.source, skipCache = true) + val isDownloaded = downloadManager.isChapterDownloaded(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source, skipCache = true) return when { // SY --> source is MergedSource -> { val mangaReference = mergedReferences.firstOrNull { it.mangaId == chapter.chapter.manga_id } ?: error("Merge reference null") val source = sourceManager.get(mangaReference.mangaSourceId) ?: error("Source ${mangaReference.mangaSourceId} was null") val manga = mergedManga[chapter.chapter.manga_id] ?: error("Manga for merged chapter was null") - val isMergedMangaDownloaded = downloadManager.isChapterDownloaded(chapter.chapter.name, chapter.chapter.scanlator, manga.originalTitle, manga.source, true) + val isMergedMangaDownloaded = downloadManager.isChapterDownloaded(chapter.chapter.name, chapter.chapter.scanlator, manga.ogTitle, manga.source, true) when { isMergedMangaDownloaded -> DownloadPageLoader(chapter, manga, source, downloadManager) source is HttpSource -> HttpPageLoader(chapter, source) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt index 9ea9b30d2..66212d0d4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt @@ -3,7 +3,8 @@ package eu.kanade.tachiyomi.ui.reader.loader import android.app.Application import android.net.Uri import com.hippo.unifile.UniFile -import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.domain.manga.model.Manga +import eu.kanade.domain.manga.model.toDbManga import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.model.Page @@ -31,7 +32,7 @@ class DownloadPageLoader( */ override fun getPages(): Observable> { val dbChapter = chapter.chapter - val chapterPath = downloadManager.provider.findChapterDir(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, source) + val chapterPath = downloadManager.provider.findChapterDir(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, source) return if (chapterPath?.isFile == true) { getPagesFromArchive(chapterPath) } else { @@ -45,7 +46,7 @@ class DownloadPageLoader( } private fun getPagesFromDirectory(): Observable> { - return downloadManager.buildPageList(source, manga, chapter.chapter) + return downloadManager.buildPageList(source, manga.toDbManga(), chapter.chapter) .map { pages -> pages.map { page -> ReaderPage(page.index, page.url, page.imageUrl) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt index 8c98fea79..66bbabe01 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.reader.loader import eu.kanade.tachiyomi.data.cache.ChapterCache +import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.online.HttpSource @@ -90,7 +91,7 @@ class HttpPageLoader( .fromAction { // Convert to pages without reader information val pagesToSave = pages.map { Page(it.index, it.url, it.imageUrl) } - chapterCache.putPageListToCache(chapter.chapter, pagesToSave) + chapterCache.putPageListToCache(chapter.chapter.toDomainChapter()!!, pagesToSave) } .onErrorComplete() .subscribeOn(Schedulers.io()) @@ -103,7 +104,7 @@ class HttpPageLoader( * the local cache, otherwise fallbacks to network. */ override fun getPages(): Observable> { - return Observable.fromCallable { chapterCache.getPageListFromCache(chapter.chapter) } + return Observable.fromCallable { chapterCache.getPageListFromCache(chapter.chapter.toDomainChapter()!!) } .onErrorResumeNext { source.fetchPageList(chapter.chapter) } .map { pages -> // SY --> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt index 64853058c..6dd9d4c39 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/MissingChapters.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer -import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.domain.chapter.model.Chapter +import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import kotlin.math.floor @@ -8,7 +9,7 @@ private val pattern = Regex("""\d+""") fun hasMissingChapters(higherReaderChapter: ReaderChapter?, lowerReaderChapter: ReaderChapter?): Boolean { if (higherReaderChapter == null || lowerReaderChapter == null) return false - return hasMissingChapters(higherReaderChapter.chapter, lowerReaderChapter.chapter) + return hasMissingChapters(higherReaderChapter.chapter.toDomainChapter(), lowerReaderChapter.chapter.toDomainChapter()) } fun hasMissingChapters(higherChapter: Chapter?, lowerChapter: Chapter?): Boolean { @@ -17,7 +18,7 @@ fun hasMissingChapters(higherChapter: Chapter?, lowerChapter: Chapter?): Boolean if (!pattern.containsMatchIn(higherChapter.name) || !pattern.containsMatchIn(lowerChapter.name)) return false // Check if potential chapter number was recognized as chapter number if (!higherChapter.isRecognizedNumber || !lowerChapter.isRecognizedNumber) return false - return hasMissingChapters(higherChapter.chapter_number, lowerChapter.chapter_number) + return hasMissingChapters(higherChapter.chapterNumber, lowerChapter.chapterNumber) } fun hasMissingChapters(higherChapterNumber: Float, lowerChapterNumber: Float): Boolean { @@ -27,7 +28,7 @@ fun hasMissingChapters(higherChapterNumber: Float, lowerChapterNumber: Float): B fun calculateChapterDifference(higherReaderChapter: ReaderChapter?, lowerReaderChapter: ReaderChapter?): Float { if (higherReaderChapter == null || lowerReaderChapter == null) return 0f - return calculateChapterDifference(higherReaderChapter.chapter, lowerReaderChapter.chapter) + return calculateChapterDifference(higherReaderChapter.chapter.toDomainChapter(), lowerReaderChapter.chapter.toDomainChapter()) } fun calculateChapterDifference(higherChapter: Chapter?, lowerChapter: Chapter?): Float { @@ -36,7 +37,7 @@ fun calculateChapterDifference(higherChapter: Chapter?, lowerChapter: Chapter?): if (!pattern.containsMatchIn(higherChapter.name) || !pattern.containsMatchIn(lowerChapter.name)) return 0f // Check if potential chapter number was recognized as chapter number if (!higherChapter.isRecognizedNumber || !lowerChapter.isRecognizedNumber) return 0f - return calculateChapterDifference(higherChapter.chapter_number, lowerChapter.chapter_number) + return calculateChapterDifference(higherChapter.chapterNumber, lowerChapter.chapterNumber) } fun calculateChapterDifference(higherChapterNumber: Float, lowerChapterNumber: Float): Float { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSettingsHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSettingsHelper.kt index 88706dacf..ec8ec6c04 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSettingsHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSettingsHelper.kt @@ -2,7 +2,8 @@ package eu.kanade.tachiyomi.util.chapter import eu.kanade.domain.manga.interactor.GetFavorites import eu.kanade.domain.manga.interactor.SetMangaChapterFlags -import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.domain.manga.model.Manga +import eu.kanade.domain.manga.model.toDbManga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.lang.launchIO import uy.kohesive.injekt.injectLazy @@ -17,7 +18,7 @@ object ChapterSettingsHelper { * Updates the global Chapter Settings in Preferences. */ fun setGlobalSettings(manga: Manga) { - prefs.setChapterSettingsDefault(manga) + prefs.setChapterSettingsDefault(manga.toDbManga()) } /** @@ -26,7 +27,7 @@ object ChapterSettingsHelper { fun applySettingDefaults(manga: Manga) { launchIO { setMangaChapterFlags.awaitSetAllFlags( - mangaId = manga.id!!, + mangaId = manga.id, unreadFilter = prefs.filterChapterByRead().toLong(), downloadedFilter = prefs.filterChapterByDownloaded().toLong(), bookmarkedFilter = prefs.filterChapterByBookmarked().toLong(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt deleted file mode 100644 index cec3615c6..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt +++ /dev/null @@ -1,37 +0,0 @@ -package eu.kanade.tachiyomi.util.chapter - -import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource -import eu.kanade.domain.chapter.model.toDbChapter -import eu.kanade.tachiyomi.data.database.models.toDomainManga -import eu.kanade.tachiyomi.source.Source -import eu.kanade.tachiyomi.source.model.SChapter -import kotlinx.coroutines.runBlocking -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter -import eu.kanade.tachiyomi.data.database.models.Manga as DbManga - -/** - * Helper method for syncing the list of chapters from the source with the ones from the database. - * - * @param rawSourceChapters a list of chapters from the source. - * @param manga the manga of the chapters. - * @param source the source of the chapters. - * @return a pair of new insertions and deletions. - */ -fun syncChaptersWithSource( - rawSourceChapters: List, - manga: DbManga, - source: Source, - syncChaptersWithSource: SyncChaptersWithSource = Injekt.get(), -): Pair, List> { - val domainManga = manga.toDomainManga() ?: return Pair(emptyList(), emptyList()) - val (added, deleted) = runBlocking { - syncChaptersWithSource.await(rawSourceChapters, domainManga, source) - } - - val addedDbChapters = added.map { it.toDbChapter() } - val deletedDbChapters = deleted.map { it.toDbChapter() } - - return Pair(addedDbChapters, deletedDbChapters) -}