Fix tags highlighting
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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?) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user