fix: improve TagList UI

This commit is contained in:
Harsh Shandilya 2025-06-06 21:19:02 +05:30
parent d2f0630fe2
commit d31da62cfe

View file

@ -6,7 +6,9 @@
*/
package dev.msfjarvis.claw.common.tags
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
@ -19,9 +21,13 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.deliveryhero.whetstone.compose.injectedViewModel
import dev.msfjarvis.claw.common.NetworkState
import dev.msfjarvis.claw.common.NetworkState.Error
import dev.msfjarvis.claw.common.NetworkState.Loading
import dev.msfjarvis.claw.common.NetworkState.Success
import dev.msfjarvis.claw.common.ui.ProgressBar
import dev.msfjarvis.claw.model.Tag
import kotlinx.collections.immutable.ImmutableList
@ -36,15 +42,22 @@ fun TagList(
LazyColumn(modifier = modifier.fillMaxWidth().padding(contentPadding)) {
when (allTagsState) {
is NetworkState.Loading -> {
item { Text("Loading tags...") }
is Loading -> {
item {
Box(modifier = Modifier.fillMaxSize()) {
ProgressBar(modifier = Modifier.align(Alignment.Center))
}
}
}
is NetworkState.Error -> {
item { Text("Failed to load tags") }
is Error -> {
item {
Box(modifier = Modifier.fillMaxSize()) {
Text("Failed to load tags", modifier = Modifier.align(Alignment.Center))
}
}
}
is NetworkState.Success<*> -> {
@Suppress("UNCHECKED_CAST")
val allTags = (allTagsState as NetworkState.Success<ImmutableList<Tag>>).data
is Success<*> -> {
@Suppress("UNCHECKED_CAST") val allTags = (allTagsState as Success<ImmutableList<Tag>>).data
items(allTags) { tag ->
val isSelected = filteredTags.contains(tag.tag)
ListItem(