feat: add provider login flow #4
+22
-9
@@ -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",
|
||||
),
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user
可用性绕过
stateFor未校验当前构建中的ProviderAvailability。如果设备保留了来自允许 ABox 的构建或旧版本的活动配置,release 构建仍会直接进入该提供方的登录页并允许发起登录,而不是按禁用状态返回提供方选择。应在启动时拒绝或清除当前构建中已禁用的活动配置。