Fix tags highlighting

This commit is contained in:
Koitharu
2025-03-11 08:44:55 +02:00
parent f689bf0cf7
commit 947de6c7c9
3 changed files with 20 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ import android.view.View
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import androidx.core.view.children
import coil3.ImageLoader
import coil3.request.Disposable
@@ -125,6 +126,9 @@ class ChipsView @JvmOverloads constructor(
private var model: ChipModel? = null
private var imageRequest: Disposable? = null
private val defaultStrokeColor = chipStrokeColor
private val defaultTextColor = textColors
init {
val drawable = ChipDrawable.createFromAttributes(context, null, 0, chipStyle)
setChipDrawable(drawable)
@@ -154,6 +158,14 @@ class ChipsView @JvmOverloads constructor(
isChecked = false
isCheckable = false
}
if (model.tint == 0) {
chipStrokeColor = defaultStrokeColor
setTextColor(defaultTextColor)
} else {
val tint = ContextCompat.getColorStateList(context, model.tint)
chipStrokeColor = tint
setTextColor(tint)
}
bindIcon(model)
isCheckedIconVisible = model.isChecked
isCloseIconVisible = if (model.isCloseable || model.isDropdown) {

View File

@@ -94,7 +94,6 @@ import org.koitharu.kotatsu.details.ui.model.HistoryInfo
import org.koitharu.kotatsu.details.ui.scrobbling.ScrobblingItemDecoration
import org.koitharu.kotatsu.details.ui.scrobbling.ScrollingInfoAdapter
import org.koitharu.kotatsu.download.ui.worker.DownloadStartedObserver
import org.koitharu.kotatsu.list.domain.MangaListMapper
import org.koitharu.kotatsu.list.domain.ReadingProgress
import org.koitharu.kotatsu.list.ui.adapter.ListItemType
import org.koitharu.kotatsu.list.ui.adapter.mangaGridItemAD
@@ -124,9 +123,6 @@ class DetailsActivity :
@Inject
lateinit var coil: ImageLoader
@Inject
lateinit var listMapper: MangaListMapper
private val viewModel: DetailsViewModel by viewModels()
private lateinit var menuProvider: DetailsMenuProvider
private lateinit var infoBinding: LayoutDetailsTableBinding
@@ -184,6 +180,7 @@ class DetailsActivity :
val menuInvalidator = MenuInvalidator(this)
viewModel.isStatsAvailable.observe(this, menuInvalidator)
viewModel.remoteManga.observe(this, menuInvalidator)
viewModel.tags.observe(this, ::onTagsChanged)
viewModel.branches.observe(this) {
val branch = it.singleOrNull()
infoBinding.textViewTranslation.textAndVisible = branch?.name
@@ -457,7 +454,6 @@ class DetailsActivity :
.allowRgb565(true)
.enqueueWith(coil)
}
bindTags(manga)
title = manga.title
invalidateOptionsMenu()
}
@@ -501,9 +497,9 @@ class DetailsActivity :
progress.isVisible = info.history != null
}
private fun bindTags(manga: Manga) {
viewBinding.chipsTags.isVisible = manga.tags.isNotEmpty()
viewBinding.chipsTags.setChips(listMapper.mapTags(manga.tags))
private fun onTagsChanged(tags: Collection<ChipsView.ChipModel>) {
viewBinding.chipsTags.isVisible = tags.isNotEmpty()
viewBinding.chipsTags.setChips(tags)
}
private fun loadCover(imageUrl: String?) {

View File

@@ -152,6 +152,10 @@ class DetailsViewModel @Inject constructor(
}
}.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Lazily, emptyList())
val tags = manga.mapLatest {
mangaListMapper.mapTags(it?.tags.orEmpty())
}.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Eagerly, emptyList())
val branches: StateFlow<List<MangaBranch>> = combine(
mangaDetails,
selectedBranch,