From ec97db588a58a8b1e531a41c5f783e25e74bcf8c Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Tue, 31 Dec 2024 11:07:43 +0700 Subject: [PATCH] fix: download job stops all together even if 1 entry is failed to create directory (#510) Also, when some entry failed to create download folder, it shows a notification saying only "invalid location: /downloads" which is misleading. * more detail notification on invalid download location * fix: download job stops all together even if 1 entry is failed to create directory --- .../kanade/tachiyomi/data/download/DownloadProvider.kt | 3 ++- .../eu/kanade/tachiyomi/data/download/Downloader.kt | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index 9e4ddb70f..9e72c7972 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -45,7 +45,8 @@ class DownloadProvider( throw Exception( context.stringResource( MR.strings.invalid_location, - downloadsDir?.displayablePath ?: "", + (downloadsDir?.displayablePath ?: "") + + "/${getSourceDirName(source)}/${getMangaDirName(mangaTitle)}", ), ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 62455083d..3a8ca9906 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -327,7 +327,15 @@ class Downloader( * @param download the chapter to be downloaded. */ private suspend fun downloadChapter(download: Download) { - val mangaDir = provider.getMangaDir(/* SY --> */ download.manga.ogTitle /* SY <-- */, download.source) + val mangaDir: UniFile + try { + mangaDir = provider.getMangaDir(/* SY --> */ download.manga.ogTitle /* SY <-- */, download.source) + } catch (error: Exception) { + logcat(LogPriority.ERROR, error) + download.status = Download.State.ERROR + notifier.onError(error.message, download.chapter.name, download.manga.title, download.manga.id) + return + } val availSpace = DiskUtil.getAvailableStorageSpace(mangaDir) if (availSpace != -1L && availSpace < MIN_DISK_SPACE) {