|
@@ -84,12 +84,22 @@ class DownloadManager(
|
|
|
downloader.clearQueue(isNotification)
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Returns the download from queue if the chapter is queued for download
|
|
|
+ * else it will return null which means that the chapter is not queued for download
|
|
|
+ *
|
|
|
+ * @param chapterId the chapter to check.
|
|
|
+ */
|
|
|
+ fun getQueuedDownloadOrNull(chapterId: Long): Download? {
|
|
|
+ return queue.find { it.chapter.id == chapterId }
|
|
|
+ }
|
|
|
+
|
|
|
fun startDownloadNow(chapterId: Long?) {
|
|
|
if (chapterId == null) return
|
|
|
- val download = downloader.queue.find { it.chapter.id == chapterId }
|
|
|
+ val download = getQueuedDownloadOrNull(chapterId)
|
|
|
// If not in queue try to start a new download
|
|
|
val toAdd = download ?: runBlocking { Download.fromChapterId(chapterId) } ?: return
|
|
|
- val queue = downloader.queue.toMutableList()
|
|
|
+ val queue = queue.toMutableList()
|
|
|
download?.let { queue.remove(it) }
|
|
|
queue.add(0, toAdd)
|
|
|
reorderQueue(queue)
|
|
@@ -112,13 +122,13 @@ class DownloadManager(
|
|
|
|
|
|
if (downloads.isEmpty()) {
|
|
|
DownloadService.stop(context)
|
|
|
- downloader.queue.clear()
|
|
|
+ queue.clear()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
downloader.pause()
|
|
|
- downloader.queue.clear()
|
|
|
- downloader.queue.addAll(downloads)
|
|
|
+ queue.clear()
|
|
|
+ queue.addAll(downloads)
|
|
|
|
|
|
if (wasRunning) {
|
|
|
downloader.start()
|
|
@@ -194,17 +204,6 @@ class DownloadManager(
|
|
|
return cache.isChapterDownloaded(chapterName, chapterScanlator, mangaTitle, sourceId, skipCache)
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * Returns the download from queue if the chapter is queued for download
|
|
|
- * else it will return null which means that the chapter is not queued for download
|
|
|
- *
|
|
|
- * @param chapter the chapter to check.
|
|
|
- */
|
|
|
- fun getChapterDownloadOrNull(chapter: Chapter): Download? {
|
|
|
- return downloader.queue
|
|
|
- .firstOrNull { it.chapter.id == chapter.id && it.chapter.manga_id == chapter.mangaId }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* Returns the amount of downloaded chapters.
|
|
|
*/
|
|
@@ -221,9 +220,8 @@ class DownloadManager(
|
|
|
return cache.getDownloadCount(manga)
|
|
|
}
|
|
|
|
|
|
- fun deletePendingDownloads(downloads: List<Download>) {
|
|
|
- val domainChapters = downloads.map { it.chapter.toDomainChapter()!! }
|
|
|
- removeFromDownloadQueue(domainChapters)
|
|
|
+ fun cancelQueuedDownloads(downloads: List<Download>) {
|
|
|
+ removeFromDownloadQueue(downloads.mapNotNull { it.chapter.toDomainChapter() })
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -235,7 +233,6 @@ class DownloadManager(
|
|
|
*/
|
|
|
fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) {
|
|
|
val filteredChapters = getChaptersToDelete(chapters, manga)
|
|
|
-
|
|
|
if (filteredChapters.isNotEmpty()) {
|
|
|
launchIO {
|
|
|
removeFromDownloadQueue(filteredChapters)
|
|
@@ -260,7 +257,7 @@ class DownloadManager(
|
|
|
*/
|
|
|
fun deleteManga(manga: Manga, source: Source) {
|
|
|
launchIO {
|
|
|
- downloader.queue.remove(manga)
|
|
|
+ queue.remove(manga)
|
|
|
provider.findMangaDir(manga.title, source)?.delete()
|
|
|
cache.removeManga(manga)
|
|
|
|
|
@@ -279,13 +276,13 @@ class DownloadManager(
|
|
|
downloader.pause()
|
|
|
}
|
|
|
|
|
|
- downloader.queue.remove(chapters)
|
|
|
+ queue.remove(chapters)
|
|
|
|
|
|
if (wasRunning) {
|
|
|
- if (downloader.queue.isEmpty()) {
|
|
|
+ if (queue.isEmpty()) {
|
|
|
DownloadService.stop(context)
|
|
|
downloader.stop()
|
|
|
- } else if (downloader.queue.isNotEmpty()) {
|
|
|
+ } else if (queue.isNotEmpty()) {
|
|
|
downloader.start()
|
|
|
}
|
|
|
}
|
|
@@ -297,7 +294,7 @@ class DownloadManager(
|
|
|
* @param chapters the list of chapters to delete.
|
|
|
* @param manga the manga of the chapters.
|
|
|
*/
|
|
|
- fun enqueueDeleteChapters(chapters: List<Chapter>, manga: Manga) {
|
|
|
+ fun enqueueChaptersToDelete(chapters: List<Chapter>, manga: Manga) {
|
|
|
pendingDeleter.addChapters(getChaptersToDelete(chapters, manga), manga)
|
|
|
}
|
|
|
|
|
@@ -326,13 +323,13 @@ class DownloadManager(
|
|
|
if (capitalizationChanged) {
|
|
|
val tempName = newName + "_tmp"
|
|
|
if (oldFolder.renameTo(tempName).not()) {
|
|
|
- logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}." }
|
|
|
+ logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (oldFolder.renameTo(newName).not()) {
|
|
|
- logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}." }
|
|
|
+ logcat(LogPriority.ERROR) { "Failed to rename source download folder: ${oldFolder.name}" }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -362,7 +359,7 @@ class DownloadManager(
|
|
|
cache.removeChapter(oldChapter, manga)
|
|
|
cache.addChapter(newName, mangaDir, manga)
|
|
|
} else {
|
|
|
- logcat(LogPriority.ERROR) { "Could not rename downloaded chapter: ${oldNames.joinToString()}." }
|
|
|
+ logcat(LogPriority.ERROR) { "Could not rename downloaded chapter: ${oldNames.joinToString()}" }
|
|
|
}
|
|
|
}
|
|
|
|