Show error on home screen

This commit is contained in:
Alex Gabor 2022-03-01 13:20:25 +02:00
parent 0ca6ac9c9a
commit d74534d96b

View file

@ -16,6 +16,7 @@ import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import coil.compose.rememberImagePainter import coil.compose.rememberImagePainter
import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.SwipeRefresh
@ -39,18 +40,23 @@ fun HomeScreen(
.clickable { homeScreenState.onLogout() } .clickable { homeScreenState.onLogout() }
) )
} }
SwipeRefresh( Box {
state = rememberSwipeRefreshState(isRefreshing = homeScreenState.loading), if (homeScreenState.isError) {
onRefresh = { ErrorText(Modifier.align(Alignment.Center))
homeScreenState.onRefresh() }
}) { SwipeRefresh(
LazyColumn { state = rememberSwipeRefreshState(isRefreshing = homeScreenState.loading),
items(homeScreenState.content) { item -> onRefresh = {
Item( homeScreenState.onRefresh()
Modifier.padding(horizontal = 16.dp, vertical = 8.dp), }) {
favouriteContent = item, LazyColumn(modifier = Modifier.fillMaxSize()) {
onFavouriteToggle = { homeScreenState.onFavouriteToggleClicked(item.content.id) } items(homeScreenState.content) { item ->
) Item(
Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
favouriteContent = item,
onFavouriteToggle = { homeScreenState.onFavouriteToggleClicked(item.content.id) }
)
}
} }
} }
} }
@ -98,3 +104,13 @@ private fun Title(modifier: Modifier = Modifier) {
style = MaterialTheme.typography.h4 style = MaterialTheme.typography.h4
) )
} }
@Composable
private fun ErrorText(modifier: Modifier = Modifier) {
Text(
stringResource(id = R.string.something_went_wrong),
modifier = modifier.padding(16.dp),
style = MaterialTheme.typography.h4,
textAlign = TextAlign.Center
)
}