Rename source download folder on source rename (#7898)

* Rename source download folder on source rename

* Review Changes

* Review Changes 2

(cherry picked from commit 53f5ea7fe9e0a918a0970c88521ba978c0def012)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt
This commit is contained in:
AntsyLich 2022-08-30 23:15:34 +06:00 committed by Jobobby04
parent e0f70bf194
commit 6383bade26
2 changed files with 31 additions and 0 deletions

View File

@ -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 * Renames an already downloaded chapter
* *

View File

@ -4,6 +4,7 @@ import android.content.Context
import eu.kanade.domain.source.model.SourceData import eu.kanade.domain.source.model.SourceData
import eu.kanade.domain.source.repository.SourceDataRepository import eu.kanade.domain.source.repository.SourceDataRepository
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ExtensionManager
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
@ -53,6 +54,7 @@ class SourceManager(
private val extensionManager: ExtensionManager, private val extensionManager: ExtensionManager,
private val sourceRepository: SourceDataRepository, private val sourceRepository: SourceDataRepository,
) { ) {
private val downloadManager: DownloadManager by injectLazy()
private val scope = CoroutineScope(Job() + Dispatchers.IO) private val scope = CoroutineScope(Job() + Dispatchers.IO)
@ -182,7 +184,12 @@ class SourceManager(
private fun registerStubSource(sourceData: SourceData) { private fun registerStubSource(sourceData: SourceData) {
scope.launch { scope.launch {
val (id, lang, name) = sourceData val (id, lang, name) = sourceData
val dbSourceData = sourceRepository.getSourceData(id)
if (dbSourceData == sourceData) return@launch
sourceRepository.upsertSourceData(id, lang, name) sourceRepository.upsertSourceData(id, lang, name)
if (dbSourceData != null) {
downloadManager.renameSource(StubSource(dbSourceData), StubSource(sourceData))
}
} }
} }