HomeNative/app/src/main/java/dev/coffeeco/homenative/ui/ControlContainer.kt
2024-09-02 11:08:23 +02:00

52 lines
1.9 KiB
Kotlin

package dev.coffeeco.homenative.ui
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.gestures.scrollable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.rememberScrollState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import dev.coffeeco.homenative.data.HomeClient
import dev.coffeeco.homenative.data.StatesResItem
@Composable
fun ControlContainer(homeClient: HomeClient, modifier: Modifier = Modifier) {
val sm = modifier
.scrollable(
orientation = Orientation.Vertical, state = rememberScrollState()
)
.padding(horizontal = 8.dp)
var itemListState by remember { mutableStateOf<List<StatesResItem>>(emptyList()) }
val coroutineScope = rememberCoroutineScope()
LaunchedEffect(coroutineScope) {
itemListState = homeClient.getUsefulState()
}
if (itemListState.isEmpty()) {
// Never visible?
repeat(100) { Column { Text("aaa") } }
} else {
LazyVerticalGrid(
modifier = sm,
columns = GridCells.Adaptive(minSize = 150.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
itemListState.forEach { i -> item(key = i.entityId) { ControllingCard(homeClient, i) } }
}
}
}