Fix/manga update of title and download folder (#1774)

* Use "move" instead of "renameTo"

* Add additional checks for download folder rename

* Log exception during manga download folder rename
This commit is contained in:
schroda
2025-11-09 01:38:35 +01:00
committed by GitHub
parent 3b21442e25
commit 8e405e3996

View File

@@ -7,6 +7,8 @@ package suwayomi.tachidesk.manga.impl.util
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
import io.github.oshai.kotlinlogging.KLogger
import io.github.oshai.kotlinlogging.KotlinLogging
import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
import suwayomi.tachidesk.manga.impl.util.source.GetCatalogueSource import suwayomi.tachidesk.manga.impl.util.source.GetCatalogueSource
@@ -16,9 +18,12 @@ import suwayomi.tachidesk.server.ApplicationDirs
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import xyz.nulldev.androidcompat.util.SafePath import xyz.nulldev.androidcompat.util.SafePath
import java.io.File import java.io.File
import java.nio.file.Files
private val applicationDirs: ApplicationDirs by injectLazy() private val applicationDirs: ApplicationDirs by injectLazy()
private val logger = KotlinLogging.logger { }
private fun getMangaDir(mangaId: Int): String = private fun getMangaDir(mangaId: Int): String =
transaction { transaction {
val mangaEntry = MangaTable.selectAll().where { MangaTable.id eq mangaId }.first() val mangaEntry = MangaTable.selectAll().where { MangaTable.id eq mangaId }.first()
@@ -95,9 +100,24 @@ fun updateMangaDownloadDir(
val oldDirFile = File(oldDir) val oldDirFile = File(oldDir)
val newDirFile = File(newDir) val newDirFile = File(newDir)
return if (oldDirFile.exists()) { if (!oldDirFile.exists()) {
oldDirFile.renameTo(newDirFile) return true
} else { }
return try {
Files.move(oldDirFile.toPath(), newDirFile.toPath())
if (oldDirFile.exists()) {
return false
}
if (!newDirFile.exists()) {
return false
}
true true
} catch (e: Exception) {
logger.error(e) { "updateMangaDownloadDir: failed to rename manga download folder from \"$oldDir\" to \"$newDir\"" }
false
} }
} }