mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Rename downloaded chapters (#3216)
This commit is contained in:
		| @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.source.Source | ||||
| import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.source.model.Page | ||||
| import rx.Observable | ||||
| import timber.log.Timber | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| /** | ||||
| @@ -239,4 +240,26 @@ class DownloadManager(private val context: Context) { | ||||
|             deleteChapters(chapters, manga, source) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Renames an already downloaded chapter | ||||
|      * | ||||
|      * @param source the source of the manga. | ||||
|      * @param manga the manga of the chapter. | ||||
|      * @param oldChapter the existing chapter with the old name. | ||||
|      * @param newChapter the target chapter with the new name. | ||||
|      */ | ||||
|     fun renameChapter(source: Source, manga: Manga, oldChapter: Chapter, newChapter: Chapter) { | ||||
|         val oldName = provider.getChapterDirName(oldChapter) | ||||
|         val newName = provider.getChapterDirName(newChapter) | ||||
|         val mangaDir = provider.getMangaDir(manga, source) | ||||
|  | ||||
|         val oldFolder = mangaDir.findFile(oldName) | ||||
|         if (oldFolder?.renameTo(newName) == true) { | ||||
|             cache.removeChapter(oldChapter, manga) | ||||
|             cache.addChapter(newName, mangaDir, manga) | ||||
|         } else { | ||||
|             Timber.e("Could not rename downloaded chapter: %s.", oldName) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -3,11 +3,14 @@ package eu.kanade.tachiyomi.util.chapter | ||||
| 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.download.DownloadManager | ||||
| import eu.kanade.tachiyomi.source.Source | ||||
| import eu.kanade.tachiyomi.source.model.SChapter | ||||
| import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| import java.util.Date | ||||
| import java.util.TreeSet | ||||
| import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
|  | ||||
| /** | ||||
|  * Helper method for syncing the list of chapters from the source with the ones from the database. | ||||
| @@ -28,6 +31,8 @@ fun syncChaptersWithSource( | ||||
|         throw Exception("No chapters found") | ||||
|     } | ||||
|  | ||||
|     val downloadManager: DownloadManager = Injekt.get() | ||||
|  | ||||
|     // Chapters from db. | ||||
|     val dbChapters = db.getChapters(manga).executeAsBlocking() | ||||
|  | ||||
| @@ -60,6 +65,9 @@ fun syncChaptersWithSource( | ||||
|             ChapterRecognition.parseChapterNumber(sourceChapter, manga) | ||||
|  | ||||
|             if (shouldUpdateDbChapter(dbChapter, sourceChapter)) { | ||||
|                 if (dbChapter.name != sourceChapter.name && downloadManager.isChapterDownloaded(dbChapter, manga)) { | ||||
|                     downloadManager.renameChapter(source, manga, dbChapter, sourceChapter) | ||||
|                 } | ||||
|                 dbChapter.scanlator = sourceChapter.scanlator | ||||
|                 dbChapter.name = sourceChapter.name | ||||
|                 dbChapter.date_upload = sourceChapter.date_upload | ||||
|   | ||||
		Reference in New Issue
	
	Block a user