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:
parent
e0f70bf194
commit
6383bade26
@ -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
|
||||
*
|
||||
|
@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user