mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 09:57:04 +05:30
fix: improve TagList UI
This commit is contained in:
parent
d2f0630fe2
commit
d31da62cfe
1 changed files with 21 additions and 8 deletions
|
@ -6,7 +6,9 @@
|
||||||
*/
|
*/
|
||||||
package dev.msfjarvis.claw.common.tags
|
package dev.msfjarvis.claw.common.tags
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
@ -19,9 +21,13 @@ import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.ListItem
|
import androidx.compose.material3.ListItem
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import com.deliveryhero.whetstone.compose.injectedViewModel
|
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 dev.msfjarvis.claw.model.Tag
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
||||||
|
@ -36,15 +42,22 @@ fun TagList(
|
||||||
|
|
||||||
LazyColumn(modifier = modifier.fillMaxWidth().padding(contentPadding)) {
|
LazyColumn(modifier = modifier.fillMaxWidth().padding(contentPadding)) {
|
||||||
when (allTagsState) {
|
when (allTagsState) {
|
||||||
is NetworkState.Loading -> {
|
is Loading -> {
|
||||||
item { Text("Loading tags...") }
|
item {
|
||||||
|
Box(modifier = Modifier.fillMaxSize()) {
|
||||||
|
ProgressBar(modifier = Modifier.align(Alignment.Center))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
is NetworkState.Error -> {
|
is Error -> {
|
||||||
item { Text("Failed to load tags") }
|
item {
|
||||||
|
Box(modifier = Modifier.fillMaxSize()) {
|
||||||
|
Text("Failed to load tags", modifier = Modifier.align(Alignment.Center))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
is NetworkState.Success<*> -> {
|
is Success<*> -> {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST") val allTags = (allTagsState as Success<ImmutableList<Tag>>).data
|
||||||
val allTags = (allTagsState as NetworkState.Success<ImmutableList<Tag>>).data
|
|
||||||
items(allTags) { tag ->
|
items(allTags) { tag ->
|
||||||
val isSelected = filteredTags.contains(tag.tag)
|
val isSelected = filteredTags.contains(tag.tag)
|
||||||
ListItem(
|
ListItem(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue