|
|
|
|
@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Row
|
|
|
|
|
import androidx.compose.foundation.layout.Spacer
|
|
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
|
|
import androidx.compose.foundation.layout.width
|
|
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
|
|
import androidx.compose.material.icons.outlined.Add
|
|
|
|
|
@ -14,14 +15,21 @@ import androidx.compose.material.icons.outlined.Menu
|
|
|
|
|
import androidx.compose.material.icons.outlined.Repeat
|
|
|
|
|
import androidx.compose.material.icons.outlined.Settings
|
|
|
|
|
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.setValue
|
|
|
|
|
import androidx.compose.ui.Alignment
|
|
|
|
|
import androidx.compose.ui.Modifier
|
|
|
|
|
import androidx.compose.ui.graphics.Color
|
|
|
|
|
import androidx.compose.ui.text.style.TextAlign
|
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
|
import androidx.paging.LoadState
|
|
|
|
|
import androidx.paging.compose.LazyPagingItems
|
|
|
|
|
import androidx.wear.compose.material.Button
|
|
|
|
|
import androidx.wear.compose.material.ButtonDefaults
|
|
|
|
|
import androidx.wear.compose.material.CircularProgressIndicator
|
|
|
|
|
import androidx.wear.compose.material.Icon
|
|
|
|
|
import androidx.wear.compose.material.MaterialTheme
|
|
|
|
|
import androidx.wear.compose.material.Text
|
|
|
|
|
@ -55,6 +63,14 @@ fun TaskListScreen(
|
|
|
|
|
ScreenScaffold(
|
|
|
|
|
scrollState = columnState,
|
|
|
|
|
) {
|
|
|
|
|
var initialLoad by remember { mutableStateOf(true) }
|
|
|
|
|
var hasError by remember { mutableStateOf(true) }
|
|
|
|
|
LaunchedEffect(uiItems.loadState) {
|
|
|
|
|
hasError = uiItems.loadState.hasError
|
|
|
|
|
if (initialLoad && uiItems.loadState.refresh is LoadState.NotLoading) {
|
|
|
|
|
initialLoad = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ScalingLazyColumn(
|
|
|
|
|
modifier = Modifier.fillMaxSize(),
|
|
|
|
|
columnState = columnState,
|
|
|
|
|
@ -71,6 +87,20 @@ fun TaskListScreen(
|
|
|
|
|
// addTask = addTask,
|
|
|
|
|
// )
|
|
|
|
|
}
|
|
|
|
|
if (hasError) {
|
|
|
|
|
item {
|
|
|
|
|
Text(
|
|
|
|
|
text = "Error loading tasks",
|
|
|
|
|
modifier = Modifier.padding(top = 16.dp)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
} else if (initialLoad && uiItems.loadState.refresh is LoadState.Loading) {
|
|
|
|
|
item {
|
|
|
|
|
CircularProgressIndicator(
|
|
|
|
|
modifier = Modifier.padding(top = 16.dp)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
items(
|
|
|
|
|
items = uiItems,
|
|
|
|
|
key = { item -> "${item.type}_${item.id}_${item.completed}" },
|
|
|
|
|
|