More domain model usage
(cherry picked from commit a3378e6080418e6ba9bab4d027d7f06373556217) # Conflicts: # app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadPendingDeleter.kt # app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
This commit is contained in:
parent
f1a31e4560
commit
485e6719c3
@ -7,7 +7,6 @@ import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.chapter.repository.ChapterRepository
|
||||
import eu.kanade.domain.manga.interactor.UpdateManga
|
||||
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.LocalSource
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
@ -98,7 +97,7 @@ class SyncChaptersWithSource(
|
||||
} else {
|
||||
if (shouldUpdateDbChapter.await(dbChapter, chapter)) {
|
||||
if (dbChapter.name != chapter.name && downloadManager.isChapterDownloaded(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, manga.source)) {
|
||||
downloadManager.renameChapter(source, manga.toDbManga(), dbChapter.toDbChapter(), chapter.toDbChapter())
|
||||
downloadManager.renameChapter(source, manga, dbChapter.toDbChapter(), chapter.toDbChapter())
|
||||
}
|
||||
var toChangeChapter = dbChapter.copy(
|
||||
name = chapter.name,
|
||||
|
@ -42,22 +42,20 @@ data class Chapter(
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun create(): Chapter {
|
||||
return Chapter(
|
||||
id = -1,
|
||||
mangaId = -1,
|
||||
read = false,
|
||||
bookmark = false,
|
||||
lastPageRead = 0,
|
||||
dateFetch = 0,
|
||||
sourceOrder = 0,
|
||||
url = "",
|
||||
name = "",
|
||||
dateUpload = -1,
|
||||
chapterNumber = -1f,
|
||||
scanlator = null,
|
||||
)
|
||||
}
|
||||
fun create() = Chapter(
|
||||
id = -1,
|
||||
mangaId = -1,
|
||||
read = false,
|
||||
bookmark = false,
|
||||
lastPageRead = 0,
|
||||
dateFetch = 0,
|
||||
sourceOrder = 0,
|
||||
url = "",
|
||||
name = "",
|
||||
dateUpload = -1,
|
||||
chapterNumber = -1f,
|
||||
scanlator = null,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -64,20 +64,6 @@ data class Manga(
|
||||
get() = customMangaInfo?.statusLong ?: ogStatus
|
||||
// SY <--
|
||||
|
||||
fun toSManga(): SManga {
|
||||
return SManga.create().also {
|
||||
it.url = url
|
||||
it.title = title
|
||||
it.artist = artist
|
||||
it.author = author
|
||||
it.description = description
|
||||
it.genre = genre.orEmpty().joinToString()
|
||||
it.status = status.toInt()
|
||||
it.thumbnail_url = thumbnailUrl
|
||||
it.initialized = initialized
|
||||
}
|
||||
}
|
||||
|
||||
val sorting: Long
|
||||
get() = chapterFlags and CHAPTER_SORTING_MASK
|
||||
|
||||
@ -131,6 +117,18 @@ data class Manga(
|
||||
return chapterFlags and CHAPTER_SORT_DIR_MASK == CHAPTER_SORT_DESC
|
||||
}
|
||||
|
||||
fun toSManga(): SManga = SManga.create().also {
|
||||
it.url = url
|
||||
it.title = title
|
||||
it.artist = artist
|
||||
it.author = author
|
||||
it.description = description
|
||||
it.genre = genre.orEmpty().joinToString()
|
||||
it.status = status.toInt()
|
||||
it.thumbnail_url = thumbnailUrl
|
||||
it.initialized = initialized
|
||||
}
|
||||
|
||||
companion object {
|
||||
// Generic filter that does not filter anything
|
||||
const val SHOW_ALL = 0x00000000L
|
||||
@ -160,6 +158,33 @@ data class Manga(
|
||||
const val CHAPTER_DISPLAY_NUMBER = 0x00100000L
|
||||
const val CHAPTER_DISPLAY_MASK = 0x00100000L
|
||||
|
||||
fun create() = Manga(
|
||||
id = -1L,
|
||||
url = "",
|
||||
// Sy -->
|
||||
ogTitle = "",
|
||||
// SY <--
|
||||
source = -1L,
|
||||
favorite = false,
|
||||
lastUpdate = -1L,
|
||||
dateAdded = -1L,
|
||||
viewerFlags = -1L,
|
||||
chapterFlags = -1L,
|
||||
coverLastModified = -1L,
|
||||
// SY -->
|
||||
ogArtist = null,
|
||||
ogAuthor = null,
|
||||
ogDescription = null,
|
||||
ogGenre = null,
|
||||
ogStatus = 0L,
|
||||
// SY <--
|
||||
thumbnailUrl = null,
|
||||
initialized = false,
|
||||
// SY -->
|
||||
filteredScanlators = null,
|
||||
// SY <--
|
||||
)
|
||||
|
||||
// SY -->
|
||||
private val customMangaManager: CustomMangaManager by injectLazy()
|
||||
// SY <--
|
||||
|
@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.data.download
|
||||
import android.content.Context
|
||||
import androidx.core.net.toUri
|
||||
import com.hippo.unifile.UniFile
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
@ -105,7 +105,7 @@ class DownloadCache(
|
||||
|
||||
val sourceDir = rootDir.files[manga.source]
|
||||
if (sourceDir != null) {
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.originalTitle /* SY <-- */)]
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)]
|
||||
if (mangaDir != null) {
|
||||
return mangaDir.files
|
||||
.filter { !it.endsWith(Downloader.TMP_DIR_SUFFIX) }
|
||||
@ -184,7 +184,7 @@ class DownloadCache(
|
||||
}
|
||||
|
||||
// Retrieve the cached manga directory or cache a new one
|
||||
val mangaDirName = provider.getMangaDirName(/* SY --> */ manga.originalTitle /* SY <-- */)
|
||||
val mangaDirName = provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)
|
||||
var mangaDir = sourceDir.files[mangaDirName]
|
||||
if (mangaDir == null) {
|
||||
mangaDir = MangaDirectory(mangaUniFile)
|
||||
@ -204,7 +204,7 @@ class DownloadCache(
|
||||
@Synchronized
|
||||
fun removeChapter(chapter: Chapter, manga: Manga) {
|
||||
val sourceDir = rootDir.files[manga.source] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.originalTitle /* SY <-- */)] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)] ?: return
|
||||
provider.getValidChapterDirNames(chapter.name, chapter.scanlator).forEach {
|
||||
if (it in mangaDir.files) {
|
||||
mangaDir.files -= it
|
||||
@ -215,7 +215,7 @@ class DownloadCache(
|
||||
// SY -->
|
||||
fun removeFolders(folders: List<String>, manga: Manga) {
|
||||
val sourceDir = rootDir.files[manga.source] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(manga.originalTitle)] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(manga.ogTitle)] ?: return
|
||||
folders.forEach { chapter ->
|
||||
if (chapter in mangaDir.files) {
|
||||
mangaDir.files -= chapter
|
||||
@ -234,7 +234,7 @@ class DownloadCache(
|
||||
@Synchronized
|
||||
fun removeChapters(chapters: List<Chapter>, manga: Manga) {
|
||||
val sourceDir = rootDir.files[manga.source] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.originalTitle /* SY <-- */)] ?: return
|
||||
val mangaDir = sourceDir.files[provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)] ?: return
|
||||
chapters.forEach { chapter ->
|
||||
provider.getValidChapterDirNames(chapter.name, chapter.scanlator).forEach {
|
||||
if (it in mangaDir.files) {
|
||||
@ -252,7 +252,7 @@ class DownloadCache(
|
||||
@Synchronized
|
||||
fun removeManga(manga: Manga) {
|
||||
val sourceDir = rootDir.files[manga.source] ?: return
|
||||
val mangaDirName = provider.getMangaDirName(/* SY --> */ manga.originalTitle /* SY <-- */)
|
||||
val mangaDirName = provider.getMangaDirName(/* SY --> */ manga.ogTitle /* SY <-- */)
|
||||
if (mangaDirName in sourceDir.files) {
|
||||
sourceDir.files -= mangaDirName
|
||||
}
|
||||
|
@ -4,9 +4,9 @@ import android.content.Context
|
||||
import com.hippo.unifile.UniFile
|
||||
import com.jakewharton.rxrelay.BehaviorRelay
|
||||
import eu.kanade.domain.category.interactor.GetCategories
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.data.download.model.DownloadQueue
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
@ -168,7 +168,7 @@ class DownloadManager(
|
||||
* @return an observable containing the list of pages from the chapter.
|
||||
*/
|
||||
fun buildPageList(source: Source, manga: Manga, chapter: Chapter): Observable<List<Page>> {
|
||||
return buildPageList(provider.findChapterDir(chapter.name, chapter.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, source))
|
||||
return buildPageList(provider.findChapterDir(chapter.name, chapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, source))
|
||||
}
|
||||
|
||||
/**
|
||||
@ -315,7 +315,7 @@ class DownloadManager(
|
||||
var cleaned = 0
|
||||
|
||||
if (removeNonFavorite && !manga.favorite) {
|
||||
val mangaFolder = provider.getMangaDir(manga.originalTitle, source)
|
||||
val mangaFolder = provider.getMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source)
|
||||
cleaned += 1 + mangaFolder.listFiles().orEmpty().size
|
||||
mangaFolder.delete()
|
||||
cache.removeManga(manga)
|
||||
@ -336,12 +336,12 @@ class DownloadManager(
|
||||
}
|
||||
|
||||
if (cache.getDownloadCount(manga) == 0) {
|
||||
val mangaFolder = provider.getMangaDir(manga.originalTitle, source)
|
||||
val mangaFolder = provider.getMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source)
|
||||
if (!mangaFolder.listFiles().isNullOrEmpty()) {
|
||||
mangaFolder.delete()
|
||||
cache.removeManga(manga)
|
||||
} else {
|
||||
xLogE("Cache and download folder doesn't match for " + manga.originalTitle)
|
||||
xLogE("Cache and download folder doesn't match for " + /* SY --> */ manga.ogTitle /* SY <-- */)
|
||||
}
|
||||
}
|
||||
return cleaned
|
||||
@ -357,7 +357,7 @@ class DownloadManager(
|
||||
fun deleteManga(manga: Manga, source: Source) {
|
||||
launchIO {
|
||||
downloader.queue.remove(manga)
|
||||
provider.findMangaDir(/* SY --> */ manga.originalTitle /* SY <-- */, source)?.delete()
|
||||
provider.findMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source)?.delete()
|
||||
cache.removeManga(manga)
|
||||
}
|
||||
}
|
||||
@ -393,7 +393,7 @@ class DownloadManager(
|
||||
*/
|
||||
fun renameChapter(source: Source, manga: Manga, oldChapter: Chapter, newChapter: Chapter) {
|
||||
val oldNames = provider.getValidChapterDirNames(oldChapter.name, oldChapter.scanlator)
|
||||
val mangaDir = provider.getMangaDir(/* SY --> */ manga.originalTitle /* SY <-- */, source)
|
||||
val mangaDir = provider.getMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source)
|
||||
|
||||
// Assume there's only 1 version of the chapter name formats present
|
||||
val oldDownload = oldNames.asSequence()
|
||||
|
@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.data.download
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.edit
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
@ -155,7 +155,7 @@ class DownloadPendingDeleter(context: Context) {
|
||||
* Returns a manga entry from a manga model.
|
||||
*/
|
||||
private fun Manga.toEntry(): MangaEntry {
|
||||
return MangaEntry(id!!, url, originalTitle, source)
|
||||
return MangaEntry(id!!, url, /* SY --> */ ogTitle /* SY <-- */, source)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -169,9 +169,14 @@ class DownloadPendingDeleter(context: Context) {
|
||||
* Returns a manga model from a manga entry.
|
||||
*/
|
||||
private fun MangaEntry.toModel(): Manga {
|
||||
return Manga.create(url, title, source).also {
|
||||
it.id = id
|
||||
}
|
||||
return Manga.create().copy(
|
||||
url = url,
|
||||
// SY -->
|
||||
ogTitle = title,
|
||||
// SY <--
|
||||
source = source,
|
||||
id = id,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,9 +3,9 @@ package eu.kanade.tachiyomi.data.download
|
||||
import android.content.Context
|
||||
import androidx.core.net.toUri
|
||||
import com.hippo.unifile.UniFile
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
@ -103,7 +103,7 @@ class DownloadProvider(private val context: Context) {
|
||||
* @param source the source of the chapter.
|
||||
*/
|
||||
fun findChapterDirs(chapters: List<Chapter>, manga: Manga, source: Source): List<UniFile> {
|
||||
val mangaDir = findMangaDir(/* SY --> */ manga.originalTitle /* SY <-- */, source) ?: return emptyList()
|
||||
val mangaDir = findMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source) ?: return emptyList()
|
||||
return chapters.mapNotNull { chapter ->
|
||||
getValidChapterDirNames(chapter.name, chapter.scanlator).asSequence()
|
||||
.mapNotNull { mangaDir.findFile(it) }
|
||||
@ -124,7 +124,7 @@ class DownloadProvider(private val context: Context) {
|
||||
manga: Manga,
|
||||
source: Source,
|
||||
): List<UniFile> {
|
||||
val mangaDir = findMangaDir(manga.originalTitle, source) ?: return emptyList()
|
||||
val mangaDir = findMangaDir(/* SY --> */ manga.ogTitle /* SY <-- */, source) ?: return emptyList()
|
||||
return mangaDir.listFiles().orEmpty().asList().filter {
|
||||
chapters.find { chp ->
|
||||
getValidChapterDirNames(chp.name, chp.scanlator).any { dir ->
|
||||
|
@ -5,8 +5,7 @@ import androidx.core.content.edit
|
||||
import eu.kanade.domain.chapter.interactor.GetChapter
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
@ -96,7 +95,7 @@ class DownloadStore(
|
||||
val cachedManga = mutableMapOf<Long, Manga?>()
|
||||
for ((mangaId, chapterId) in objs) {
|
||||
val manga = cachedManga.getOrPut(mangaId) {
|
||||
runBlocking { getManga.await(mangaId)?.toDbManga() }
|
||||
runBlocking { getManga.await(mangaId) }
|
||||
} ?: continue
|
||||
val source = sourceManager.get(manga.source) as? HttpSource ?: continue
|
||||
val chapter = runBlocking { getChapter.await(chapterId) }?.toDbChapter() ?: continue
|
||||
|
@ -5,10 +5,10 @@ import android.webkit.MimeTypeMap
|
||||
import com.hippo.unifile.UniFile
|
||||
import com.jakewharton.rxrelay.BehaviorRelay
|
||||
import com.jakewharton.rxrelay.PublishRelay
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.data.download.model.DownloadQueue
|
||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier
|
||||
@ -254,7 +254,7 @@ class Downloader(
|
||||
val chaptersWithoutDir = async {
|
||||
chapters
|
||||
// Filter out those already downloaded.
|
||||
.filter { provider.findChapterDir(it.name, it.scanlator, /* SY --> */ manga.originalTitle /* SY <-- */, source) == null }
|
||||
.filter { provider.findChapterDir(it.name, it.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, source) == null }
|
||||
// Add chapters to queue from the start.
|
||||
.sortedByDescending { it.source_order }
|
||||
}
|
||||
@ -305,7 +305,7 @@ class Downloader(
|
||||
* @param download the chapter to be downloaded.
|
||||
*/
|
||||
private fun downloadChapter(download: Download): Observable<Download> = Observable.defer {
|
||||
val mangaDir = provider.getMangaDir(/* SY --> */ download.manga.originalTitle /* SY <-- */, download.source)
|
||||
val mangaDir = provider.getMangaDir(/* SY --> */ download.manga.ogTitle /* SY <-- */, download.source)
|
||||
|
||||
val availSpace = DiskUtil.getAvailableStorageSpace(mangaDir)
|
||||
if (availSpace != -1L && availSpace < MIN_DISK_SPACE) {
|
||||
|
@ -3,9 +3,8 @@ package eu.kanade.tachiyomi.data.download.model
|
||||
import eu.kanade.domain.chapter.interactor.GetChapter
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
@ -76,7 +75,7 @@ data class Download(
|
||||
val manga = getManga.await(chapter.mangaId) ?: return null
|
||||
val source = sourceManager.get(manga.source) as? HttpSource ?: return null
|
||||
|
||||
return Download(source, manga.toDbManga(), chapter.toDbChapter())
|
||||
return Download(source, manga, chapter.toDbChapter())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package eu.kanade.tachiyomi.data.download.model
|
||||
|
||||
import com.jakewharton.rxrelay.PublishRelay
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.download.DownloadStore
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import rx.Observable
|
||||
|
@ -513,7 +513,7 @@ class LibraryUpdateService(
|
||||
chapters.groupBy { it.manga_id }
|
||||
.forEach {
|
||||
downloadManager.downloadChapters(
|
||||
downloadingManga[it.key]?.toDbManga() ?: return@forEach,
|
||||
downloadingManga[it.key] ?: return@forEach,
|
||||
chapters,
|
||||
false,
|
||||
)
|
||||
@ -522,7 +522,7 @@ class LibraryUpdateService(
|
||||
return
|
||||
}
|
||||
// SY <--
|
||||
downloadManager.downloadChapters(manga, chapters, false)
|
||||
downloadManager.downloadChapters(manga.toDomainManga()!!, chapters, false)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -14,7 +14,6 @@ import eu.kanade.domain.chapter.model.toChapterUpdate
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.backup.BackupRestoreService
|
||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||
@ -252,7 +251,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
if (manga != null) {
|
||||
val source = sourceManager.get(manga.source)
|
||||
if (source != null) {
|
||||
downloadManager.deleteChapters(listOf(it.toDbChapter()), manga.toDbManga(), source)
|
||||
downloadManager.deleteChapters(listOf(it.toDbChapter()), manga, source)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -270,7 +269,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||
*/
|
||||
private fun downloadChapters(chapterUrls: Array<String>, mangaId: Long) {
|
||||
launchIO {
|
||||
val manga = getManga.await(mangaId)?.toDbManga()
|
||||
val manga = getManga.await(mangaId)
|
||||
val chapters = chapterUrls.mapNotNull { getChapter.await(it, mangaId)?.toDbChapter() }
|
||||
if (manga != null && chapters.isNotEmpty()) {
|
||||
downloadManager.downloadChapters(manga, chapters)
|
||||
|
@ -7,7 +7,6 @@ import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.interactor.GetMergedReferencesById
|
||||
import eu.kanade.domain.manga.interactor.InsertManga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.manga.model.toMangaInfo
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||
@ -199,7 +198,7 @@ class MergedSource : HttpSource() {
|
||||
syncChaptersWithSource.await(chapterList, loadedManga, source)
|
||||
if (ifDownloadNewChapters && reference.downloadChapters) {
|
||||
downloadManager.downloadChapters(
|
||||
loadedManga.toDbManga(),
|
||||
loadedManga,
|
||||
results.first.map(DomainChapter::toDbChapter),
|
||||
)
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ import eu.kanade.domain.manga.interactor.UpdateManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.MangaUpdate
|
||||
import eu.kanade.domain.manga.model.isLocal
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.track.interactor.GetTracks
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||
@ -205,7 +204,7 @@ class LibraryPresenter(
|
||||
val isDownloaded = when {
|
||||
item.manga.toDomainManga()!!.isLocal() -> true
|
||||
item.downloadCount != -1 -> item.downloadCount > 0
|
||||
else -> downloadManager.getDownloadCount(item.manga) > 0
|
||||
else -> downloadManager.getDownloadCount(item.manga.toDomainManga()!!) > 0
|
||||
}
|
||||
|
||||
return@downloaded if (downloadedOnly || filterDownloaded == State.INCLUDE.value) isDownloaded
|
||||
@ -322,9 +321,9 @@ class LibraryPresenter(
|
||||
item.manga.id?.let { mergeMangaId ->
|
||||
runBlocking {
|
||||
getMergedMangaById.await(mergeMangaId)
|
||||
}.sumOf { downloadManager.getDownloadCount(it.toDbManga()) }
|
||||
}.sumOf { downloadManager.getDownloadCount(it) }
|
||||
} ?: 0
|
||||
} else /* SY <-- */ downloadManager.getDownloadCount(item.manga)
|
||||
} else /* SY <-- */ downloadManager.getDownloadCount(item.manga.toDomainManga()!!)
|
||||
} else {
|
||||
// Unset download count if not enabled
|
||||
-1
|
||||
@ -693,7 +692,7 @@ class LibraryPresenter(
|
||||
.groupBy { it.manga_id!! }
|
||||
.forEach ab@{ (mangaId, chapters) ->
|
||||
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@ab
|
||||
downloadManager.downloadChapters(mergedManga.toDbManga(), chapters)
|
||||
downloadManager.downloadChapters(mergedManga, chapters)
|
||||
}
|
||||
} else {
|
||||
/* SY --> */
|
||||
@ -704,7 +703,7 @@ class LibraryPresenter(
|
||||
} else /* SY <-- */ getChapterByMangaId.await(manga.id)
|
||||
.filter { !it.read }
|
||||
|
||||
downloadManager.downloadChapters(manga.toDbManga(), chapters.map { it.toDbChapter() })
|
||||
downloadManager.downloadChapters(manga, chapters.map { it.toDbChapter() })
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -782,9 +781,9 @@ class LibraryPresenter(
|
||||
chapters.groupBy { it.mangaId }.forEach { (mangaId, chapters) ->
|
||||
val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@forEach
|
||||
val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach
|
||||
downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, mergedManga.toDbManga(), mergedMangaSource)
|
||||
downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, mergedManga, mergedMangaSource)
|
||||
}
|
||||
} else /* SY <-- */ downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, manga.toDbManga(), source)
|
||||
} else /* SY <-- */ downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, manga, source)
|
||||
}
|
||||
}
|
||||
|
||||
@ -819,9 +818,9 @@ class LibraryPresenter(
|
||||
val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) }
|
||||
mergedMangas.forEach merge@{ mergedManga ->
|
||||
val mergedSource = sources.firstOrNull { mergedManga.source == it.id } as? HttpSource ?: return@merge
|
||||
downloadManager.deleteManga(mergedManga.toDbManga(), mergedSource)
|
||||
downloadManager.deleteManga(mergedManga, mergedSource)
|
||||
}
|
||||
} else downloadManager.deleteManga(manga, source)
|
||||
} else downloadManager.deleteManga(manga.toDomainManga()!!, source)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -679,7 +679,7 @@ class MangaPresenter(
|
||||
*/
|
||||
fun hasDownloads(): Boolean {
|
||||
val manga = successState?.manga ?: return false
|
||||
return downloadManager.getDownloadCount(manga.toDbManga()) > 0
|
||||
return downloadManager.getDownloadCount(manga) > 0
|
||||
}
|
||||
|
||||
/**
|
||||
@ -691,9 +691,9 @@ class MangaPresenter(
|
||||
if (state.source is MergedSource) {
|
||||
val mergedManga = state.mergedData?.manga?.map { it.value to sourceManager.getOrStub(it.value.source) }
|
||||
mergedManga?.forEach { (manga, source) ->
|
||||
downloadManager.deleteManga(manga.toDbManga(), source)
|
||||
downloadManager.deleteManga(manga, source)
|
||||
}
|
||||
} else /* SY <-- */ downloadManager.deleteManga(state.manga.toDbManga(), state.source)
|
||||
} else /* SY <-- */ downloadManager.deleteManga(state.manga, state.source)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -956,11 +956,11 @@ class MangaPresenter(
|
||||
if (state.source is MergedSource) {
|
||||
chapters.groupBy { it.mangaId }.forEach { map ->
|
||||
val manga = state.mergedData?.manga?.get(map.key) ?: return@forEach
|
||||
downloadManager.downloadChapters(manga.toDbManga(), map.value.map { it.toMergedDownloadedChapter().toDbChapter() })
|
||||
downloadManager.downloadChapters(manga, map.value.map { it.toMergedDownloadedChapter().toDbChapter() })
|
||||
}
|
||||
} else { /* SY <-- */
|
||||
val manga = state.manga
|
||||
downloadManager.downloadChapters(manga.toDbManga(), chapters.map { it.toDbChapter() })
|
||||
downloadManager.downloadChapters(manga, chapters.map { it.toDbChapter() })
|
||||
}
|
||||
}
|
||||
|
||||
@ -987,7 +987,7 @@ class MangaPresenter(
|
||||
try {
|
||||
updateSuccessState { successState ->
|
||||
val deletedIds = downloadManager
|
||||
.deleteChapters(chapters2, successState.manga.toDbManga(), successState.source)
|
||||
.deleteChapters(chapters2, successState.manga, successState.source)
|
||||
.map { it.id }
|
||||
val deletedChapters = successState.chapters.filter { deletedIds.contains(it.chapter.id) }
|
||||
if (deletedChapters.isEmpty()) return@updateSuccessState successState
|
||||
|
@ -1029,7 +1029,7 @@ class ReaderPresenter(
|
||||
// SY <--
|
||||
|
||||
launchIO {
|
||||
downloadManager.enqueueDeleteChapters(listOf(chapter.chapter), manga)
|
||||
downloadManager.enqueueDeleteChapters(listOf(chapter.chapter), manga.toDomainManga()!!)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,6 @@ import android.app.Application
|
||||
import android.net.Uri
|
||||
import com.hippo.unifile.UniFile
|
||||
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
|
||||
@ -46,7 +45,7 @@ class DownloadPageLoader(
|
||||
}
|
||||
|
||||
private fun getPagesFromDirectory(): Observable<List<ReaderPage>> {
|
||||
return downloadManager.buildPageList(source, manga.toDbManga(), chapter.chapter)
|
||||
return downloadManager.buildPageList(source, manga, chapter.chapter)
|
||||
.map { pages ->
|
||||
pages.map { page ->
|
||||
ReaderPage(page.index, page.url, page.imageUrl) {
|
||||
|
@ -8,7 +8,6 @@ import eu.kanade.domain.chapter.model.Chapter
|
||||
import eu.kanade.domain.chapter.model.ChapterUpdate
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
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.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
@ -219,7 +218,7 @@ class UpdatesPresenter : BasePresenter<UpdatesController>() {
|
||||
* @param items list of recent chapters seleted.
|
||||
*/
|
||||
fun downloadChapters(items: List<UpdatesItem>) {
|
||||
items.forEach { downloadManager.downloadChapters(it.manga.toDbManga(), listOf(it.chapter.toDbChapter())) }
|
||||
items.forEach { downloadManager.downloadChapters(it.manga, listOf(it.chapter.toDbChapter())) }
|
||||
}
|
||||
|
||||
/**
|
||||
@ -230,7 +229,7 @@ class UpdatesPresenter : BasePresenter<UpdatesController>() {
|
||||
private fun deleteChaptersInternal(chapterItems: List<UpdatesItem>) {
|
||||
val itemsByManga = chapterItems.groupBy { it.manga.id }
|
||||
for ((_, items) in itemsByManga) {
|
||||
val manga = items.first().manga.toDbManga()
|
||||
val manga = items.first().manga
|
||||
val source = sourceManager.get(manga.source) ?: continue
|
||||
val chapters = items.map { it.chapter.toDbChapter() }
|
||||
|
||||
|
@ -17,7 +17,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import eu.kanade.domain.chapter.interactor.GetChapterByMangaId
|
||||
import eu.kanade.domain.chapter.model.toDbChapter
|
||||
import eu.kanade.domain.manga.interactor.GetAllManga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.manga.repository.MangaRepository
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||
@ -498,7 +497,7 @@ class SettingsAdvancedController(
|
||||
mangaFolder.delete()
|
||||
} else {
|
||||
val chapterList = getChapterByMangaId.await(manga.id)
|
||||
foldersCleared += downloadManager.cleanupChapters(chapterList.map { it.toDbChapter() }, manga.toDbManga(), source, removeRead, removeNonFavorite)
|
||||
foldersCleared += downloadManager.cleanupChapters(chapterList.map { it.toDbChapter() }, manga, source, removeRead, removeNonFavorite)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user