diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index dca4fac237..3e447f4abb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -68,7 +68,13 @@ class DownloadManager( * Tells the downloader to begin downloads. */ fun startDownloads() { - DownloadJob.start(context) + if (downloader.isRunning) return + + if (DownloadJob.isRunning(context)) { + downloader.start() + } else { + DownloadJob.start(context) + } } /** @@ -97,22 +103,16 @@ class DownloadManager( return queueState.value.find { it.chapter.id == chapterId } } - fun startDownloadNow(chapterId: Long?) { - if (chapterId == null) return - val download = getQueuedDownloadOrNull(chapterId) + fun startDownloadNow(chapterId: Long) { + val existingDownload = getQueuedDownloadOrNull(chapterId) // If not in queue try to start a new download - val toAdd = download ?: runBlocking { Download.fromChapterId(chapterId) } ?: return - val queue = queueState.value.toMutableList() - download?.let { queue.remove(it) } - queue.add(0, toAdd) - reorderQueue(queue) - if (!downloader.isRunning) { - if (DownloadJob.isRunning(context)) { - downloader.start() - } else { - DownloadJob.start(context) - } + val toAdd = existingDownload ?: runBlocking { Download.fromChapterId(chapterId) } ?: return + queueState.value.toMutableList().apply { + existingDownload?.let { remove(it) } + add(0, toAdd) + reorderQueue(this) } + startDownloads() } /** @@ -146,7 +146,7 @@ class DownloadManager( addAll(0, downloads) reorderQueue(this) } - if (!DownloadJob.isRunning(context)) DownloadJob.start(context) + if (!DownloadJob.isRunning(context)) startDownloads() } /**