mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Rename source download folder on source rename (#7898)
* Rename source download folder on source rename * Review Changes * Review Changes 2
This commit is contained in:
		@@ -343,6 +343,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.extension.ExtensionManager
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.Page
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SChapter
 | 
			
		||||
@@ -19,12 +20,14 @@ import kotlinx.coroutines.flow.map
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import kotlinx.coroutines.runBlocking
 | 
			
		||||
import rx.Observable
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
 | 
			
		||||
class SourceManager(
 | 
			
		||||
    private val context: Context,
 | 
			
		||||
    private val extensionManager: ExtensionManager,
 | 
			
		||||
    private val sourceRepository: SourceDataRepository,
 | 
			
		||||
) {
 | 
			
		||||
    private val downloadManager: DownloadManager by injectLazy()
 | 
			
		||||
 | 
			
		||||
    private val scope = CoroutineScope(Job() + Dispatchers.IO)
 | 
			
		||||
 | 
			
		||||
@@ -89,7 +92,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))
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user