52 lines
1.9 KiB
Kotlin
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) } }
|
|
}
|
|
}
|
|
}
|