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)) } } }