diff --git a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/session/AppSessionViewModel.kt b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/session/AppSessionViewModel.kt index 323c1c3..7e67424 100644 --- a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/session/AppSessionViewModel.kt +++ b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/session/AppSessionViewModel.kt @@ -48,17 +48,30 @@ class AppSessionViewModel @Inject constructor( init { viewModelScope.launch { - val activeProfile = profileStore.activeProfile() - if (activeProfile != null && availability.forType(activeProfile.type) is Availability.Disabled) { - coordinator.switchProvider() + try { + val activeProfile = profileStore.activeProfile() + if (activeProfile != null && availability.forType(activeProfile.type) is Availability.Disabled) { + coordinator.switchProvider() + bootstrapResult.value = ProviderBootstrapResult( + profileId = null, + result = DomainResult.Success(null), + ) + } else { + bootstrapResult.value = ProviderBootstrapResult( + profileId = activeProfile?.id, + result = coordinator.bootstrap(), + ) + } + } catch (error: kotlinx.coroutines.CancellationException) { + throw error + } catch (error: Exception) { bootstrapResult.value = ProviderBootstrapResult( profileId = null, - result = DomainResult.Success(null), - ) - } else { - bootstrapResult.value = ProviderBootstrapResult( - profileId = activeProfile?.id, - result = coordinator.bootstrap(), + result = DomainResult.Failure( + com.flagship.abox.manager.domain.DomainError.Unknown( + detail = error.message ?: "Unable to load provider settings", + ), + ), ) } }