diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/NetworkState.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/NetworkState.kt index 64718371..2b960326 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/NetworkState.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/NetworkState.kt @@ -2,6 +2,6 @@ package dev.msfjarvis.claw.common sealed class NetworkState { class Success(val data: T) : NetworkState() - class Error(val message: String) : NetworkState() + class Error(val error: Throwable, val description: String) : NetworkState() object Loading : NetworkState() } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt index e655d1f4..13f1639d 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt @@ -79,7 +79,7 @@ fun CommentsPage( runCatching { getDetails(postId) } .fold( onSuccess = { details -> value = Success(details) }, - onFailure = { value = Error("Failed to load comments") } + onFailure = { value = Error(error = it, description = "Failed to load comments") } ) } @@ -92,7 +92,8 @@ fun CommentsPage( ) } is Error -> { - NetworkError((postDetails as Error).message) + val error = postDetails as Error + NetworkError(label = error.description, error = error.error) } Loading -> ProgressBar(modifier) } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkError.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkError.kt index d1370f5e..29f45667 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkError.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/NetworkError.kt @@ -9,8 +9,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @Composable -fun NetworkError(message: String, modifier: Modifier = Modifier) { +fun NetworkError(label: String, error: Throwable, modifier: Modifier = Modifier) { Box(modifier = modifier.fillMaxSize(), contentAlignment = Alignment.Center) { - Text(text = message, style = MaterialTheme.typography.displayMedium) + Text(text = label, style = MaterialTheme.typography.displayMedium) } } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt index f453ed68..2f879878 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt @@ -39,7 +39,13 @@ fun UserProfile( runCatching { getProfile(username) } .fold( onSuccess = { profile -> value = Success(profile) }, - onFailure = { value = Error("Failed to load profile for $username") } + onFailure = { + value = + Error( + error = it, + description = "Failed to load profile for $username", + ) + } ) } when (user) { @@ -47,7 +53,8 @@ fun UserProfile( UserProfileInternal((user as Success).data) } is Error -> { - NetworkError((user as Error).message) + val error = user as Error + NetworkError(label = error.description, error = error.error) } Loading -> ProgressBar(modifier) }