Fix tags highlighting

master
Koitharu 1 year ago
parent f689bf0cf7
commit 947de6c7c9
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

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

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

@ -152,6 +152,10 @@ class DetailsViewModel @Inject constructor(
} }
}.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Lazily, emptyList()) }.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( val branches: StateFlow<List<MangaBranch>> = combine(
mangaDetails, mangaDetails,
selectedBranch, selectedBranch,

Loading…
Cancel
Save