From d31da62cfeab6818fe08685a0e4572dfe8ac4401 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 6 Jun 2025 21:19:02 +0530 Subject: [PATCH] fix: improve TagList UI --- .../dev/msfjarvis/claw/common/tags/TagList.kt | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/tags/TagList.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/tags/TagList.kt index 9353b24f..6a33f100 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/tags/TagList.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/tags/TagList.kt @@ -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>).data + is Success<*> -> { + @Suppress("UNCHECKED_CAST") val allTags = (allTagsState as Success>).data items(allTags) { tag -> val isSelected = filteredTags.contains(tag.tag) ListItem(