From 3dcf50704c4e3f8eb4d55c3d865d6d37a6e3f1d9 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 21 Aug 2022 00:06:17 -0400 Subject: [PATCH] Remove 1.x source models Co-Authored-By: stevenyomi <95685115+stevenyomi@users.noreply.github.com> --- app/build.gradle.kts | 3 -- .../data/backup/AbstractBackupManager.kt | 5 +- .../data/backup/legacy/LegacyBackupManager.kt | 6 +-- .../tachiyomi/data/database/models/Manga.kt | 14 ----- .../data/library/LibraryUpdateService.kt | 7 +-- .../eu/kanade/tachiyomi/source/LocalSource.kt | 54 ++++++++----------- .../java/eu/kanade/tachiyomi/source/Source.kt | 35 ++++-------- .../kanade/tachiyomi/source/SourceManager.kt | 8 ++- .../eu/kanade/tachiyomi/source/model/Page.kt | 14 ----- .../kanade/tachiyomi/source/model/SChapter.kt | 22 -------- .../kanade/tachiyomi/source/model/SManga.kt | 40 +++++--------- .../source/online/DelegatedHttpSource.kt | 7 +-- .../ui/manga/MangaDetailsPresenter.kt | 9 ++-- .../manga/process/MigrationListController.kt | 15 ++---- .../ui/source/browse/BrowseSourcePresenter.kt | 6 +-- .../globalsearch/GlobalSearchPresenter.kt | 6 +-- 16 files changed, 67 insertions(+), 184 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d8f02fcf87..4fc3d1bea3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -122,9 +122,6 @@ dependencies { } implementation("com.github.tachiyomiorg:image-decoder:7481a4a") - // Source models and interfaces from Tachiyomi 1.x - implementation("tachiyomi.sourceapi:source-api:1.1") - // Android X libraries implementation("androidx.appcompat:appcompat:1.6.0-beta01") implementation("androidx.cardview:cardview:1.0.0") diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt index e88e1ea1c7..c35080b02c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt @@ -5,13 +5,11 @@ import android.net.Uri import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.library.CustomMangaManager import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager -import eu.kanade.tachiyomi.source.model.toSChapter import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import uy.kohesive.injekt.injectLazy @@ -42,8 +40,7 @@ abstract class AbstractBackupManager(protected val context: Context) { * @return Updated manga chapters. */ internal suspend fun restoreChapters(source: Source, manga: Manga, chapters: List): Pair, List> { - val fetchedChapters = source.getChapterList(manga.toMangaInfo()) - .map { it.toSChapter() } + val fetchedChapters = source.getChapterList(manga) val syncedChapters = syncChaptersWithSource(databaseHelper, fetchedChapters, manga, source) if (syncedChapters.first.isNotEmpty()) { chapters.forEach { it.manga_id = manga.id } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupManager.kt index 8d42245e02..fb8c2e62a3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupManager.kt @@ -20,9 +20,7 @@ import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaCategory import eu.kanade.tachiyomi.data.database.models.Track -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.source.Source -import eu.kanade.tachiyomi.source.model.toSManga import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.modules.contextual @@ -75,9 +73,9 @@ class LegacyBackupManager(context: Context, version: Int = CURRENT_VERSION) : Ab * @return Updated manga. */ suspend fun fetchManga(source: Source, manga: Manga): Manga { - val networkManga = source.getMangaDetails(manga.toMangaInfo()) + val networkManga = source.getMangaDetails(manga) return manga.also { - it.copyFrom(networkManga.toSManga()) + it.copyFrom(networkManga) it.favorite = true it.initialized = true it.id = insertManga(manga) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt index 7ee3b027e2..f94a0eb711 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt @@ -9,7 +9,6 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.ui.reader.settings.OrientationType import eu.kanade.tachiyomi.ui.reader.settings.ReadingModeType import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata -import tachiyomi.source.model.MangaInfo import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.util.Locale @@ -338,16 +337,3 @@ interface Manga : SManga { } } } - -fun Manga.toMangaInfo(): MangaInfo { - return MangaInfo( - artist = this.artist ?: "", - author = this.author ?: "", - cover = this.thumbnail_url ?: "", - description = this.description ?: "", - genres = this.getGenres() ?: emptyList(), - key = this.url, - status = this.status, - title = this.title, - ) -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index d195bf3b0b..08b5e4cf1d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -17,7 +17,6 @@ import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadService import eu.kanade.tachiyomi.data.library.LibraryUpdateService.Companion.start @@ -32,8 +31,6 @@ import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.UnmeteredSource import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import eu.kanade.tachiyomi.util.chapter.syncChaptersWithTrackServiceTwoWay @@ -420,7 +417,7 @@ class LibraryUpdateService( notifier.showProgressNotification(manga, progress, mangaToUpdate.size) val source = sourceManager.get(manga.source) as? HttpSource ?: return false val fetchedChapters = withContext(Dispatchers.IO) { - source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } + source.getChapterList(manga) } if (fetchedChapters.isNotEmpty()) { val newChapters = syncChaptersWithSource(db, fetchedChapters, manga, source) @@ -487,7 +484,7 @@ class LibraryUpdateService( ) val networkManga = try { - source.getMangaDetails(manga.toMangaInfo()).toSManga() + source.getMangaDetails(manga.copy()) } catch (e: java.lang.Exception) { Timber.e(e) null diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index 8b3a66833a..c94df9c41c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -8,10 +8,6 @@ import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toChapterInfo -import eu.kanade.tachiyomi.source.model.toMangaInfo -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.util.chapter.ChapterRecognition import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.storage.DiskUtil @@ -23,8 +19,6 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import rx.Observable -import tachiyomi.source.model.ChapterInfo -import tachiyomi.source.model.MangaInfo import timber.log.Timber import uy.kohesive.injekt.injectLazy import java.io.File @@ -159,23 +153,22 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour } } - val sManga = this - val mangaInfo = this.toMangaInfo() + val manga = this runBlocking { - val chapters = getChapterList(mangaInfo) + val chapters = getChapterList(manga) if (chapters.isNotEmpty()) { - val chapter = chapters.last().toSChapter() + val chapter = chapters.last() val format = getFormat(chapter) if (format is Format.Epub) { EpubFile(format.file).use { epub -> - epub.fillMangaMetadata(sManga) + epub.fillMangaMetadata(manga) } } // Copy the cover from the first chapter found. if (thumbnail_url == null) { try { - val dest = updateCover(chapter, sManga) + val dest = updateCover(chapter, manga) thumbnail_url = dest?.absolutePath } catch (e: Exception) { Timber.e(e) @@ -191,25 +184,25 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour override fun fetchLatestUpdates(page: Int) = fetchSearchManga(page, "", latestFilters) - override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo { + override suspend fun getMangaDetails(manga: SManga): SManga { val localDetails = getBaseDirectories(context) .asSequence() - .mapNotNull { File(it, manga.key).listFiles()?.toList() } + .mapNotNull { File(it, manga.url).listFiles()?.toList() } .flatten() .firstOrNull { it.extension.equals("json", ignoreCase = true) } return if (localDetails != null) { val obj = json.decodeFromStream(localDetails.inputStream()) - obj.lang?.let { langMap[manga.key] = it } - manga.copy( - title = obj.title ?: manga.title, - author = obj.author ?: manga.author, - artist = obj.artist ?: manga.artist, - description = obj.description ?: manga.description, - genres = obj.genre?.toList() ?: manga.genres, - status = obj.status ?: manga.status, - ) + obj.lang?.let { langMap[manga.url] = it } + SManga.create().apply { + title = obj.title ?: manga.title + author = obj.author ?: manga.author + artist = obj.artist ?: manga.artist + description = obj.description ?: manga.description + genre = obj.genre?.joinToString(", ") ?: manga.genre + status = obj.status ?: manga.status + } } else { manga } @@ -256,17 +249,15 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour } } - override suspend fun getChapterList(manga: MangaInfo): List { - val sManga = manga.toSManga() - + override suspend fun getChapterList(manga: SManga): List { val chapters = getBaseDirectories(context) .asSequence() - .mapNotNull { File(it, manga.key).listFiles()?.toList() } + .mapNotNull { File(it, manga.url).listFiles()?.toList() } .flatten() .filter { it.isDirectory || isSupportedFile(it.extension) } .map { chapterFile -> SChapter.create().apply { - url = "${manga.key}/${chapterFile.name}" + url = "${manga.url}/${chapterFile.name}" name = if (chapterFile.isDirectory) { chapterFile.name } else { @@ -281,12 +272,11 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour } } - ChapterRecognition.parseChapterNumber(this, sManga) + ChapterRecognition.parseChapterNumber(this, manga) } } - .map { it.toChapterInfo() } .sortedWith { c1, c2 -> - val c = c2.number.compareTo(c1.number) + val c = c2.chapter_number.compareTo(c1.chapter_number) if (c == 0) c2.name.compareToCaseInsensitiveNaturalOrder(c1.name) else c } .toList() @@ -294,7 +284,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour return chapters } - override suspend fun getPageList(chapter: ChapterInfo) = throw Exception("Unused") + override suspend fun getPageList(chapter: SChapter) = throw Exception("Unused") private fun isSupportedFile(extension: String): Boolean { return extension.lowercase() in SUPPORTED_ARCHIVE_TYPES diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt index 54817f9c08..d8a4cba1a1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt @@ -5,34 +5,27 @@ import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toChapterInfo -import eu.kanade.tachiyomi.source.model.toMangaInfo -import eu.kanade.tachiyomi.source.model.toPageUrl -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.util.system.awaitSingle import rx.Observable -import tachiyomi.source.model.ChapterInfo -import tachiyomi.source.model.MangaInfo import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get /** * A basic interface for creating a source. It could be an online source, a local source, etc... */ -interface Source : tachiyomi.source.Source { +interface Source { /** * Id for the source. Must be unique. */ - override val id: Long + val id: Long /** * Name of the source. */ - override val name: String + val name: String - override val lang: String + val lang: String get() = "" /** @@ -74,33 +67,27 @@ interface Source : tachiyomi.source.Source { * [1.x API] Get the updated details for a manga. */ @Suppress("DEPRECATION") - override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo { - val sManga = manga.toSManga() - val networkManga = fetchMangaDetails(sManga).awaitSingle() - sManga.copyFrom(networkManga) - return sManga.toMangaInfo() + suspend fun getMangaDetails(manga: SManga): SManga { + return fetchMangaDetails(manga).awaitSingle() } /** * [1.x API] Get all the available chapters for a manga. */ @Suppress("DEPRECATION") - override suspend fun getChapterList(manga: MangaInfo): List { - return fetchChapterList(manga.toSManga()).awaitSingle() - .map { it.toChapterInfo() } + suspend fun getChapterList(manga: SManga): List { + return fetchChapterList(manga).awaitSingle() } /** * [1.x API] Get the list of pages a chapter has. */ @Suppress("DEPRECATION") - override suspend fun getPageList(chapter: ChapterInfo): List { - return fetchPageList(chapter.toSChapter()).awaitSingle() - .map { it.toPageUrl() } + suspend fun getPageList(chapter: SChapter): List { + return fetchPageList(chapter).awaitSingle() } } -fun Source.icon(): Drawable? = - Injekt.get().getAppIconForSource(this) +fun Source.icon(): Drawable? = Injekt.get().getAppIconForSource(this) fun Source.getPreferenceKey(): String = "source_$id" diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt index bc0943bb94..7ad6fbeb0d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt @@ -13,8 +13,6 @@ import eu.kanade.tachiyomi.source.online.all.MangaDex import eu.kanade.tachiyomi.source.online.english.KireiCake import eu.kanade.tachiyomi.source.online.english.MangaPlus import rx.Observable -import tachiyomi.source.model.ChapterInfo -import tachiyomi.source.model.MangaInfo import uy.kohesive.injekt.injectLazy open class SourceManager(private val context: Context) { @@ -95,7 +93,7 @@ open class SourceManager(private val context: Context) { override val name: String get() = extensionManager.getStubSource(id)?.name ?: id.toString() - override suspend fun getMangaDetails(manga: MangaInfo): MangaInfo { + override suspend fun getMangaDetails(manga: SManga): SManga { throw getSourceNotInstalledException() } @@ -103,7 +101,7 @@ open class SourceManager(private val context: Context) { return Observable.error(getSourceNotInstalledException()) } - override suspend fun getChapterList(manga: MangaInfo): List { + override suspend fun getChapterList(manga: SManga): List { throw getSourceNotInstalledException() } @@ -111,7 +109,7 @@ open class SourceManager(private val context: Context) { return Observable.error(getSourceNotInstalledException()) } - override suspend fun getPageList(chapter: ChapterInfo): List { + override suspend fun getPageList(chapter: SChapter): List { throw getSourceNotInstalledException() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt index 464e46c411..74d5c0a0c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.source.model import android.net.Uri import eu.kanade.tachiyomi.network.ProgressListener import rx.subjects.Subject -import tachiyomi.source.model.PageUrl open class Page( val index: Int, @@ -58,16 +57,3 @@ open class Page( const val ERROR = 4 } } - -fun Page.toPageUrl(): PageUrl { - return PageUrl( - url = this.imageUrl ?: this.url, - ) -} - -fun PageUrl.toPage(index: Int): Page { - return Page( - index = index, - imageUrl = this.url, - ) -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt index 8152134658..756b8f2c84 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.source.model import eu.kanade.tachiyomi.data.database.models.ChapterImpl -import tachiyomi.source.model.ChapterInfo import java.io.Serializable interface SChapter : Serializable { @@ -40,24 +39,3 @@ interface SChapter : Serializable { } } } - -fun SChapter.toChapterInfo(): ChapterInfo { - return ChapterInfo( - dateUpload = this.date_upload, - key = this.url, - name = this.name, - number = this.chapter_number, - scanlator = this.scanlator ?: "", - ) -} - -fun ChapterInfo.toSChapter(): SChapter { - val chapter = this - return SChapter.create().apply { - url = chapter.key - name = chapter.name - date_upload = chapter.dateUpload - chapter_number = chapter.number - scanlator = chapter.scanlator - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt index 8d0060d03a..ba6b05ab9d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.source.model import eu.kanade.tachiyomi.data.database.models.MangaImpl -import tachiyomi.source.model.MangaInfo import java.io.Serializable interface SManga : Serializable { @@ -65,6 +64,18 @@ interface SManga : Serializable { } } + fun copy() = create().also { + it.url = url + it.title = title + it.artist = artist + it.author = author + it.description = description + it.genre = genre + it.status = status + it.thumbnail_url = thumbnail_url + it.initialized = initialized + } + companion object { const val UNKNOWN = 0 const val ONGOING = 1 @@ -79,30 +90,3 @@ interface SManga : Serializable { } } } - -fun SManga.toMangaInfo(): MangaInfo { - return MangaInfo( - key = this.url, - title = this.title, - artist = this.artist ?: "", - author = this.author ?: "", - description = this.description ?: "", - genres = this.genre?.split(", ") ?: emptyList(), - status = this.status, - cover = this.thumbnail_url ?: "", - ) -} - -fun MangaInfo.toSManga(): SManga { - val mangaInfo = this - return SManga.create().apply { - url = mangaInfo.key - title = mangaInfo.title - artist = mangaInfo.artist - author = mangaInfo.author - description = mangaInfo.description - genre = mangaInfo.genres.joinToString(", ") - status = mangaInfo.status - thumbnail_url = mangaInfo.cover - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/DelegatedHttpSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/DelegatedHttpSource.kt index f4ab8d59fb..6ab060d05d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/DelegatedHttpSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/DelegatedHttpSource.kt @@ -5,11 +5,8 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaImpl -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import uy.kohesive.injekt.injectLazy abstract class DelegatedHttpSource { @@ -29,7 +26,7 @@ abstract class DelegatedHttpSource { protected open suspend fun getMangaInfo(url: String): Manga? { val id = delegate?.id ?: return null val manga = Manga.create(url, "", id) - val networkManga = delegate?.getMangaDetails(manga.toMangaInfo())?.toSManga() ?: return null + val networkManga = delegate?.getMangaDetails(manga.copy()) ?: return null val newManga = MangaImpl().apply { this.url = url title = try { networkManga.title } catch (e: Exception) { "" } @@ -42,6 +39,6 @@ abstract class DelegatedHttpSource { suspend fun getChapters(url: String): List? { val id = delegate?.id ?: return null val manga = Manga.create(url, "", id) - return delegate?.getChapterList(manga.toMangaInfo())?.map { it.toSChapter() } + return delegate?.getChapterList(manga) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index c8b62501c0..eee28df444 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -17,7 +17,6 @@ import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Track -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.DownloadQueue @@ -33,8 +32,6 @@ import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceNotFoundException import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter import eu.kanade.tachiyomi.ui.manga.chapter.ChapterItem @@ -323,7 +320,7 @@ class MangaDetailsPresenter( var chapterError: java.lang.Exception? = null val chapters = async(Dispatchers.IO) { try { - source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } + source.getChapterList(manga) } catch (e: Exception) { chapterError = e emptyList() @@ -332,7 +329,7 @@ class MangaDetailsPresenter( val thumbnailUrl = manga.thumbnail_url val nManga = async(Dispatchers.IO) { try { - source.getMangaDetails(manga.toMangaInfo()).toSManga() + source.getMangaDetails(manga.copy()) } catch (e: java.lang.Exception) { mangaError = e null @@ -419,7 +416,7 @@ class MangaDetailsPresenter( presenterScope.launch(Dispatchers.IO) { val chapters = try { - source.getChapterList(manga.toMangaInfo()).map { it.toSChapter() } + source.getChapterList(manga) } catch (e: Exception) { withContext(Dispatchers.Main) { controller?.showError(trimException(e)) } return@launch diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt index 599cfedaf9..2e42c91c29 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt @@ -16,7 +16,6 @@ import com.bluelinelabs.conductor.changehandler.FadeChangeHandler import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.MigrationListControllerBinding import eu.kanade.tachiyomi.smartsearch.SmartSearchEngine @@ -24,8 +23,6 @@ import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.toSChapter -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.ui.main.BottomNavBarInterface import eu.kanade.tachiyomi.ui.manga.MangaDetailsController @@ -182,8 +179,7 @@ class MigrationListController(bundle: Bundle? = null) : searchResult, source.id, ) - val chapters = - source.getChapterList(localManga.toMangaInfo()).map { it.toSChapter() } + val chapters = source.getChapterList(localManga) try { syncChaptersWithSource( db, @@ -222,7 +218,7 @@ class MigrationListController(bundle: Bundle? = null) : source.id, ) val chapters: List = try { - source.getChapterList(localManga.toMangaInfo()).map { it.toSChapter() } + source.getChapterList(localManga) } catch (e: java.lang.Exception) { Timber.e(e) emptyList() @@ -255,7 +251,7 @@ class MigrationListController(bundle: Bundle? = null) : if (result != null && result.thumbnail_url == null) { try { val newManga = - sourceManager.getOrStub(result.source).getMangaDetails(result.toMangaInfo()).toSManga() + sourceManager.getOrStub(result.source).getMangaDetails(result) result.copyFrom(newManga) db.insertManga(result).executeAsBlocking() @@ -361,7 +357,7 @@ class MigrationListController(bundle: Bundle? = null) : val result = CoroutineScope(migratingManga.manga.migrationJob).async { val localManga = smartSearchEngine.networkToLocalManga(manga, source.id) try { - val chapters = source.getChapterList(localManga.toMangaInfo()).map { it.toSChapter() } + val chapters = source.getChapterList(localManga) syncChaptersWithSource(db, chapters, localManga, source) } catch (e: Exception) { return@async null @@ -372,8 +368,7 @@ class MigrationListController(bundle: Bundle? = null) : if (result != null) { try { val newManga = - sourceManager.getOrStub(result.source).getMangaDetails(result.toMangaInfo()) - .toSManga() + sourceManager.getOrStub(result.source).getMangaDetails(result) result.copyFrom(newManga) db.insertManga(result).executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt index 60457bc0b3..645f3b7806 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt @@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.CatalogueSource @@ -14,7 +13,6 @@ import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.source.filter.CheckboxItem import eu.kanade.tachiyomi.ui.source.filter.CheckboxSectionItem @@ -244,8 +242,8 @@ open class BrowseSourcePresenter( */ private suspend fun getMangaDetails(manga: Manga): Manga { try { - val networkManga = source.getMangaDetails(manga.toMangaInfo()) - manga.copyFrom(networkManga.toSManga()) + val networkManga = source.getMangaDetails(manga.copy()) + manga.copyFrom(networkManga) manga.initialized = true db.insertManga(manga).executeAsBlocking() } catch (e: Exception) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchPresenter.kt index 5db67c3ac8..0018a65faf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchPresenter.kt @@ -4,7 +4,6 @@ import android.os.Bundle import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.database.models.toMangaInfo import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.ExtensionManager @@ -13,7 +12,6 @@ import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.model.toSManga import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.source.browse.BrowseSourcePresenter import eu.kanade.tachiyomi.util.system.runAsObservable @@ -284,8 +282,8 @@ open class GlobalSearchPresenter( * @return The initialized manga. */ private suspend fun getMangaDetails(manga: Manga, source: Source): Manga { - val networkManga = source.getMangaDetails(manga.toMangaInfo()) - manga.copyFrom(networkManga.toSManga()) + val networkManga = source.getMangaDetails(manga.copy()) + manga.copyFrom(networkManga) manga.initialized = true db.insertManga(manga).executeAsBlocking() return manga