Safely handle null titleName

This commit is contained in:
Mio.
2025-07-13 03:30:33 +02:00
parent d0b4b26884
commit bdfe0aeea5
2 changed files with 77 additions and 69 deletions

View File

@@ -81,77 +81,85 @@ class KavitaHelper {
val chapterLabel = if (isWebtoon) "Episode" else "Chapter" val chapterLabel = if (isWebtoon) "Episode" else "Chapter"
val volumeLabel = if (isWebtoon) "Season" else "Volume" val volumeLabel = if (isWebtoon) "Season" else "Volume"
name = when (type) { if (titleName != null) {
ChapterType.Regular -> { name = when (type) {
val chapterNum = formatChapterNumber(chapter) ChapterType.Regular -> {
when { val chapterNum = formatChapterNumber(chapter)
titleName.isNotBlank() && titleName.any { it.isLetter() } -> when {
"$chapterNum - ${cleanChapterTitle( titleName.isNotBlank() && titleName.any { it.isLetter() } ->
titleName, "$chapterNum - ${cleanChapterTitle(
ChapterTitleContext( titleName,
mangaTitle = mangaTitle, ChapterTitleContext(
chapterNumber = chapterNum, mangaTitle = mangaTitle,
volumeName = volume.name.ifBlank { title }, chapterNumber = chapterNum,
), volumeName = volume.name.ifBlank { title },
)}" ),
else -> )}"
"$volumeLabel ${formatVolumeNumber(volume)} $chapterLabel $chapterNum"
else ->
"$volumeLabel ${formatVolumeNumber(volume)} $chapterLabel $chapterNum"
}
} }
}
ChapterType.SingleFileVolume -> { ChapterType.SingleFileVolume -> {
cleanChapterTitle( cleanChapterTitle(
when { when {
volume.name.any { it.isLetter() } -> "v${volume.minNumber} - ${volume.name}" volume.name.any { it.isLetter() } -> "v${volume.minNumber} - ${volume.name}"
else -> "Volume ${volume.minNumber}" else -> "Volume ${volume.minNumber}"
}, },
ChapterTitleContext( ChapterTitleContext(
mangaTitle = mangaTitle, mangaTitle = mangaTitle,
volumeName = volume.name, volumeName = volume.name,
), ),
) )
}
ChapterType.Special -> {
cleanChapterTitle(
when {
title.isNotBlank() -> title
range.isNotBlank() -> range
else -> "Special"
},
ChapterTitleContext(
mangaTitle = mangaTitle,
volumeName = volume.name,
),
)
}
ChapterType.Chapter -> {
val chapterNum = formatChapterNumber(chapter)
when {
titleName.isNotBlank() && titleName.any { it.isLetter() } ->
"$chapterNum - ${cleanChapterTitle(
titleName,
ChapterTitleContext(
mangaTitle = mangaTitle,
chapterNumber = chapterNum,
volumeName = volume.name,
),
)}"
else ->
"$chapterLabel $chapterNum"
} }
}
ChapterType.Issue -> { ChapterType.Special -> {
val issueNum = chapter.number.toIntOrNull()?.toString()?.padStart(3, '0') ?: chapter.number cleanChapterTitle(
cleanChapterTitle( when {
title.isNotBlank() -> title
range.isNotBlank() -> range
else -> "Special"
},
ChapterTitleContext(
mangaTitle = mangaTitle,
volumeName = volume.name,
),
)
}
ChapterType.Chapter -> {
val chapterNum = formatChapterNumber(chapter)
when { when {
titleName.any { it.isLetter() } -> "$titleName (#$issueNum)" titleName.isNotBlank() && titleName.any { it.isLetter() } ->
else -> "Issue #$issueNum" "$chapterNum - ${cleanChapterTitle(
}, titleName,
ChapterTitleContext( ChapterTitleContext(
mangaTitle = mangaTitle, mangaTitle = mangaTitle,
chapterNumber = issueNum, chapterNumber = chapterNum,
volumeName = volume.name, volumeName = volume.name,
), ),
) )}"
else ->
"$chapterLabel $chapterNum"
}
}
ChapterType.Issue -> {
val issueNum = chapter.number.toIntOrNull()?.toString()?.padStart(3, '0') ?: chapter.number
cleanChapterTitle(
when {
titleName.any { it.isLetter() } -> "$titleName (#$issueNum)"
else -> "Issue #$issueNum"
},
ChapterTitleContext(
mangaTitle = mangaTitle,
chapterNumber = issueNum,
volumeName = volume.name,
),
)
}
} }
} }

View File

@@ -246,7 +246,7 @@ data class ChapterDto(
val pages: Int, val pages: Int,
val isSpecial: Boolean, val isSpecial: Boolean,
val title: String, val title: String,
val titleName: String = "", val titleName: String?,
val pagesRead: Int, val pagesRead: Int,
val coverImageLocked: Boolean, val coverImageLocked: Boolean,
val coverImage: String, val coverImage: String,