From debc6aed02f4cf4b59d041ed749e03942b8db4b6 Mon Sep 17 00:00:00 2001 From: null Date: Thu, 18 Jun 2026 03:46:34 -0500 Subject: [PATCH] fix: handle partner_active_session error in SpinWheelViewModel, navigate to waiting screen --- .../app/closer/ui/wheel/SpinWheelViewModel.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/app/closer/ui/wheel/SpinWheelViewModel.kt b/app/src/main/java/app/closer/ui/wheel/SpinWheelViewModel.kt index 07e498dd..4772a9a6 100644 --- a/app/src/main/java/app/closer/ui/wheel/SpinWheelViewModel.kt +++ b/app/src/main/java/app/closer/ui/wheel/SpinWheelViewModel.kt @@ -119,16 +119,23 @@ class SpinWheelViewModel @Inject constructor( gameType = "wheel", categoryId = categoryId, questionIds = questionIds - ).getOrNull() - }.getOrNull() + ) + }.getOrElse { Result.failure(it) } - if (startResult == null) { - _uiState.update { it.copy(error = "Could not start session") } - return@launch + when { + startResult.isSuccess -> { + val sessionId = startResult.getOrThrow() + sessionStore.sessionId = sessionId + _uiState.update { it.copy(navigateTo = AppRoute.wheelSession(sessionId)) } + } + startResult.exceptionOrNull()?.message?.startsWith("partner_active_session|") == true -> { + _uiState.update { it.copy(navigateTo = AppRoute.WAITING_FOR_PARTNER) } + } + else -> { + Log.w(TAG, "Could not start wheel session", startResult.exceptionOrNull()) + _uiState.update { it.copy(error = "Could not start session") } + } } - - sessionStore.sessionId = startResult - _uiState.update { it.copy(navigateTo = AppRoute.wheelSession(startResult)) } } }