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 ccb436972..e23fee8a9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -397,6 +397,30 @@ class DownloadManager( } } + /** + * Renames source download folder + * + * @param oldSource the old source. + * @param newSource the new source. + */ + fun renameSource(oldSource: Source, newSource: Source) { + val oldFolder = provider.findSourceDir(oldSource) ?: return + val newName = provider.getSourceDirName(newSource) + + val capitalizationChanged = oldFolder.name.equals(newName, ignoreCase = true) + if (capitalizationChanged) { + val tempName = newName + "_tmp" + if (oldFolder.renameTo(tempName).not()) { + logcat(LogPriority.ERROR) { "Could not rename source download folder: ${oldFolder.name}." } + return + } + } + + if (oldFolder.renameTo(newName).not()) { + logcat(LogPriority.ERROR) { "Could not rename source download folder: ${oldFolder.name}." } + } + } + /** * Renames an already downloaded chapter * diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt index f741dc02f..9cde066dc 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt @@ -4,6 +4,7 @@ import android.content.Context import eu.kanade.domain.source.model.SourceData import eu.kanade.domain.source.repository.SourceDataRepository import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.source.model.Page @@ -53,6 +54,7 @@ class SourceManager( private val extensionManager: ExtensionManager, private val sourceRepository: SourceDataRepository, ) { + private val downloadManager: DownloadManager by injectLazy() private val scope = CoroutineScope(Job() + Dispatchers.IO) @@ -182,7 +184,12 @@ class SourceManager( private fun registerStubSource(sourceData: SourceData) { scope.launch { val (id, lang, name) = sourceData + val dbSourceData = sourceRepository.getSourceData(id) + if (dbSourceData == sourceData) return@launch sourceRepository.upsertSourceData(id, lang, name) + if (dbSourceData != null) { + downloadManager.renameSource(StubSource(dbSourceData), StubSource(sourceData)) + } } }