Browse Source

MangaInfoHeader: Add description placeholder (#7398)

To always show summary view for expanding tags
Ivan Iskandar 2 năm trước cách đây
mục cha
commit
0c856438fa

+ 20 - 18
app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt

@@ -82,6 +82,8 @@ import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.util.system.copyToClipboard
 import kotlin.math.roundToInt
 
+private val whitespaceLineRegex = Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE))
+
 @Composable
 fun MangaInfoHeader(
     modifier: Modifier = Modifier,
@@ -205,25 +207,25 @@ fun MangaInfoHeader(
             val (expanded, onExpanded) = rememberSaveable {
                 mutableStateOf(fromSource || windowWidthSizeClass != WindowWidthSizeClass.Compact)
             }
-            if (!description.isNullOrBlank()) {
-                val trimmedDescription = remember(description) {
-                    description
-                        .replace(Regex(" +\$", setOf(RegexOption.MULTILINE)), "")
-                        .replace(Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE)), "\n")
-                }
-                MangaSummary(
-                    expandedDescription = description,
-                    shrunkDescription = trimmedDescription,
-                    expanded = expanded,
-                    modifier = Modifier
-                        .padding(top = 8.dp)
-                        .padding(horizontal = 16.dp)
-                        .clickableNoIndication(
-                            onLongClick = { context.copyToClipboard(description, description) },
-                            onClick = { onExpanded(!expanded) },
-                        ),
-                )
+            val desc =
+                description.takeIf { !it.isNullOrBlank() } ?: stringResource(id = R.string.description_placeholder)
+            val trimmedDescription = remember(desc) {
+                desc
+                    .replace(whitespaceLineRegex, "\n")
+                    .trimEnd()
             }
+            MangaSummary(
+                expandedDescription = desc,
+                shrunkDescription = trimmedDescription,
+                expanded = expanded,
+                modifier = Modifier
+                    .padding(top = 8.dp)
+                    .padding(horizontal = 16.dp)
+                    .clickableNoIndication(
+                        onLongClick = { context.copyToClipboard(desc, desc) },
+                        onClick = { onExpanded(!expanded) },
+                    ),
+            )
             val tags = tagsProvider()
             if (!tags.isNullOrEmpty()) {
                 Box(

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -603,6 +603,7 @@
     <string name="clipboard_copy_error">Failed to copy to clipboard</string>
     <string name="source_not_installed">Source not installed: %1$s</string>
     <string name="snack_add_to_library">Add manga to library?</string>
+    <string name="description_placeholder">No description</string>
 
     <!-- Manga chapters fragment -->
     <string name="display_mode_chapter">Chapter %1$s</string>