From acaa8e635c50a784d1bb281f6c480f02d2d4becb Mon Sep 17 00:00:00 2001 From: null Date: Tue, 23 Jun 2026 11:31:17 -0500 Subject: [PATCH] fix(challenges): null-safe activeChallenge guard; feat(this-or-that): skip question button --- .../closer/ui/challenges/ConnectionChallengesScreen.kt | 9 +++++++-- .../java/app/closer/ui/thisorthat/ThisOrThatScreen.kt | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt index 8b94a3dc..ae31b6cf 100644 --- a/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt +++ b/app/src/main/java/app/closer/ui/challenges/ConnectionChallengesScreen.kt @@ -301,8 +301,12 @@ fun ConnectionChallengesScreen( onPick = { viewModel.startChallenge(it) }, onPaywall = { onNavigate(AppRoute.PAYWALL) } ) - ChallengesPhase.ACTIVE -> ChallengesActiveScreen( - challenge = state.activeChallenge!!, + ChallengesPhase.ACTIVE -> { + val activeChallenge = state.activeChallenge + if (activeChallenge == null) { + ChallengesLoadingScreen() + } else ChallengesActiveScreen( + challenge = activeChallenge, progress = state.progress ?: ChallengeProgressState(), challengeState = state.challengeState, onBack = { onNavigate(AppRoute.PLAY) }, @@ -313,6 +317,7 @@ fun ConnectionChallengesScreen( onConfirmAbandon = { viewModel.abandonChallenge() }, onDismissAbandon = { viewModel.dismissAbandonConfirm() } ) + } } } } diff --git a/app/src/main/java/app/closer/ui/thisorthat/ThisOrThatScreen.kt b/app/src/main/java/app/closer/ui/thisorthat/ThisOrThatScreen.kt index 62150516..403cab9b 100644 --- a/app/src/main/java/app/closer/ui/thisorthat/ThisOrThatScreen.kt +++ b/app/src/main/java/app/closer/ui/thisorthat/ThisOrThatScreen.kt @@ -701,6 +701,15 @@ private fun ThisOrThatContent( accentColor = CloserPalette.PinkAccentDeep, onSelect = onSelect ) + } else { + Box( + modifier = Modifier.fillMaxWidth(), + contentAlignment = Alignment.Center + ) { + TextButton(onClick = { onSelect("") }) { + Text("Skip question", color = MaterialTheme.colorScheme.onSurfaceVariant) + } + } } } }