Added missing chapters count in MangaInfoHeader (#9184)

* Added missing chapters count in MangaInfoHeader

* Added "Might be missing chapters"

* Added missing chapters to MangaAndSourceTitlesLarge function

* Removed comments

* Reworked getMissingChapters to countMissingChapters, moved -1 check

* Attempting detecting sub-chapters

* Moved MissingChapters to ChapterHeader; Adapted design to fit in

* Fixed block comment in one-line-element

* Fixed critical missing-chapter counting bug

* Undid unintentional & unnecessary changes

* Moved & refactored countMissingChapters

* Fixed import order; Mapping chapter object to chapterNumber

* Optimized "No (valid) chapters" detection

---------

Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
Felix Kaiser
2023-03-25 03:44:58 +01:00
committed by GitHub
parent da25322572
commit f94d902bb6
4 changed files with 87 additions and 0 deletions

View File

@ -65,6 +65,7 @@ import eu.kanade.tachiyomi.ui.manga.chapterDecimalFormat
import eu.kanade.tachiyomi.util.lang.toRelativeString
import eu.kanade.tachiyomi.util.system.copyToClipboard
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.service.countMissingChapters
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.model.StubSource
import tachiyomi.presentation.core.components.LazyColumn
@ -393,6 +394,7 @@ private fun MangaScreenSmallImpl(
ChapterHeader(
enabled = chapters.fastAll { !it.selected },
chapterCount = chapters.size,
missingChapters = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
onClick = onFilterClicked,
)
}
@ -604,6 +606,7 @@ fun MangaScreenLargeImpl(
ChapterHeader(
enabled = chapters.fastAll { !it.selected },
chapterCount = chapters.size,
missingChapters = countMissingChapters(chapters.map { it.chapter.chapterNumber }),
onClick = onFilterButtonClicked,
)
}

View File

@ -4,6 +4,9 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row
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
@ -11,6 +14,7 @@ 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
@ -18,6 +22,7 @@ import eu.kanade.tachiyomi.R
fun ChapterHeader(
enabled: Boolean,
chapterCount: Int?,
missingChapters: Int?,
onClick: () -> Unit,
) {
Row(
@ -40,5 +45,42 @@ fun ChapterHeader(
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,
),
)
}
}
}
@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),
)
}