Browse Source

Adjust missing chapters UI

arkon 2 years ago
parent
commit
1ff78173f7

+ 2 - 2
app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt

@@ -394,7 +394,7 @@ private fun MangaScreenSmallImpl(
                         ChapterHeader(
                             enabled = chapters.fastAll { !it.selected },
                             chapterCount = chapters.size,
-                            missingChapters = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
+                            missingChapterCount = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
                             onClick = onFilterClicked,
                         )
                     }
@@ -606,7 +606,7 @@ fun MangaScreenLargeImpl(
                                 ChapterHeader(
                                     enabled = chapters.fastAll { !it.selected },
                                     chapterCount = chapters.size,
-                                    missingChapters = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
+                                    missingChapterCount = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
                                     onClick = onFilterButtonClicked,
                                 )
                             }

+ 24 - 42
app/src/main/java/eu/kanade/presentation/manga/components/ChapterHeader.kt

@@ -1,31 +1,29 @@
 package eu.kanade.presentation.manga.components
 
 import androidx.compose.foundation.clickable
-import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.AssistChip
-import androidx.compose.material3.AssistChipDefaults.assistChipColors
-import androidx.compose.material3.AssistChipDefaults.assistChipElevation
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.pluralStringResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import eu.kanade.tachiyomi.R
+import tachiyomi.presentation.core.util.secondaryItemAlpha
 
 @Composable
 fun ChapterHeader(
     enabled: Boolean,
     chapterCount: Int?,
-    missingChapters: Int?,
+    missingChapterCount: Int?,
     onClick: () -> Unit,
 ) {
-    Row(
+    Column(
         modifier = Modifier
             .fillMaxWidth()
             .clickable(
@@ -33,7 +31,7 @@ fun ChapterHeader(
                 onClick = onClick,
             )
             .padding(horizontal = 16.dp, vertical = 4.dp),
-        verticalAlignment = Alignment.CenterVertically,
+        verticalArrangement = Arrangement.spacedBy(4.dp),
     ) {
         Text(
             text = if (chapterCount == null) {
@@ -42,45 +40,29 @@ fun ChapterHeader(
                 pluralStringResource(id = R.plurals.manga_num_chapters, count = chapterCount, chapterCount)
             },
             style = MaterialTheme.typography.titleMedium,
-            modifier = Modifier.weight(1f),
             color = MaterialTheme.colorScheme.onBackground,
         )
 
-        // Missing chapters
-        if (missingChapters == null) {
-            DrawWarning(
-                text = stringResource(R.string.missing_chapters_unknown),
-            )
-        } else if (missingChapters > 0) {
-            DrawWarning(
-                text = pluralStringResource(
-                    id = R.plurals.missing_chapters,
-                    count = missingChapters,
-                    missingChapters,
-                ),
-            )
-        }
+        MissingChaptersWarning(missingChapterCount)
     }
 }
 
 @Composable
-private fun DrawWarning(text: String) {
-    AssistChip(
-        onClick = {
-            // TODO Show missing chapters
-        },
-        label = {
-            Text(
-                text = text,
-                overflow = TextOverflow.Ellipsis,
-                color = MaterialTheme.colorScheme.primary,
-            )
-        },
-        shape = MaterialTheme.shapes.small,
-        border = null,
-        colors = assistChipColors(
-            containerColor = MaterialTheme.colorScheme.surface,
-        ),
-        elevation = assistChipElevation(1.dp),
-    )
+private fun MissingChaptersWarning(count: Int?) {
+    val text = when {
+        count == null -> stringResource(R.string.missing_chapters_unknown)
+        count > 0 -> pluralStringResource(id = R.plurals.missing_chapters, count = count, count)
+        else -> null
+    }
+
+    if (text != null) {
+        Text(
+            modifier = Modifier.secondaryItemAlpha(),
+            text = text,
+            maxLines = 1,
+            overflow = TextOverflow.Ellipsis,
+            style = MaterialTheme.typography.bodySmall,
+            color = MaterialTheme.colorScheme.error,
+        )
+    }
 }

+ 1 - 1
domain/src/main/java/tachiyomi/domain/chapter/service/MissingChapters.kt

@@ -14,7 +14,7 @@ fun countMissingChapters(chaptersInput: List<Float>): Int? {
         .map { floor(it.toDouble()).toInt() }
         // Only keep unique chapters so that -1 or 16 are not counted multiple times
         .distinct()
-        .sortedBy { it }
+        .sorted()
 
     if (chapters.isEmpty()) {
         return null