From 6ca9f63fb0cc174b8a71697d72b00506e553fe40 Mon Sep 17 00:00:00 2001 From: helenjb Date: Thu, 17 Apr 2025 22:11:03 -0400 Subject: [PATCH] Edit error state to accommodate game details screen --- .../score/components/ErrorState.kt | 74 +++++++++++-------- .../score/components/NavigationHeader.kt | 3 +- .../score/screen/GameDetailsScreen.kt | 5 +- 3 files changed, 48 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/cornellappdev/score/components/ErrorState.kt b/app/src/main/java/com/cornellappdev/score/components/ErrorState.kt index cb45ca9..e95bbfd 100644 --- a/app/src/main/java/com/cornellappdev/score/components/ErrorState.kt +++ b/app/src/main/java/com/cornellappdev/score/components/ErrorState.kt @@ -2,11 +2,15 @@ package com.cornellappdev.score.components import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Text @@ -29,50 +33,56 @@ fun ErrorState( message: String, modifier: Modifier = Modifier ) { - Column( + Box( modifier = modifier - .fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(100.dp) + .fillMaxSize() + .defaultMinSize(minHeight = 740.dp), + contentAlignment = Alignment.BottomCenter ) { - Spacer(modifier = Modifier.height(200.dp)) Column( - horizontalAlignment = Alignment.CenterHorizontally + modifier = Modifier + .padding(bottom = 270.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(100.dp) ) { - Image( - painter = painterResource(R.drawable.ic_feedback), - contentDescription = "feedback bubble" - ) - Spacer(modifier = Modifier.height(16.dp)) - Text( - text = message, - style = heading2.copy(color = GrayPrimary) - ) - Spacer(modifier = Modifier.height(8.dp)) - Text( - text = "Please try again later.", - style = bodyNormal.copy(color = GrayMedium) - ) - } - - Button( - colors = ButtonDefaults.buttonColors(containerColor = CrimsonPrimary), - onClick = onRefresh - ) { - Row( - verticalAlignment = Alignment.CenterVertically + Column( + horizontalAlignment = Alignment.CenterHorizontally ) { Image( - painter = painterResource(R.drawable.ic_cached), - contentDescription = "refresh icon" + painter = painterResource(R.drawable.ic_feedback), + contentDescription = "feedback bubble" + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = message, + style = heading2.copy(color = GrayPrimary) + ) + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = "Please try again later.", + style = bodyNormal.copy(color = GrayMedium) ) - Text("Try again") + } + + Button( + colors = ButtonDefaults.buttonColors(containerColor = CrimsonPrimary), + onClick = onRefresh + ) { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Image( + painter = painterResource(R.drawable.ic_cached), + contentDescription = "refresh icon" + ) + Text("Try again") + } } } - Spacer(modifier = Modifier.height(70.dp)) } } + @Preview @Composable private fun ErrorStatePreview() = ScorePreview { diff --git a/app/src/main/java/com/cornellappdev/score/components/NavigationHeader.kt b/app/src/main/java/com/cornellappdev/score/components/NavigationHeader.kt index 452679a..911c914 100644 --- a/app/src/main/java/com/cornellappdev/score/components/NavigationHeader.kt +++ b/app/src/main/java/com/cornellappdev/score/components/NavigationHeader.kt @@ -12,6 +12,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview @@ -23,7 +24,7 @@ import com.cornellappdev.score.theme.Style.heading2 fun NavigationHeader(title: String, onBackPressed: () -> Unit) { Box( modifier = Modifier - //.shadow(elevation = 8.dp, clip = false, spotColor = Color.Black.copy(0.05f)) + .shadow(elevation = 8.dp, clip = false, spotColor = Color.Black.copy(0.05f)) .background(Color.White) ) { Box( diff --git a/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt b/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt index adf39c0..6ef9f0c 100644 --- a/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt +++ b/app/src/main/java/com/cornellappdev/score/screen/GameDetailsScreen.kt @@ -84,7 +84,10 @@ fun GameDetailsScreen( } is ApiResponse.Error -> { - ErrorState(gameDetailsViewModel::onRefresh, "Failed to load game details") + ErrorState( + { gameDetailsViewModel.onRefresh() }, + "Oops! Details failed to load." + ) } is ApiResponse.Success -> {